混杂设备驱动模型解析

这里写图片描述

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);                              
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值