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);