简介
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;
};
标签:struct,misc,linux,device,miscdevice,杂项,设备
From: https://www.cnblogs.com/lattelover/p/17329576.html