2012-07-30 107 views
2

設備文件鏈接到驅動程序的主要和次要號碼。那麼驅動程序如何鏈接到設備?當我們插入一個設備時,內核如何知道它可以在哪個模塊加載的情況下工作設備如何鏈接到驅動程序在Linux中

回答

1

關於供應商和設備ID以及hotplug和udev的答案是正確的,但他們沒有解釋主要和次要數字是什麼。所有關鍵字都是爲未來的搜索者提供的,我會在這裏做。

ls -l /dev所示,主要和次要設備編號無助於識別在檢測設備時加載的驅動程序。它們是讓內核在打開設備文件時知道您要訪問的設備。

當驅動程序被加載,如果它支持/dev任何特殊的文件,它會調用register_chrdev(或一些類似的功能),通知它要使用主號碼的內核。一些驅動程序通過要求內核選擇一個未使用的驅動程序來動態選擇主要編號。註冊程序將驅動程序及其主要號碼放入表格中,稍後可以找到它們。

永久分配的設備編號向中央授權機構進行註冊,註冊信息發佈在Documentation/admin-guide/devices.*

/dev中的文件具有與其驅動程序匹配的主號碼以及標識特定設備或功能的次要號碼。這些文件是由MAKEDEV靜態創建的,或者由hotplug/udev系統動態創建的。低級別的「創建設備文件」操作稱爲mknod

當用戶程序打開設備文件時,主要和次要號碼用於在由register_chrdev維護的表中查找驅動程序,並調用驅動程序的方法來服務用戶的請求。

0

hotplug程序可以由內核自動地啓動,當它檢測到新插入的設備。現在udev也有助於這一點。

相關問題