8年前。
This question was migrated from Unix & Linux Stack Exchange because it can be answered on Stack Overflow. Migrated。
我正在研究linux内核中的模块加载机制,我一直在研究structstrmap
中字段load_info
的含义。
结构被定义为Learn more,字段被填充为in kernel/module.c
。我知道这是一个位图,但我不知道各个位的含义。
最佳答案
(我在LWN上找不到任何东西。这是对代码的部分分析。注意strmap
在struct load_info
引入之前作为单独变量存在。strtab
包含一组连接在一起的以空结尾的字符串。例如,它可能包含这个,其中.
表示空字符:
foo.bar.quux.corge.
0123456789012345678
在
layout_symtab
中,strmap
用于确定哪些strtab
块对应于core symbols。每当第j个字符是核心符号名称的一部分时,loop设置strtab
的第j位。例如,如上表所示,如果bar
和corge
是核心符号,则位4–7和13–18设置为1。在
add_kallsyms
中,second loop计算核心符号名称的总长度,third loop通过仅复制设置了mod->symtab
中相应位的strtab
字节,将核心符号复制到新表中。在上面的示例中,新表将包含strmap
。10-08 11:28