MISC驱动,又称杂项驱动。通常嵌套在platform总线驱动中。所有的MISC设备驱动的主设备号都是10,从设备号不同,解决了设备号紧张的情况。
我们主要设置name,minor,fops属性,minor在include/linux/miscdevice.h有定义,我们可以选择已有定义,也可以自定义。name是设备名字,注册成功后会在/dev目录下生成相应设备文件,fops是操作函数集合,由用户提供。
注册miscdevice设备 注册miscdevice设备调用函数如下: int misc_register(struct miscdevice * misc) @misc : 要注册的设备 @return : 负数 失败,0 成功。此函数作用相当于如下函数集合:
alloc_chrdev_region(); /* 申请设备号 */ cdev_init(); /* 初始化 cdev */ cdev_add(); /* 添加 cdev */ class_create(); /* 创建类 */ device_create(); /* 创建设备 */ 注销miscdevice设备 注销函数如下: int misc_deregistermisc_deregister(struct miscdevice *misc); @misc : 要注销的设备 @return : 负数 失败,0 成功。此函数作用相当于如下函数集合:
cdev_del(); /* 删除 cdev */ unregister_chrdev_region(); /* 注销设备号 */ device_destroy(); /* 删除设备 */ class_destroy(); /* 删除类 */