微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux内核中的模块间通信

我有两个 Linux内核模块,其中一个可以为另一个提供一些功能.但是使用该功能并不重要,即使第一个模块不存在,第二个模块也可能(并且应该)工作.

如果我只是从第一个模块导出函数并在第二个模块中使用它,则第二个模块依赖于该符号,并且在没有第一个模块的情况下无法加载.

其中一个解决方案是让用户脚本查看第一个模块中函数的/ proc / kallsym,如果它出现在那里,脚本将其地址作为参数传递给第二个模块,然后将指针从其中移出.但出于明显的原因,我不喜欢这种解决方案.

如果有更正确和优雅的解决方案,将允许第二个模块在第一个模块中获取某些符号的地址,但避免硬依赖?

解决方法

最后我找到了解决方案:内核有symbol_get()和symbol_put(),这使我有机会在另一个模块中查找任意符号(当然需要导出)并防止模块在我使用时卸载符号.

原文地址:https://www.jb51.cc/linux/394964.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐