3

我在我的机器上运行 3.4.7 内核并编写自己的内核模块,其中一个应该调用其他模块中的函数。

我使用 EXPORT_SYMBOL 使其他内核模块可以访问这些函数。就我而言,我的模块“klm_sse”就是这样做的。

现在我加载了另一个模块,该模块使用'klm_sse'导出的符号,但是当我加载它时,它会抱怨:

[22892.216551] klm_<...>: Unknown symbol sys_srv_register_multiple (err 0)

这是 'cat /proc/kallsyms | 的输出。grep klm_sse',其中 klm_sse 是我的模块名称。

ffffffffa013d170 r __ksymtab_sys_srv_register_multiple  [klm_sse]
ffffffffa013d28b r __kstrtab_sys_srv_register_multiple  [klm_sse]
ffffffffa012e9b0 t sys_srv_register_multiple    [klm_sse]

从“手册”页面中我了解到,如果 /proc/kallsyms 中的条目显示小写字母,此处为“r”和“t”,则表示符号未全局导出。

如何使我的导出全局可见,以便其他人可以访问它?

是否需要修复此问题的内核编译选项?感谢有关此的任何输入,我确实为此头疼了两天!

提前一百万谢谢

4

0 回答 0