Linux kernel 插入新设备时USB通用驱动程序绑定

Linux kernel 插入新设备时USB通用驱动程序绑定,linux-kernel,usb,linux-device-driver,embedded-linux,Linux Kernel,Usb,Linux Device Driver,Embedded Linux,我正在试着理解这篇文章的第一句话。 它说,当内核中有新驱动程序的新设备插入时,将调用新驱动程序探测,但驱动程序核心将把通用驱动程序附加到新设备上。 我的问题是,如果在插入新设备时调用了新的驱动程序探测,那么这个新设备将如何连接到通用驱动程序 你能指导我理解内核源代码中的这种行为吗。所有usb设备都遵循相同的路径,通用驱动程序->端点枚举->接口驱动程序附件。当标准枚举不起作用时,该修补程序会出现一些例外情况。它没有说将调用新驱动程序的探测,而是说新驱动程序将是modprobe()'d,这意味着如

我正在试着理解这篇文章的第一句话。 它说,当内核中有新驱动程序的新设备插入时,将调用新驱动程序探测,但驱动程序核心将把通用驱动程序附加到新设备上。 我的问题是,如果在插入新设备时调用了新的驱动程序探测,那么这个新设备将如何连接到通用驱动程序


你能指导我理解内核源代码中的这种行为吗。

所有usb设备都遵循相同的路径,通用驱动程序->端点枚举->接口驱动程序附件。当标准枚举不起作用时,该修补程序会出现一些例外情况。它没有说将调用新驱动程序的探测,而是说新驱动程序将是modprobe()'d,这意味着如果尚未加载模块,则该模块将由用户空间帮助器异步加载。同时,如果没有注册更好的匹配USB驱动程序,则通用USB驱动程序将绑定到设备。(我想知道过去是如何工作的?因为这是最近的变化,我不记得这类事情在过去是一个问题。也许它用于同步处理modprobe?)异步加载模块的用户空间助手是udev或任何其他专用于modprobe的应用程序?@0andriy如何首先使用通用驱动程序?在驱动程序绑定期间,似乎通过传递基本设备和驱动程序结构来调用usb_device_match()。在usb_device_match()中,首先检查它是设备还是接口。如果是设备,则检查设备驱动程序是否具有id_表。如果设备驱动程序没有id_表,则最后检查设备驱动程序是否定义了匹配函数,如果定义了匹配函数,则调用匹配函数。根据usb_设备_匹配(),最后一个选项是检查设备驱动程序的匹配函数并调用它。那么如何首先调用通用驱动程序?关于我前面的评论,包含“我想知道以前是怎么工作的?”,它似乎在5.7中修复了一个bug,但它本身包含了一个bug,后来被修复了。