哪里是linux内核中调用的pci驱动程序的探测函数

时间:2014-08-28 16:49:41

标签: linux kernel pci

我浏览了pci-driver.c中的__pci_register_driver(),但找不到pci驱动程序的probe()。哪个内核函数会调用此probe()?谢谢!

2 个答案:

答案 0 :(得分:2)

在同一个文件pci-driver.c中有一个名为

的函数
static long local_pci_probe(void *_ddi)
{
...
    rc = ddi->drv->probe(ddi->dev, ddi->id);
...
}

来电来自struct bus_type pci_bus_type = { .probe = pci_device_probe }。首先,pci_device_probe()调用__pci_device_probe(),调用pci_call_probe(),调用local_pci_probe(),然后调用pci驱动程序的probe()

答案 1 :(得分:0)

  • _pci_register_driver的原型在 pci.h 中给出如下:

    #define pci_register_driver(driver)__ pci_register_driver(driver,THIS_MODULE,KBUILD_MODNAME)

  • __ pci_register_driver在pci-driver.c中定义

  • 在某些情况下 pci.h 文件包含在驱动程序文件中并由pci_register_driver函数调用。它被使用..