在Linux
系统中,存在一类字符设备,它们共享一个主设备号(10
),但次设备号不同,我们称这类设备为混杂设备(miscdevice
)。
所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找到相应的miscdevice
设备。使用混杂设备时,要用.minor = MISC_DYNAMIC_MINOR
,让系统自动分配设备号。
设备描述
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 );