插入具有循环依赖关系的模块(* .ko)

时间:2011-03-30 04:38:20

标签: linux module device-driver

我有三个Linux内核模块(*.ko个文件)。他们有这样的循环依赖:

  • mod1.ko使用mod3.ko
  • 导出的功能
  • mod2.ko使用mod1.ko
  • 导出的功能
  • mod3.ko使用mod1.komod2.ko
  • 导出的功能

由于“未知符号”错误,我无法加载第一个mod1.ko文件。我也尝试了另外两种方法,但我得到了同样的错误:

  • 一次加载所有模块

    insmod mod1.ko mod2.ko mod3.ko
    
  • 将这些文件放在/lib/modules/kernel_version/my_modules中,然后运行

    depmod kernel_version
    modprobe mod3
    

任何人都可以帮助我!任何建议表示赞赏。在此先感谢:)

2 个答案:

答案 0 :(得分:2)

那么,如何将这三个模块合并为一个?

答案 1 :(得分:0)

我遇到了同样的问题。 在我的案例中,合并模块不是一个好的解决方案。

我最后做的是添加使用回调函数而不是原始函数。并使用注册例程在其他模块中注册该函数(需要使用函数指针)。

这消除了模块之间的依赖关系。

然后,您可以先插入非依赖模块,然后再插入依赖模块。