簡體   English   中英

linux如何識別需要加載的輸入驅動程序?

[英]How does linux recognize what input driver it needs to load?

我一直在研究輸入的GNU / Linux驅動程序,例如usb鼠標驅動程序 ,我想我知道它們如何交互,但是我不了解內核如何識別一種設備類型並為此加載驅動程序。 我對角地看過Linux設備驅動程序 ,但沒有發現任何有關此問題的信息。

關於應該閱讀什么以了解此過程的任何建議?

背景:內核使用kobject_uevent_env函數發送稱為uevents的事件。 udev守護程序從netlink套接字(早期版本使用熱插拔)讀取此uevents。 在開始之前,udev從/etc/udev/rules.d/預加載規則,該規則包含有關對內核中的適當uevent進行響應需要執行哪些操作的信息(例如insmod模塊)。

現在,關於您的要求。 通常,uevent消息附帶的是MODALIAS,看起來可能像這樣:

MODALIAS = usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02

USB設備存儲供應商ID和設備ID,在構造MODALIAS時也會使用它們。 可以動態加載的內核設備驅動程序(.ko文件)也存儲該驅動程序可以使用的設備標識符。 驅動程序可以使用MODULE_DEVICE_TABLE宏宣布它可以與適當的設備/供應商ID一起使用。 這樣便可以建立設備與動態模塊之間的關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM