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

发布于 2024-10-28 19:03:26 字数 616 浏览 4 评论 0原文

我有三个 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
    模组探针模组3
    

​​谁能帮助我!任何建议表示赞赏。提前致谢 :)

I have three Linux kernel modules (*.ko files). They have circular dependencies like this:

  • mod1.ko uses functions exported by mod3.ko
  • mod2.ko uses functions exported by mod1.ko
  • mod3.ko uses functions exported by mod1.ko and mod2.ko

I cannot load the first mod1.ko file because of "Unknown symbol" error. I also tried two other methods but I got the same error:

  • load all modules at a time

    insmod mod1.ko mod2.ko mod3.ko
    
  • Put these files in /lib/modules/kernel_version/my_modules, and run

    depmod kernel_version
    modprobe mod3
    

Can anyone help me please! Any suggestions are appreciated. Thanks in advance :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

↙温凉少女 2024-11-04 19:03:26

那么,将这三个模块合并为一个怎么样?

Well, how about merge those three modules into one?

始终不够爱げ你 2024-11-04 19:03:26

我遇到了同样的问题。
对于我来说,合并模块并不是一个好的解决方案。

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

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

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

I encountered the same problem.
Merging the modules was not a good solution in my case.

What I eventaully did was to add use callback function instead of the original function. And to registrate the function in the other module using registration routines (need to use function pointer for that).

This has eliminated the dependency between the modules.

You can then insert the non-dependent module first, and the dependent module afterwards.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文