[英]When does the probe function for a Linux kernel driver gets called?
我正在嘗試更新Android的內核驅動程序,我添加了一些printk來調試它,_init函數被調用,但探測函數不是。 我錯過了什么? 何時/如何調用探測函數?
該代碼位於: https : //github.com/lamegopinto/kernel-2.6.32.27-M722HC/blob/master/drivers/power/rk2918_battery.c
經過一些研究后找到答案,對於“平台”設備,當注冊平台設備並且其設備名稱與設備驅動程序上指定的名稱匹配時,將調用探測功能。
更多細節請訪問: http : //comments.gmane.org/gmane.linux.kernel.kernelnewbies/37050
現在我只需要說明為什么設備沒有注冊:\\
當調用module_init時(在動態加載的情況下為insmod),則完成驅動程序注冊,並且存在與驅動程序相關的各種回調探測,恢復,暫停。
現在要理解的主要問題是探針功能發生了什么。 如果您在探測中注意到大多數與設備相關的初始化已完成(例如,與DEVICE相關的設置),那么顯然這應該在設備存在時執行。
當設備和驅動程序名稱/ ID匹配時調用探測器,即驗證它們將被耦合/鏈接。 所以現在我們確定說Driver ABC將與Device ABC相關聯; 在驅動程序ABC的探測中,設備ABC的初始化設置也是如此。
只要看到設備,就會調用probe
函數。 這可能發生在設備啟動時,或者可能在設備連接時發生。 查看此文章了解更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.