本文共 1065 字,大约阅读时间需要 3 分钟。
在linux系统,存在一类设备字符设备,它们拥有相同的设备号10,但次设备号不同,我们称为混杂设备,是字符设备的一个分支,所有混杂涉笔形成一个链表,对设备访问时内核根据次设备号查找响应的混杂设备。
linux驱动模型分多,但字符设备,混杂设备,网络设备都会使用一种结构来描述该设备。 linux中使用struct 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; };misc_register(&miscdevice)
misc_deregister(&miscdevice)
混杂设备驱动模型简单实现代码
#include#include #include 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);