Linux驱动程序架构(一)

linuxdd1

(转载请注明出处)

上一篇文章有说到用户程序调用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那样的。上面那个图画的我辛苦啊。