设备节点的创建有二种方法:

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自动创建和删除设备节点的更多相关文章

  1. mariadb:分区自动创建与删除

    参考文章:https://blog.csdn.net/xlxxcc/article/details/52486426 1.以日自动创建与删除分区 调用示例:CALL proc_day_partitio ...

  2. 使用class 自动创建设备节点

    #include <linux/init.h>// __init __exit #include <linux/module.h> // module_init module_ ...

  3. linux下自动创建设备文件节点---class

    在驱动模块初始化函数中实现设备节点的自动创建 我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的 ...

  4. Linux 内核驱动自动创建设备节点并挂载设备

    *注:本文来自http://blog.csdn.net/lwj103862095/article/details/17470573 一.首先需要在最开始定义两个数据结构: static struct ...

  5. class_create(),device_create自动创建设备文件结点

    class_create(),device_create自动创建设备文件结点 从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代.相比devfs,udev有很多优 ...

  6. class_create(),device_create自动创建设备文件结点【转】

    本文参考来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhenwenxian/archive/2010/03/28/5424434.aspx 本文转自:http://ww ...

  7. /dev下添加设备节点的方法步骤(通过device_create)

    将自己开发的内核代码加入到Linux内核中,需要3个步骤: 1.确定把自己开发代码放入到内核合适的位置 将demo_chardev.c文件拷贝到.../drivers/char/目录下. demo_c ...

  8. linux设备驱动----利用mdev(udev)自动创建设备文件节点

    1.mdev的使用方法和原理: mdev是busybox 自带的一个简化版的udev,适合于嵌入式的应用埸合.其具有使用简单的特点.它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程 ...

  9. linux驱动开发(四) 字符设备驱动框架(自动创建设备节点)

    代码如下 #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> # ...

随机推荐

  1. mysql 查询近几天的结果 按每天的粒度查询

    ),DATE_FORMAT(FROM_UNIXTIME(createtime), '%Y-%m-%d') as time from bskuser group by time

  2. IE 8兼容:<meta http-equiv="X-UA-Compatible" content="IE=edge" /> X-UA-Compatible的解释

    前言:9月份开始了,大四也真正的到来了.深知自己网页布局还有很大的缺陷,接下来打算从工作中抽时间出来模仿着一些互联网公司的网站.顺便把基础理论知识打好. 第一个目标:小米官网:后续会把练习的项目放到g ...

  3. 移动端适配(3)——rem适配

    rem适配 <meta name="viewport"  content="width=device-width,user-scalable=no"/&g ...

  4. "UTF-8"、"UTF8"、"utf-8"、"utf8"之间的区别

    本质上没有区别.1.“UTF-8”是标准写法;2.在Windows下边英文不区分大小写,所以也可以写成“utf-8”;3.“UTF-8”也可以把中间的“-”省略,写成“UTF8”.一般程序都能识别,但 ...

  5. 建立makefile

    一.目的 1.1 熟悉makefile的基本规则,学会建立自己的makefile,通过makefile提高编程效率 1.2 学会通过autotools建立makefile来更好更高效地管理软件项目工程 ...

  6. MySQL数据库备份与还原

    备份数据库 1.使用mysqldump命令备份 备份一个数据库:mysqldump -u 用户名 -p密码 数据库名 [表名1,表名2...]>备份文件路径及名字.sql           如 ...

  7. string 替换字符串

    C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事.首先明白一个概念,即string替换所有 ...

  8. mysql 修改数据库密码

    MYSQL5.7以下版本的数据库密码使用的是 mysql这个数据库里的user表的password这个字段, 修改密码只需: 1.update MySQL.user set password=pass ...

  9. mybatis支持的jdbc类型

    参考mybatis的枚举JdbcType源码: 关于这些类型mybatis是如何处理可以看一下TypeHandler类的源码.

  10. html tags and attribute集参考

    cite 表示引用到某一本书籍名称,默认样式为斜体,q 表示直接引用到里面的话,大块的引用使用block默认样式将增加“双引号” ,关键的词用<b>默认为粗体:一些技术术语则用<i& ...