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中的设备信息,创建设备文件。

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

  • 相关阅读:
    jquery常用操作@测试分享
    selenium 上传文件
    python 安装mysql驱动
    创建react项目
    入栈操作的合法性 【重复元素】
    git笔记
    python GUI实战项目——tkinter库的简单实例
    Excel更改单元格格式后无效
    Find the Difference
    Two Sum IV
  • 原文地址:https://www.cnblogs.com/physworld/p/14815292.html
Copyright © 2011-2022 走看看