linux——misc杂项设备
简介
Linux里面的misc杂项设备是主设备号为10的驱动设备,它的注册跟使用比较的简单,所以比较适用于功能简单的设备。正因为简单,所以它通常嵌套在platform 总线驱动中,配合总线驱动达到更复杂,多功能的效果。
源码
[[05.miscdevice 源码]]
![[Pasted image 79.png]]
parent
这个指针决定了在/sys文件系统里面,它是创建在哪个目录下。如果为空就在/sys/class根目录下创建,如果不为空都是在/sys/class/misc 文件下面创建的一些属性文件。
![[Pasted image 81.png]]
this_device
这个就代表当前设备的设备结构体,这个在查找扩充数据结构时,非常有用。
minor
次设备号,如果是MISC_DYNAMIC_MINOR
,则会动态分配。
fops
设备文件操作结构体[[02.file_operations]]
注册过程
- 初始化miscdevice结构体
- 调用misc_register
misc_register()函数在misc.c中,最主要的功能是基于misc_class构造一个设备,将miscdevice结构挂载到misc_list列表上,并初始化与linux设备模型相关的结构,它的参数是miscdevice结构体。
miscdevice 源码
struct miscdevice {
int minor; //次设备号,主设备号已经敲定是10了,后面我们跟进代码看一下。
const char *name; //驱动名字,最终会反映在设备节点名字上。
const struct file_operations *fops; //设备操作方法集合
struct list_head list; //链接到所有杂项设备链表当中。
struct device *parent; //父设备,这个一般为NULL
struct device *this_device;//当前设备的devices结构。
const char *nodename;
umode_t mode;
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」