一、字符设备驱动框架
1. file_operations结构体
在Linux中应用程序运行在用户空间,而驱动程序属于内核的一部分,在内核空间运行。用户需要通过系统调用陷入到内核空间,才能实现对底层驱动的操作。
以open函数为例,当用户在C语言程序中调用open
函数时,调用关系链如下图所示:
这就意味着,驱动程序必须提供一些必要的函数,来与open、read、write、close这些函数相对应,确实,这套函数定义在 file_operations
结构体中。
file_operations结构体中定义了Linux内核驱动操作函数的集合,在Linux内核文件include/linux/fs.h
中定义,代码如下: