使用mdev在/dev/下創建子目錄放置設備節點

開始做Linux下的音頻採集,用的是2.6的內核,內核的音頻驅動爲alsa,這個工程還提供一個alsalib用戶空間的應用程序很好用的接口庫,但是用戶空間的程序alsa-lib, alsa-utils都是去 /dev/snd/目錄下找這些設備節點,而我的開發板上的controlC0  mixer      pcmC0D0c   pcmC0D0p   timer 這些設備文件是在/dev下的,而不是在/dev/snd下的,所以得想辦法讓內核在/dev/snd下創建設備節點,而不是/dev下,瞭解到用mdev可以實現這個功能。怎麼能讓mdev把設備節點創建在子目錄下呢?


在busybox源代碼的 doc/mdev.txt 文檔裏面找到以下說明: 怎麼能讓mdev把設備節點創建在子目錄下呢?
在busybox源代碼的 doc/mdev.txt 文檔裏面找到以下說明:

You can rename/move device nodes by using the next optional field.

        <device regex> <uid>:<gid> <permissions> [=path]

So if you want to place the device node into a subdirectory, make sure the path

has a trailing /. If you want to rename the device node, just place the name.

        hda 0:3 660 =drives/

This will move "hda" into the drives/ subdirectory.

        hdb 0:3 660 =cdrom

This will rename "hdb" to "cdrom".

 

Similarly, ">path" renames/moves the device but it also creates

a direct symlink /dev/DEVNAME to the renamed/moved device.
所以, 我們只要在 /etc/mdev.conf配置文件裏面加入幾行就可以了:


controlC[0-9] 0:0 0660 =snd/
pcm.* 0:0 0660 =snd/
seq.* 0:0 0660 =snd/
mix.* 0:0 0660 =snd/
timer 0:0 0660 =snd/
這樣再運行mdev, ALSA相關的設備節點就都創建在  /dev/snd/ 目錄下了。
後記: 內核裏面 struct class 裏面的 devnode 項跟設備節點所在目錄好像也有關係。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章