1.混杂设备概念描述在Linux系统,存在一类设备字符设备,它们拥有相同的设备号10,但次设备号不同,我们称为混杂设备,是字符设备的一个分支,所有混杂涉笔形成一个链表,对设备访问时内核根据次设备号查找响应的混杂设备。
linux驱动模型分多,但字符设备,混杂设备,网络设备都会使用一种结构来描述该设备。
linux中使用struct miscdevice来描述混杂设备 1.1初始化描述结构miscdevice- struct miscdevice {
- int minor;//次设备号
- const char *name;//设备节点名
- const struct file_operations *fops;//混杂设备属于字符设备,因而填充file_operations结构体
- struct list_head list;
- struct device *parent;
- struct device *this_device;
- const char *nodename;
- mode_t mode;
- };
复制代码 1.2misc_register注册描述结构misc_register(&miscdevice) 1.3注销描述结构misc_deregister(&miscdevice) 混杂设备驱动模型简单实现代码 - #include<linux/module.h>
- #include<linux/init.h>
- #include<linux/miscdevice.h>
- int key_open(struct inode *node,struct file *filp)
- {
- return 0;
- }
- struct file_operations key_fops =
- {
- .open = key_open,
- };
- struct miscdevice key_miscdev = {
- .minor = 200,//次设备号
- .name = "mykey",//设备节点名称
- .fops = &key_fops,//file_operations操作函数集
- };
- static int key_init()
- {
- misc_register(&key_miscdev);//杂项设备描述结构的注册
- return 0;
- }
- static void key_exit()
- {
- misc_deregister(&key_miscdev);//杂项设备描述结构的注销
- }
- module_init(key_init);
- module_exit(key_exit);
复制代码 |