Linux 驱动注册(driver_register)流程probe方法的选择

driver_register -->bus_add_driver-->driver_attach-->driver_attach-->drv.probe

上面的调用顺序是驱动注册的流程,最终会调用drv->probe方法,对比plant_form总线和pci总线发现,plant_form总线的probe方法为空,pci总线的probe方法不为空(对比platform_bus_type和pci_bus_type)。何也?分析代码plant_form总线下的驱动注册的时候,probe用的是驱动自己的probe方法,pci总线下的驱动注册的时候用的是pci总线的probe方法。分析原因应该是plant_form总线是一种虚拟总线,总线自身不能探测挂在总线上的设备并初始化,而驱动是实实在在的,这样plant_form总线只能借助驱动的probe方法进行设备探测初始化。另一个方面pci总线作为一种实际存在的物理总线,有自己的探测方法探测挂在pci下的设备。

你可能感兴趣的:(Linux内核)