mdev自动创建和删除设备节点
设备节点的创建有二种方法:
1)手动创建:mknode命令
当insmod后,还需要手动moknod创建设备节点才能被应用层打开,并且使用完成之后还要删除节点。
2) 自动创建:mdev
mdev,它是应用层的一个应用程序。内核驱动和应用层mdev之间有一套信息传输机制(netlink协议),驱动注册和注销时信息会被传给mdev,由mdev在应用层进行设备文件的创建和删除。使用时,在安装驱动模块之前应用层(根文件系统)启用mdev,并且内核驱动模块中使用相应接口函数即可。mdev只认类,要想让其自动创建一个节点,就需要设备从属于一个类
例如:如下在模块初始化函数中调用class_create创建一个类,名字为firstdrv,用class_device_create创建类下的一个设备 ,名字为xyz。


在模块卸载函数中调用device_deatory和class_destory

编译驱动模块并insmod加载后就会在sys/class下看到生成了一个类firstdrv,类下面还有一个设备xyz,xyz下面的dev文件内容就是主设备号和次设备号。这样当/sys目录里面的内容一更改,medv便会根据这些系统信息自动创建节点了(这是由于在创建根文件系统时的脚本文件/etc/init.d/rcS文件里有一句echo /sbin/mdev > /proc/sys/kernel/hotplug):
执行ls -l /dev./xyz 发现确实自动生成了一个节点/dev/xyz;执行cat /proc/drivers也可以看到firstdrv;
mdev自动创建和删除设备节点的更多相关文章
- mariadb:分区自动创建与删除
参考文章:https://blog.csdn.net/xlxxcc/article/details/52486426 1.以日自动创建与删除分区 调用示例:CALL proc_day_partitio ...
- 使用class 自动创建设备节点
#include <linux/init.h>// __init __exit #include <linux/module.h> // module_init module_ ...
- linux下自动创建设备文件节点---class
在驱动模块初始化函数中实现设备节点的自动创建 我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的 ...
- Linux 内核驱动自动创建设备节点并挂载设备
*注:本文来自http://blog.csdn.net/lwj103862095/article/details/17470573 一.首先需要在最开始定义两个数据结构: static struct ...
- class_create(),device_create自动创建设备文件结点
class_create(),device_create自动创建设备文件结点 从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代.相比devfs,udev有很多优 ...
- class_create(),device_create自动创建设备文件结点【转】
本文参考来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhenwenxian/archive/2010/03/28/5424434.aspx 本文转自:http://ww ...
- /dev下添加设备节点的方法步骤(通过device_create)
将自己开发的内核代码加入到Linux内核中,需要3个步骤: 1.确定把自己开发代码放入到内核合适的位置 将demo_chardev.c文件拷贝到.../drivers/char/目录下. demo_c ...
- linux设备驱动----利用mdev(udev)自动创建设备文件节点
1.mdev的使用方法和原理: mdev是busybox 自带的一个简化版的udev,适合于嵌入式的应用埸合.其具有使用简单的特点.它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程 ...
- linux驱动开发(四) 字符设备驱动框架(自动创建设备节点)
代码如下 #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> # ...
随机推荐
- 洛谷P1072 Hankson 的趣味题(数学)
题意 题目链接 Sol 充满套路的数学题.. 如果你学过莫比乌斯反演的话不难得到两个等式 \[gcd(\frac{x}{a_1}, \frac{a_0}{a_1}) = 1\] \[gcd(\frac ...
- 记录开发Nodejs c++ addon的一些经验(四、electron)
如果我们要在electron里使用我们开发的addon,那么直接使用是不行的. 官方的解释是:Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译 ...
- 软件项目技术点(9)——如何将gif动态图拆分绘制
AxeSlide软件项目梳理 canvas绘图系列知识点整理 背景介绍 我们的软件支持插入gif图片,并且展示在软件里是动态的,例如插入下面这张gif图. 在软件里显示的同样是这样的动态效果: 那 ...
- 139.00.006 Git学习-标签管理Tag
@(139 - Environment Settings | 环境配置) 一.Why 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取 ...
- spfa 的算法实现之一
问题描述:给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到n编号). 输入格式:第一行两个整数n, m.接下来的m行,每行有三个整 ...
- webStrorm 简单配置
1.主题配色 主题设置 File -> Settings -> Appearance & Behavior -> Appearance ->Theme. ===& ...
- web统计数据搜集及分析原理
在现代web应用开发中,数据扮演着越来越重要的角色:通过数据我们能够知道系统哪些地方有待改进,从而迭代开发重新上线, 随后再次通过数据我们来评估新的迭代开发是否满足了我们的预期目标,从而形成了一个数据 ...
- Python3.x 安装Scrapy框架
先判断pip是否已经安装 pip --version 确认已经安装后,使用pip安装库 pip3 install PackageName eg: pip3 install Scrapy 报错解决方案 ...
- 关于 Windows 7 语言包
在对IE浏览器进行多语言对应的时候,网页会检测当前系统的语言,来判断网页需要以哪种语言显示.但是,在给系统安装指定语言包时,可能会遇到安装失败的情况,原因就是需要在你的电脑上安装必需的基本语言包.请看 ...
- 设计模式:外观(Facade)模式
设计模式:外观(Facade)模式 一.前言 外观模式是一种非常简单的模式,简单到我们经常都会使用,比如对于类A和B,如果两者需要交互,经过一定的处理过程才能实现某一个具体的功能,那么我们可以将这 ...