Linux混杂设备驱动

来源:互联网 发布:淘宝店组织架构 编辑:程序博客网 时间:2024/05/18 00:41

在 Linux 系统中,存在一类字符设备,它们共享一个主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找相应的 miscdeivce 设备
Linux 内核使用 struct miscdevice 来描述一个混杂设备。
struct miscdevice {
int minor; //次设备号
const char *name; //设备的名称
const struct file_operations *fops; //文件操作
struct list_head list; //misc_list的链表头
struct device *parent; //父设备(Linux设备模型中的东东了)
struct device *this_device; //当前设备,是device_create的返回值
};

内核使用 misc_register() 函数来注册一个混杂设备,其主设备号为10,如果次设备号指定为 MISC_DYNAMIC_MINOR,将由系统去指定一个次设备号,在 misc_register() 函数中会调用 device_create() 为设备创建设备节点。
misc_deregister() 用于注销这个混杂设备,其中调用了 device_destroy() 删除设备节点。
混杂设备的核心是 drivers/char/misc.c 文件,该文件中的 misc_init() 函数调用 class_create() 函数创建了一个名 misc 的类,注册了一个主设备号为10,设备名为 misc 的字符设备。

原创粉丝点击