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

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

  • 相关阅读:
    CentOS 7 虚拟机的安装
    2 MySQL rpm
    01-在实体类上加了lombok的@Data注解
    02-myBatisPlus的wrapper接口的使用
    2 MySQL rpm 安装 --下载
    1-MySQL介绍
    MySQL的不归路
    电脑型号4 1500 内存大 机械大硬盘
    电脑型号3 1200 大硬盘
    电脑概览 2 1200 固态SSD
  • 原文地址:https://www.cnblogs.com/physworld/p/14815292.html
Copyright © 2011-2022 走看看