Linux kernel 平台设备和平台驱动程序链接

Linux kernel 平台设备和平台驱动程序链接,linux-kernel,usb,linux-device-driver,platform,Linux Kernel,Usb,Linux Device Driver,Platform,在linux中浏览usb代码时。我遇到了平台\设备\添加()api 我的问题是,当我们使用上述api创建平台设备时,关联的驱动程序是如何绑定到它的? 据我所知,平台驱动程序会自行注册,当设备树兼容字符串与驱动程序中提到的字符串匹配时,将调用驱动程序的探测 那么它是否像设备树那样使用了“兼容字符串”之类的东西呢? 它是否使用“结构平台\u设备”中的“名称”字段,并将其与“结构平台\u驱动程序”的“名称”字段相匹配 如果我错了,请纠正我。另外,任何了解更多信息的文本源都会很有帮助,因为我是新手。因此

在linux中浏览usb代码时。我遇到了平台\设备\添加()api

我的问题是,当我们使用上述api创建平台设备时,关联的驱动程序是如何绑定到它的?

据我所知,平台驱动程序会自行注册,当设备树兼容字符串与驱动程序中提到的字符串匹配时,将调用驱动程序的探测

那么它是否像设备树那样使用了“兼容字符串”之类的东西呢? 它是否使用“结构平台\u设备”中的“名称”字段,并将其与“结构平台\u驱动程序”的“名称”字段相匹配


如果我错了,请纠正我。另外,任何了解更多信息的文本源都会很有帮助,因为我是新手。

因此,您在这里提出了一些问题

  • 每当我们100%确信在给定的平台上,我们期望相关的设备存在并且运行时,我们调用平台设备添加()

  • 在大多数情况下,
    ->probe()
    回调是在设备添加时(如果驱动程序已经加载)或在驱动程序加载阶段(如果系统中存在设备)同步调用的

  • 它不使用设备树,它是纯粹基于板文件的枚举(设备存在通过ACPI或设备树以外的其他方式识别)

  • 事实上,它使用驱动程序名进行匹配。调用API时,它按设备名称匹配。有关实际代码,请参见的实现