gpt4 book ai didi

linux - Linux内核中的模块间通信

转载 作者:IT王子 更新时间:2023-10-29 00:20:31 26 4
gpt4 key购买 nike

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

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

其中一个解决方案是让用户脚本在/proc/kallsym 中查找第一个模块中的函数,如果存在,脚本将其地址作为参数传递给第二个模块,然后生成指针从它出来。但出于显而易见的原因,我不喜欢这种解决方案。

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

最佳答案

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

关于linux - Linux内核中的模块间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15699518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com