杂散类设备是为了让驱动开发者给一些不好分类的设备归到一个类里面,防止需要建立的类太多。有了类才能用udev自动添加设备。misc主设备号是10。
misc源码框架本身也是一个模块,内核启动时可以自动加载。在misc.c文件中,已经通过class_create和register_chrdev(老的注册设备接口)创建了类,并注册了杂散类字符设备,主设备号是10。开放了misc_register接口注册杂散类设备。
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
原式子:static LIST_HEAD(misc_list);
展开后:static struct list_head misc_list = { &(misc_list), &(misc_list) }
作用就是初始化内核链表,让其preview和next指针都指向他自己。定义了一个管理杂散类字符设备的链表