zoukankan      html  css  js  c++  java
  • 装载内核模块时,自动添加设备文件

    先看/etc/init.d/rcS文件的内容

     echo /sbin/mdev > /proc/sys/kernel/hotplug的意思就是当内核出现热插拔事件时,就调用mdev这个应用程序,去根据系统信息创建设备节点。

    系统信息怎么来?

    驱动程序中定义了一个类和类设备

     在first_drv_init函数中调用class_create()函数创建一个类

    再用class_device_create()函数在这个类下创建一个设备,主设备号由系统给定,设备文件名字为“xyz”

     当内核用insmod命令安装first_drv.ko模块时,内核会调用first_drv_init函数,从而创建类和设备,这些信息会保存在/sys目录中。

    /sys目录中含有系统信息,/sys/class下有各种类,驱动程序中创建了firstdrv类,在这里会显示。firstdrv类里面有xyz设备文件夹,表示有xyz这个设备。

    dev文件中的内容是xyz设备的主设备号和次设备号。

    执行了insmod命令也会产生一个hotplug事件,内核会根据/proc/sys/kernel/hotplug的指示执行相应的应用程序:

     这时候mdev开始运行,根据/sys/class/firstdrv中的设备信息,创建设备文件。

    这样就完成了加载内核模块时,自动创建设备文件,主要是依靠创建一个类和一个类下的设备完成的。

  • 相关阅读:
    大二实习使用的技术汇总(下)
    【JSP】JSTL使用core标签总结(不断更新中)
    凸包---HDU 2202
    poj
    [MFC]MFC中OnDraw与OnPaint的区别
    PHP 自动生成导航网址的最佳方法 v20130826
    汉语-词语-调料:百科
    汉语-词语-味觉:百科
    汉语-词语-本源:百科
    un-人物-企业家-迈纳·基思:百科
  • 原文地址:https://www.cnblogs.com/physworld/p/14815292.html
Copyright © 2011-2022 走看看