LINUX:静态链接模块加载的顺序

时间:2011-04-14 21:02:14

标签: module linux-kernel

如果我有两个静态链接的模块。一个模块的module_init函数依赖于另一个模块的module_init函数已经运行。有没有办法强制一个模块在另一个模块之前加载?

另外,第一个模块的init函数是否可以在调用第二个模块之前完成?

最后,如果上面的答案为NO,那么同步两个模块初始化调用的推荐方法是什么,以确保我不会遇到问题?

2 个答案:

答案 0 :(得分:13)

  

有没有办法强制一个模块在另一个模块之前加载?

答案非常简单,请确保第一个模块在Makefile中是第一个:

obj-y += mod1.o
obj-y += mod2.o
  

是第一个模块的init函数保证在调用第二个之前完成吗?

是的,你的案例中的initcalls(module_init hook)是逐个调用的。见init/main.cdo_one_initcall()来电者。

答案 1 :(得分:-1)

我假设您要修复静态初始化惨败

看看

Static Initialization Order Fiasco