混杂设备驱动
混杂设备驱动是一些拥有着共同特性的简单字符设备驱动。内核抽象出这些特性而形成一些API(在文件drivers/char/misc.c中实现),以简化这些设备驱动程序的初始化。
所有的misc设备被分配同一个主设备号10,但是每一个可以选择一个单独的次设备号。如果一个字符设备驱动要驱动多个设备,那么它就不应该用混杂设备来实现。
每一个misc驱动会自动出现在/sys/class/misc下,而不需要驱动程序作者明确的去做。混杂设备驱动内部有自动设备驱动,可自动创建设备节点。
相关结构体:
#include <linux/miscdevice.h>
struct miscdevice {
int minor; //次设备号,可赋值为MISC_DYNAMIC_MINOR,实现自动分配
const char *name; //设备名称
const struct file_operations *fops; //操作函数
struct list_head list;
struct device *parent;
struct device *this_device;
const char *nodename;
mode_t mode;
};
开发步骤:
1.初始化struct miscdevice结构体
2.注册混杂设备,int misc_register(struct miscdevice * misc)
3.注销设备,int misc_deregister(struct miscdevice *misc)
注释:
上述函数成功返回0,失败返回负数出错码。