zoukankan      html  css  js  c++  java
  • /proc/devices和/dev的关系

     
    /proc/devices/下的设备是驱动程序生成的,它可产生一个major供mknod作为参数。 
    /dev/下的设备是通过mknod加上去的,用户通过此设备名来访问驱动。

    The following script, scull_load, is part of the scull distribution. The user of a driver that is distributed in the form of a module can invoke such a script from the system's rc.local file or call it manually whenever the module is needed.

    #!/bin/sh
    module="scull"
    device="scull"
    mode="664"

    # invoke insmod with all arguments we got
    # and use a pathname, as newer modutils don't look in . by default
    /sbin/insmod ./$module.ko $* || exit 1

    # remove stale nodes
    rm -f /dev/${device}[0-3]

    major=$(awk "\\$2= =\"$module\" {print \\$1}" /proc/devices)

    mknod /dev/${device}0 c $major 0
    mknod /dev/${device}1 c $major 1
    mknod /dev/${device}2 c $major 2
    mknod /dev/${device}3 c $major 3

    # give appropriate group/permissions, and change the group.
    # Not all distributions have staff, some have "wheel" instead.
    group="staff"
    grep -q '^staff:' /etc/group || group="wheel"

    chgrp $group /dev/${device}[0-3]

    chmod $mode /dev/${device}[0-3]

    请 问:linux环境下,/dev/目录下的内容与/proc/下文件devices中的内容有什么区别?我在目标板上做实验时发现,当我向板子上加载驱动 模块时,devices文件中有变化,而/dev下根本没有变化,/dev/下不也应该是设备接点吗,为什么为模块建立设备接点时,/dev/下却没有变 化呢? 

    请各位帮帮忙,谢谢!!!

    /proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为参数。 
    /dev/*.* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用户通过此设备名来访问你的驱动。

     

     

    请 问:linux环境下,/dev/目录下的内容与/proc/下文件devices中的内容有什么区别?我在目 标板上做实验时发现,当我向板子上加载驱动模块时,devices文件中有变化,而/dev下根本没有变化,/dev/下不也应该是设备接点吗,为什么为 模块建立设备接点时,/dev/下却没有变化呢? 
    请各位帮帮忙,谢谢!!!

    /proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为 参数。 
    /dev/*.* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用户通过此设备名来访问你的驱动。

    设备 文件 ,设备编号  #ll  -a /dev  在每一行都可以看到设备文件、设备编号(主、次) 
    对于每种硬件设备,系统内核有相应的设备驱动程序负责对它的处理。而在Unix 中,使用设备文件的方式来表示硬件设备,每种设备驱动程序都被抽象 为设备文件的形式,这样就给应用程序一个一致的文件界面,方便应用程序和操作系统之间的通信。 

    习惯上,所有的设备文件 都放置在/dev 目录下。 

    /proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为 参数 。 
    /dev/*.* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用户通过此设备名来访问你的驱动。

    mknod - make block or character special files
    mknod [OPTION]... NAME TYPE [MAJOR MINOR]
        option 有用的就是 -m 了
        name   自定义
        type   有 b 和 c 还有 p
        主设备号
        次设备号


    主 设备号是由/usr/src/linux/include/linux/major.h定义的,如下定义了一个DOC设备: 
    #define IGEL_FLASH_MAJOR 62 

    假如有一个命令mknod doc b 62 0 : 
    其中的doc为定义的名 字,b指块设备,0指的是整个DOC。如果把0换为1,则1指的是DOC的第一个分区。2是第2个,依次类推。
  • 相关阅读:
    【测试】Testing as a Service (TaaS)
    【Git】git cherry-pick 使用
    【2021】开篇
    【Java】容器类的实现和互相转换
    【Testing】API Testing
    【WeeklySoftwareTesting】
    【Oracle】XMLTABLE介绍
    【Oracle】创建定时任务
    【Java】Retryer重试机制
    表格数据导出报表
  • 原文地址:https://www.cnblogs.com/wanghetao/p/2532183.html
Copyright © 2011-2022 走看看