模块相互依赖

时间:2014-04-16 06:53:00

标签: linux-kernel dependencies kernel kernel-module

我有2个模块mod_1.ko& mod_2.ko与fun_1()& fun_2()分别在其中定义。我导出了这些功能,想要使用fun_1& mod_2.ko&中的fun_2 mod_1.ko。我该如何进行..?

1 个答案:

答案 0 :(得分:1)

如果您明确使用它(您可以从mod_2.ko调用fun_1,从mod_1.ko调用fun_2),那么内核将不允许您加载模块。发生这种情况是因为它读取符号表并查找内核现有模块 - 您可以在/ proc / kallsyms中看到的模块。所以mod_1有fun_2参考,需要加载mod_2。 mod_2有fun_1参考,需要加载mod_1。你有依赖锁)

我可以为您的问题考虑两种解决方案:

  • 将fun_1和fun_2带入您首先加载的单独模块中。
  • 不要明确调用函数。在find_symbol的帮助下隐含地执行此操作。你声明了函数指针,然后通过调用find_symbol在运行时解析该指针,然后通过函数指针调用你的函数。