PCI总线驱动的注册调用栈
1、PCI总线驱动通过调用函数pci_register_driver()向内核注册自己。
2、当PCI总线上新设备被发现时,总线驱动会调用pci_device_probe()函数,该函数会遍历总线上所有已注册的设备驱动程序并尝试使用它们来探测新设备。
3、如果找到了匹配的设备驱动程序,则该设备驱动程序的probe()函数会被调用来初始化和注册该设备。此时,设备驱动程序将创建设备对象并为其分配资源,并将其添加到系统设备层次结构中。
4、当设备不再需要时,设备驱动程序的remove()函数会被调用来释放与该设备相关联的资源,并从系统设备层次结构中删除该设备。
PCI设备驱动的注册调用栈
1、设备驱动程序通过调用函数pci_register_driver()向内核注册自己。
2、当PCI总线上新设备被发现时,PCI总线驱动会调用pci_device_probe()函数,该函数会遍历总线上所有已注册的设备驱动程序并尝试使用它们来探测新设备。
3、如果找到了匹配的设备驱动程序,则该设备驱动程序的probe()函数会被调用来初始化和注册该设备。此时,设备驱动程序将创建设备对象并为其分配资源,并将其添加到系统设备层次结构中。
4、当设备不再需要时,设备驱动程序的remove()函数会被调用来释放与该设备相关联的资源,并从系统设备层次结构中删除该设备。