一、文件系统框架:
从文件系统一种我们了解了linux文件系统的框架,这里我们首先再通过下面简洁的流程图
来展示linux文件系统文件读写的大框架:
从上图中可以看出linux文件系统的读写通过调用虚拟文件系统(VFS)的对应接口,从而
调用到实际文件系统的读写接口,来进行emmc的操作,这样可以实现多文件系统兼容,如android
中的boot/system分区是ext4的格式,但cache/userdata我们可以配置为f2fs的文件系统格式,但
VFS层的调用接口是不变的。对应的相关结构体直接的关系:
二、抓取调用trace方法:
1、linux应用层操作方法:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
int main(void)
{
int i,f;
FILE *fp;
char string[24];
fp = fopen("test.dat","w+");
return 0;
}
gcc file_open.c -o file_open
strace ./file_open 可以抓取到应用层调用的trace:
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7562000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7562940, limit:1048575, seg_32bit:1, conten