MISC设备驱动分析及实现
来源:互联网 发布:wacom绘画软件 编辑:程序博客网 时间:2024/05/21 10:25
什么是MISC设备
misc的意思是各式各样。
- MISC设备属于字符设备,是因为字符设备多种多样,很多无法归类的字符设备都归在misc设备中
- MISC设备共享了同一个主设备号 MISC_MAJOR = 10 ,根据不同的次设备号区分不同的设备
- MISC由于共享了同一主设备号,所以它是自动生成设备节点的
- 它的open函数由内核实现好了
MISC子系统编写驱动的步骤
一般设备驱动都离不开几个步骤,misc设备驱动也是如此。
定义 —-> 初始化 —> 注册 –> 释放
小建议:如果我们要编写什么设备的驱动,最好是打开相应设备的.h源码,这样对应的操作函数一目了然,如本例中,可以打开Miscdevice.h 头文件来查看内核提供的函数和结构体。
定义
miscdevice结构体表征了miscdevice设备,所以第一步先定义一个miscdevice设备。
struct miscdevice misc_demo;
结构体内容为
struct miscdevice { int minor; const char *name; const struct file_operations *fops; struct list_head list; struct device *parent; struct device *this_device; const struct attribute_group **groups; const char *nodename; umode_t mode;};
初始化
初始化即初始化miscdevice结构体
misc.minor = MISC_DYNAMIC_MINOR(系统动态分配一个次设备号) misc.name = "misc_demo"
同时我们也应编写操作方法集来填充成员const struct file_operations *fops
struct file_operations misc_fops = { .owner = THIS_MODULE, }misc.fops = &misc_fops;
注册
注册和释放就直接使用了内核提供的函数接口
int misc_register(struct miscdevice *misc);/********************************************* 功能:注册miscdevice 输入参数:miscdevice结构体 返回值:成功返回0,失败返回负的错误码 *********************************************/
释放
int misc_deregister(struct miscdevice *misc); /********************************************* 功能:释放miscdevice 输入参数:miscdevice结构体 返回值:成功返回0,失败返回负的错误码 *********************************************/
这样,最简单的一个MISC设备驱动就完成了。在实际工作中,我们还需要编写操作硬件的函数和提供用户层的函数,对应相应的设备有着相应的驱动方案。
0 0
- MISC设备驱动分析及实现
- 【linux驱动分析】misc设备驱动
- misc设备驱动模型及实例解析
- misc设备驱动模型及实例解析
- misc设备驱动模型及实例解析
- misc设备驱动模型及实例解析
- misc设备驱动模型及实例解析
- misc设备驱动模型及实例解析
- misc设备驱动模型及实例解析
- misc设备驱动模型及实例解析
- 字符设备驱动之笔记-misc设备驱动分析
- misc杂项设备驱动
- misc设备驱动
- MISC设备 --pwd_audio驱动
- MISC设备驱动
- misc设备驱动模型
- Linux misc 设备驱动
- linux misc混杂设备驱动
- ORACLE清理归档日志
- win10环境下配置win10Apache+PHP+MySQL环境的方法
- jdk1.8.0_45源码解读——ArrayList的实现
- Logistic回归编程实战
- JS不跨域操控网易云音乐外链播放器
- MISC设备驱动分析及实现
- g++和gdb简单使用
- SQL中varchar和nvarchar有什么区别?
- HDU 2577
- 表单
- 我博客的第一天
- leetcode算法题(JavaScript实现)
- [Educational Codeforces Round 17 C (762C)] Two strings
- fatmouse‘ trade