linux 如何识别它需要加载的输入驱动程序?
How does linux recognize what input driver it needs to load?
我一直在研究输入GNU/Linux驱动,例如usb mouse driver, I think I get how they interact with , but I don't understand how kernel recognizes a type of device to load this driver for it. I've looked through Linux Device Drivers对角线,但还没有找到关于这件事的任何信息。
关于我应该阅读什么来理解这个过程有什么建议吗?
背景:内核使用来自 netlink 套接字的 kobject_uevent_env function. This uevents are read by udev 守护程序发送所谓的 uevents(早期版本使用热插拔)。在开始之前,udev 预加载来自 /etc/udev/rules.d/
的规则,该规则包含有关需要做什么的信息,作为对来自内核的适当 uevent 的反应(f.e。insmod 模块)。
现在谈谈你问的问题。通常 uevent 消息附带的是 MODALIAS,它可能如下所示:
MODALIAS = usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02
USB设备存储vendor id和device id,它们在构造MODALIAS时也会用到。可以动态加载的内核设备驱动程序(.ko 文件)也存储设备标识符,该驱动程序可以使用。驱动程序可以使用 MODULE_DEVICE_TABLE 宏宣布它与适当的 device/vendor id 一起工作。这样就建立了设备和动态模块之间的关系。
我一直在研究输入GNU/Linux驱动,例如usb mouse driver, I think I get how they interact with , but I don't understand how kernel recognizes a type of device to load this driver for it. I've looked through Linux Device Drivers对角线,但还没有找到关于这件事的任何信息。
关于我应该阅读什么来理解这个过程有什么建议吗?
背景:内核使用来自 netlink 套接字的 kobject_uevent_env function. This uevents are read by udev 守护程序发送所谓的 uevents(早期版本使用热插拔)。在开始之前,udev 预加载来自 /etc/udev/rules.d/
的规则,该规则包含有关需要做什么的信息,作为对来自内核的适当 uevent 的反应(f.e。insmod 模块)。
现在谈谈你问的问题。通常 uevent 消息附带的是 MODALIAS,它可能如下所示:
MODALIAS = usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02
USB设备存储vendor id和device id,它们在构造MODALIAS时也会用到。可以动态加载的内核设备驱动程序(.ko 文件)也存储设备标识符,该驱动程序可以使用。驱动程序可以使用 MODULE_DEVICE_TABLE 宏宣布它与适当的 device/vendor id 一起工作。这样就建立了设备和动态模块之间的关系。