/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個,依次類推。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM