09 MISC设备驱动框架
MISC设备驱动框架
MISC设备又称杂项设备,由于一些设备不好分类,所有可以把他们都归到杂项设备里面。字符设备也可以看成一种杂项设备,使用MISC驱动框架时,可以简化字符设备驱动的开发
Misc是Linux驱动开发里的一个子系统,它也遵循了驱动分层的思想,用一个核心层来完成对此类设备IO操作之类的通用操作的封装,用户只需要写简单的驱动实例层并注册设备到该子系统就行了
1.MISC设备简介
Linux内核提供了struct miscdevice
来定义杂项设备
- 可以看到,misc框架其实把字符设备驱动框架和Linux设备驱动模型==封装到了一起==,可以同时向用户层提供I/O操作的接口,并完成驱动和设备的匹配
1 | struct miscdevice { |
通常至少要定义以下几个成员变量/函数:
minor
:所有MISC设备的主设备号都为10,所以我们需要提供一个子设备号fops
:文件操作集合name
:设备名字
2.MISC设备的使用
和普通的字符设备一样,创建了MISC设备实例后,还需要向内核注册/注销,先来回忆下普通的字符设备是怎么做的:
1 | //注册字符设备 |
MISC设备极大地简化了向内核注册设备这一步骤,只需要调用一个API:
1 | int misc_register(struct miscdevice *misc) |
- 返回值:负数,失败;0,成功
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.