Linux驅動中,probe函式何時被呼叫

2021-05-24 15:29:44 字數 996 閱讀 5248

宣告:以下主要內容參考自:

關於struct device_driver結構中的probe探測函式的呼叫

用sourceinsight跟蹤:

從driver_register看起,此處我的這裡是:

int driver_register(struct device_driver * drv)

klist_init(&drv->klist_devices, null, null);

return bus_add_driver(drv);

}klist_init不相關,不用管他,具體再去看bus_add_driver:

int bus_add_driver(struct device_driver *drv)

int driver_attach(struct device_driver * drv)

真正起作用的是__driver_attach:

static int __driver_attach(struct device * dev, void * data)

int driver_probe_device(struct device_driver * drv, struct device * dev)

really_probe才是我們要找的函式:

static int really_probe(struct device *dev, struct device_driver *drv)

else if (drv->probe)

。。。}

其中,drv->probe(dev),才是真正呼叫你的驅動實現的具體的probe函式。

也就是對應此文標題所問的,probe函式此時被呼叫。

note:原發於

Linux驅動中,probe函式何時被呼叫

關於struct device driver結構中的probe探測函式的呼叫 用sourceinsight跟蹤 從driver register看起,此處我的這裡是 int driver register struct device driver drv klist init drv klist d...

驅動註冊的probe函式

probe的呼叫 從driver register看起 int driver register struct device driver drv klist init與init completion沒去管它,可能是2.6的這個裝置模型要做的一些工作。直覺告訴我要去bus add driver。bus...

驅動註冊的probe函式

probe的呼叫 從driver register看起 int driver register struct device driver drv klist init與init completion沒去管它,可能是2.6的這個裝置模型要做的一些工作。直覺告訴我要去bus add driver。bus...