(转载请注明出处)
上一篇文章有说到用户程序调用C标准库函数的时候,会对应到驱动程序file_operations中函数指针所指向的一个回调函数上去。
现在来分析一下这个调用的过程(图片在墙外):
对于这图,我想要说的有:
1.struct file数据结构:
它与file_operations一样,也是在/include/linux/fs.h中定义的。这是一个内核数据结构,不会出现在用户态。
file结构其实代表的是一个被打开的文件,每一个被打开的文件在内核空间都有一个对应的file结构。在open一个文件的时候,这个结构会被创建。
struct file中有一个元素:struct file_operations *f_op;
在open设备文件的时候,这个f_op会被初始化为驱动程序中的file_operations。
这样,对设备文件的操作就被映射到驱动程序中的实现上去了。
2. VFS(Virtual File System) Layer
因为设备文件它并不是真正意义上的文件,只不过是起到了将system calls映射到驱动程序中的操作上罢了。所以我们把它叫做Virtual File.
(明晰一个概念:设备文件就是VFS)
=====
话说在linux下面有没有好用的画图工具啊?类似Visio那样的。上面那个图画的我辛苦啊。