2014-01-06 74 views
2

我正在爲提供幾個獨立「通道」數據的硬件寫一個Linux設備驅動程序。系統中可能有多個設備,每個設備都提供一組通道,這些通道將被表示爲基本上獨立的字符設備。Linux設備驅動程序字符設備「子目錄」

我不知道如何表達的層次關係的/ dev,例如:

/dev/mydevice0/chan0 
/dev/mydevice0/chan1 
/dev/mydevice0/chan2 
/dev/mydevice0/chan3 

/dev/mydevice1/chan0 
/dev/mydevice1/chan1 
/dev/mydevice1/chan2 
/dev/mydevice1/chan3 
... 

如何去了解創建自動這種層次結構的創建設備節點? 「自動」是指使用大多數現代Linux系統上可用的典型機制(即可以依賴於udev,但我不想在其中使用一堆mknod命令來製作一些特殊的腳本)。這是明智的,甚至嘗試,否則我會過得更好生成一個唯一的後綴爲每個通道,類似於什麼是磁盤設備完成,e.g:

/dev/mydev0c0 
/dev/mydev0c1 
... 
/dev/mydev1c0 
/dev/mydev1c1 
... 

謝謝!

回答

1

device_create()函數是您可以讓驅動程序創建設備節點的方式,根據this short thread,您可以在調用設備時將其放置到的路徑進行硬編碼。你只需要用感嘆號來替換你的路徑分隔符。從鏈接線

示例路徑:

「測試電源!」 將被創建爲:/開發/測試/功率

This tutorialmy answer to another SO question應該幫助您使用device_create()正確。

+0

哇 - 我不會猜到的。謝謝! – jeremytrimble

+0

我無法在發佈之前對其進行測試,因此我希望它對您有用。如果沒有,請回來,不接受答案,所以我知道繼續尋找。我對這個問題真的很感興趣,也從來不會猜到這個方法。 – skrrgwasme