我有两个 Linux 内核模块,其中一个可以为另一个提供一些功能。但是使用该功能不是必需的,即使第一个模块不存在,第二个模块也可以(并且应该)工作。
如果我只是从第一个模块导出函数并在第二个模块中使用它,则第二个模块依赖于该符号并且没有第一个模块就无法加载。
一种解决方案是让用户脚本在 /proc/kallsym 中查找第一个模块中的函数,如果它存在,则脚本将其地址作为参数传递给第二个模块,然后从中生成指针. 但出于显而易见的原因,我不喜欢这种解决方案。
如果有更正确和优雅的解决方案允许第二个模块获取第一个模块中某个符号的地址,但避免硬依赖?