繁体   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