下面的字符设备的笔记是基于Linux-2.6.22.6内核
首先问题:应用层是如何调用到驱动层的呢?
VFS架构
用户空间 用户程序(进程)
|
| 文件系统操作的系统调用界面包括 read,write,open,close等等
-------------------------------------------------------------
系统空间 |
|
VFS虚拟文件系统(sys_read(),sys_write() sys_open()等等)
|
|
------------------------------------------------------------- 通过file结构的f_op指针实现的
| | | | “文件系统总线”
| | | |
minix Ext2 FAT 设备文件 ...
说明:
每个进程通过“打开文件”(open)与具体的文件建立起连接,或者说建立起一个读写的”上下文“。
这种连接以一个file数据结构作为代表,结构中有个file_operation结构体指针f_op。指向某个具体的
file_opreation机构,就指定了这个文件所属的文件系统
自己小结:上层的应用程序通过C库调用open()、read()等等,C库有swi value这条指令来触发某个异常,这个异常就会进入内核空间的异常处理函数
会根据swi value传入不同的值来调用sys_read(),sys_write()\sys_open()