設備文件鏈接到驅動程序的主要和次要號碼。那麼驅動程序如何鏈接到設備?當我們插入一個設備時,內核如何知道它可以在哪個模塊加載的情況下工作設備如何鏈接到驅動程序在Linux中
2
A
回答
1
關於供應商和設備ID以及hotplug和udev的答案是正確的,但他們沒有解釋主要和次要數字是什麼。所有關鍵字都是爲未來的搜索者提供的,我會在這裏做。
如ls -l /dev
所示,主要和次要設備編號無助於識別在檢測設備時加載的驅動程序。它們是讓內核在打開設備文件時知道您要訪問的設備。
當驅動程序被加載,如果它支持/dev
任何特殊的文件,它會調用register_chrdev
(或一些類似的功能),通知它要使用主號碼的內核。一些驅動程序通過要求內核選擇一個未使用的驅動程序來動態選擇主要編號。註冊程序將驅動程序及其主要號碼放入表格中,稍後可以找到它們。
永久分配的設備編號向中央授權機構進行註冊,註冊信息發佈在Documentation/admin-guide/devices.*。
/dev
中的文件具有與其驅動程序匹配的主號碼以及標識特定設備或功能的次要號碼。這些文件是由MAKEDEV
靜態創建的,或者由hotplug/udev系統動態創建的。低級別的「創建設備文件」操作稱爲mknod
。
當用戶程序打開設備文件時,主要和次要號碼用於在由register_chrdev
維護的表中查找驅動程序,並調用驅動程序的方法來服務用戶的請求。
1
對於PCI設備,它們將供應商和設備ID暴露在一個一致的位置。內核模塊可以向pci子系統呈現它們支持的列表。
例如:http://lxr.free-electrons.com/source/drivers/uio/uio_aec.c#L48
0
相關問題
- 1. Linux設備驅動程序
- 2. 設備驅動程序在linux中
- 3. 將虛擬PCI設備與linux設備驅動程序接口
- 4. 如何在linux中創建內置設備驅動程序
- 5. Linux的:如何USB驅動程序分配到設備
- 6. Linux i2c-設備驅動程序module_i2c_driver()
- 7. IOCTL Linux設備驅動程序
- 8. Linux網絡設備驅動程序
- 9. 如何啓動linux系統和設備驅動程序編程
- 10. 如何使用android/linux電源驅動程序註冊設備驅動程序?
- 11. 平臺設備/驅動程序vs i2c設備/驅動程序
- 12. 在Linux設備驅動程序的簡單程序
- 13. 將設備驅動程序連接到Linux內核中的多個外部驅動程序
- 14. 創建設備文件:Linux設備驅動程序
- 15. Linux設備驅動程序字符設備「子目錄」
- 16. Linux設備驅動程序,程序啓動的地方?
- 17. 如何成爲一名linux設備驅動程序員?
- 18. 如何調試PCI設備和Linux驅動程序
- 19. 如何爲i2c設備編寫新的Linux驅動程序?
- 20. Linux塊設備驅動程序:如何處理REQ_DISCARD
- 21. 在linux中的設備驅動程序中打開設備節點
- 22. 如何使用DMA從Linux設備驅動程序寫入硬盤驅動器
- 23. Linux設備驅動程序 - 線程化IRQ處理程序
- 24. 在Linux中編寫設備驅動程序
- 25. 在設備驅動程序中查找linux版本
- 26. 在Linux中編寫USB設備驅動程序
- 27. Linux中設備驅動程序檢測的過程
- 28. Linux USB設備驅動程序未得到探測
- 29. Linux設備驅動程序的最簡單驅動程序新手
- 30. Linux設備驅動程序:將標誌傳遞給驅動程序