如果我有两个静态链接的模块。一个模块的module_init函数依赖于另一个模块的module_init函数已经运行。有没有办法强制一个模块在另一个模块之前加载?
另外,第一个模块的init函数是否可以在调用第二个模块之前完成?
最后,如果上面的答案为NO,那么同步两个模块初始化调用的推荐方法是什么,以确保我不会遇到问题?
答案 0 :(得分:13)
有没有办法强制一个模块在另一个模块之前加载?
答案非常简单,请确保第一个模块在Makefile中是第一个:
obj-y += mod1.o
obj-y += mod2.o
是第一个模块的init函数保证在调用第二个之前完成吗?
是的,你的案例中的initcalls(module_init
hook)是逐个调用的。见init/main.c
,
do_one_initcall()
来电者。
答案 1 :(得分:-1)
我假设您要修复静态初始化惨败
看看