插入具有循环依赖关系的模块 (*.ko)
我有三个 Linux 内核模块(*.ko
文件)。它们具有如下循环依赖关系:
mod1.ko
使用mod3.ko
导出的函数mod2.ko
使用mod1 导出的函数。 ko
mod3.ko
使用mod1.ko
和mod2.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 bymod3.ko
mod2.ko
uses functions exported bymod1.ko
mod3.ko
uses functions exported bymod1.ko
andmod2.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 rundepmod kernel_version modprobe mod3
Can anyone help me please! Any suggestions are appreciated. Thanks in advance :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
那么,将这三个模块合并为一个怎么样?
Well, how about merge those three modules into one?
我遇到了同样的问题。
对于我来说,合并模块并不是一个好的解决方案。
我最终所做的是添加使用回调函数而不是原始函数。并使用注册例程在其他模块中注册该函数(需要使用函数指针)。
这消除了模块之间的依赖关系。
然后,您可以先插入非依赖模块,然后再插入依赖模块。
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.