混杂设备驱动模型解析

来源:互联网 发布:linux网络编程实例项目 编辑:程序博客网 时间:2024/05/06 20:57

这里写图片描述

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);                              
1 0
原创粉丝点击