[英]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.