在linux系统中,存在一类特殊的字符设备,它们共享同一个主设备号(10),但次设备号不同,我们称此类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找相应的miscdevice设备。
include/linux/下miscdevice.h中存在混杂设备结构体定义,各种次设备号定义以及注册注销函数。
linux内核使用struct miscdevice来描述一个混杂设备。
struct miscdevice {
int minor; /* 次设备号*/
const char *name; /* 设备名*/
const struct file_operations *fops; /*文件操作*/
struct list_head list;
struct device *parent;
struct device *this_device;
};
linux内核使用misc_register函数来注册一个混杂设备驱动。
int misc_register(struct miscdevice * misc)
linux内核使用misc_deregister函数来注销一个混杂设备驱动。
int misc_deregister(struct miscdevice * misc)