混杂设备驱动?个人理解就是一类设备,为了开发方便,可以把这一类设备的属性都放在一起,方便开发。
一、混杂设备的定义
在Linux系统中,存在一类字符设备,它们共享一个主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找到相应的miscdevice设备。
二、描述混杂设备的结构体
struct miscdevice{
int minor;/* 次设备号*/
const char *name;/* 设备名*/
const struct file_operations *fops;/*文件操作*/
structlist_headlist;
struct device *parent;
struct device *this_device;
};
三、混杂设备只要在驱动程序中进行一次注册就可以在驱动程序中定义相关设备的属性。
函数:
int misc_register(struct miscdevice* misc)
四、混杂设备程序的具体实现
描述的结构体:
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR, //这个宏(内核中)定义的混杂设备的此设备号,
//由内核动态的进行分配的。
.name = DEVICE_NAME, //定义了设备的名字--可以随意定义。
.fops = &dev_fops, //混杂设备的实质是字符设备,字符设备都有file_operations。
};
注册:
/*注册混杂设备*/
ret = misc_register(&misc);
备注:注册混杂设备的函数是在注册设备驱动程序中定义的,即init。