本文共 668 字,大约阅读时间需要 2 分钟。
在Linux系统中,存在一类字符设备,它们拥有相同的主设备号10,但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找到相应的混杂设备。如果一个字符设备驱动要驱动多个设备,则它不应该选用混杂设备来实现。
Linux中使用struct miscdevice来描述一个混杂设备,该结构定义在<linux/miscdevice.h>
,因此使用时需要添加头文件<linux/miscdevice.h>
。
struct miscdevice { int minor; /* 次设备号*/ const char *name; /* 设备名*/ const struct file_operations *fops; /*文件操作*/* struct list_head list; struct device *parent; struct device *this_device;};
其中次设备号、设备名、文件操作需要程序员在设备驱动程序中初始化,list、parent、this_device由内核初始化。
一个混杂设备驱动的编程模型为:
①初始化结构miscdevice ②根据初始化的miscdevice 来注册混杂设备 ③硬件初始化 ④编程实现设备方法 ⑤注销 Linux系统使用misc_register函数来注册一个混杂设备驱动。 原型:int misc_register(struct miscdevice *misc)转载地址:http://trigi.baihongyu.com/