Linux混杂设备驱动

在 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 的字符设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值