linux的pci驱动模型
做个笔记
linux通过pcibios_scan_root函数以深度优先的算法搜索整个pci架构,建立一个树形的链表,如下:
之后再调用pci_bus_add_devices函数把所有搜索到的pci_dev链接到pci_bus_type的klist_devices字段下。当设备驱动通过pci_register_driver注册的时候就会搜索klist_devices里的设备,看是否和驱动支持的设备相匹配。
这个模型需要注意的是pci_root_buses和pci_bus_type两个变量别弄混了,其他都比较好理解。
图片转自:http://www.tldp.org/LDP/tlk/dd/pci.html