Linux驱动学习 重要的数据结构

来源:百度文库 编辑:神马文学网 时间:2024/07/03 08:12:28
Linux驱动学习 重要的数据结构

 

还有一些数据结构也比较关键, 关系也比较复杂:
*dev_t:
 这个不是structure, 是简单变量, 只用于保存一组major number和minor number.
Linux提供一组Macro对其进行读写:
 MAJOR(dev_t dev); /* 取设备的major number */
 MINOR(dev_t dev); /* 取设备的minor number */
 MKDEV(int major, int minor); /* 从一组指定的major number和minor number创建一个dev_t */

*struct cdev:
 用于表示一个char型的设备.

*struct file_operations:
 用于定义一组在某类文件上操作的函数, 根据文件类型不同, 需要实现的接口也不同.

*struct file:
 用于表示某个“打开的”文件, 是与进程相关的. 每次在有程序对文件执行open系统调
用时创建. 也就是说, 同一个文件/设备, 对应在其上操作的不同的进程, 会创建多个file
结构, 而实际上操作的文件(或者说inode)是同一个。struct file里面有当前的指针位置
和一些标记位等信息;还有指向一个file_operations结构的指针,对于设备文件,这用于
提供到驱动程序的接口。

*struct inode:
 用于表示文件系统树形结构中的一个节点,不论是目录还是文件。它里面保存的是文件
的具体信息,每个文件只对应一个inode结构。对于char型设备文件,这里面主要有两个
field有用:
 
 dev_t i_rdev; /* 在表示设备文件的inode中用于存放major number和minor number */
 struct cdev *i_cdev;
     /* 在表示char型设备文件的inode中用于存放指向对应的cdev的指针 */