[英]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.