请问不同驱动中的probe函数执行顺序是怎么样的?
-
最近遇到一个问题,内核启动的时候clk probe函数没有执行,导致很多功能在获取clk的时候报错,我尝试过修改驱动init的等级比如将module_init改为arch_initcall,这样操作,有时候确实有效,但是并不是都有效。
所以我想请问一下大佬,probe的顺序是否能够修改?谢谢 -
@masterlu probe的执行可以修改
module_init();
等级为6
fs_initcall();
等级为5如果不放心就使用module后期加载
可以使用
cat /sys/kernel/debug/clk/clksummary
查看 clk 是否正常 -
@whycanservice 谢谢回复。
我已经在clk驱动中将module_platform_driver(clk_driver);
改成了
static int __init clk_init(void)
{
return platform_driver_register(&clk_driver);
}
arch_initcall(clk_init);//arch_initcall 等级为3
我通过kernel log 看,clk_driver 执行probe的时间确实有提前,但是有的使用module_init的驱动还是会在clk_driver之前执行probe。这让我感觉很疑惑。
我想过将驱动编译为module,但是clk涉及到很多功能,像是gpio,lcd,audio等,如果将上述的驱动都使用module,那就涉及到这些部分的驱动可能都需要编译成module,这样做是否会很奇怪。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号