gpt4 book ai didi

linux-kernel - 如果两个内核模块导出相同的符号会发生什么

转载 作者:行者123 更新时间:2023-12-04 04:42:28 37 4
gpt4 key购买 nike

如果两个内核模块包含EXPORT_SYMBOL(a),a定义为:int a,如果插入两个模块会发生什么?将使用哪个“a”?

最佳答案

您不能将重复的符号插入内核。例子:
xor在我的内核中加载的模块

nwatkins@kyoto:~$ lsmod | grep xor
xor 4685 1 async_xor

导出的 xor_blocks xor 中的符号模块
nwatkins@kyoto:~$ nm /lib/modules/2.6.32-24-generic/kernel/crypto/xor.ko  | grep xor_blocks
0000000000000000 r __kcrctab_xor_blocks
0000000000000000 r __kstrtab_xor_blocks
0000000000000000 r __ksymtab_xor_blocks
0000000000000bb0 T xor_blocks

另一个导出 xor_blocks我创建的模块中的符号
nwatkins@kyoto:~$ nm mod-t1.ko  | grep xor
0000000000000000 r __kcrctab_xor_blocks
0000000000000000 r __kstrtab_xor_blocks
0000000000000000 r __ksymtab_xor_blocks
0000000000000000 T xor_blocks
insmod 报告的错误
nwatkins@kyoto:~$ sudo insmod mod-t1.ko 
insmod: error inserting 'mod-t1.ko': -1 Invalid module format

来自 dmesg 的重复错误消息
[422002.174033] mod_t1: exports duplicate symbol xor_blocks (owned by xor)

关于linux-kernel - 如果两个内核模块导出相同的符号会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454740/

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