1.混杂设备:主设备号已经被内核注册进行自动分配,主设备号为10,通过此设备号区分的一类字符设备! 特点:还是字符设备,主设备号10,通过次设备号来区分设备个体.
2.linux内核如何描述混杂设备:
Struct misdevice{
Intminor; const char * name; const struct file_operations * fops; struct list_headlist;
Structdevice * parent; struct device * this_device; const char * nodename; mode_tmode;
};
Minor:次设备号,用于区分各个混杂设备,如果让内核帮你分配一个次设备号,可以指定为MISC_DYNAMIC_MINOR; name:设备文件名,内核会自动创建 fops:给混杂设备提供的访问硬件的方法,并且将这些方法提供给用户使用。
3.实现一个混杂设备驱动。
分配初始化一个混杂设备对象:Struct file_operationsled_fops = {…}
Struct miscdevice led_misc = {
.minor= MISC_DYNAMIC_MINOR, //动态分配
.name= “myled”, //dev/myled
.fops= &led_fops
};
注册混杂设备:misc_register(&led_misc)
卸载混杂设备:misc_deregister(&led_misc);