struct load_info中字段strmap的含义是什么?

时间:2011-06-08 20:31:42

标签: linux kernel dynamic-linking module

我正在研究linux内核中模块加载的机制,我坚持结构strmap内的字段load_info的含义。

结构定义为in kernel/module.c,字段填充in kernel/module.c。我知道它是一个位图,但我无法弄清楚各个位的含义。

1 个答案:

答案 0 :(得分:1)

(我在LWN上找不到任何内容。这是对代码的部分分析。请注意strmap在引入struct load_info之前作为单独的变量存在。)

strtab包含一堆连接在一起的以null结尾的字符串。例如。它可能包含这个,其中.代表一个空字符:

foo.bar.quux.corge.
0123456789012345678

layout_symtab中,strmap用于确定strtab的哪些块与core symbols对应。只要第j个字符是核心符号名称的一部分,loop就会设置strtab的第j位。例如,根据上表,如果barcorge是核心符号,则位4-7和13-18设置为1.

add_kallsyms中,second loop计算核心符号名称的总长度,third loop通过复制将核心符号复制到新表mod->symtab中仅设置strtab中相应位的strmap字节。在上面的示例中,新表格将包含bar.corge.