作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究 linux 内核中的模块加载机制,我卡在结构 load_info
中的字段 strmap
的含义上。
结构定义in kernel/module.c
并且该字段已填充 in kernel/module.c
.我知道它是位图,但我无法弄清楚各个位的含义。
最佳答案
(我在 LWN 上找不到任何东西。这是对代码的部分分析。请注意,strmap
作为单独的变量存在于 struct load_info
之前被介绍了。)
strtab
包含一堆连接在一起的以 null 结尾的字符串。例如。它可能包含这个,其中 .
代表一个空字符:
foo.bar.quux.corge.
0123456789012345678
在 layout_symtab
中, strmap
用于确定 strtab
的哪些 block 对应于 core symbols 。只要第 j 个字符是核心符号名称的一部分,loop 就会设置 strtab
的第 j 位。例如,给定上表,如果 bar
和 corge
是核心符号,则位 4-7 和 13-18 设置为 1。
在 add_kallsyms
中,second loop 计算核心符号名称的总长度,third loop 通过仅复制 的字节将核心符号复制到新表
为其设置了 mod->symtab
>strtabstrmap
中的相应位。在上面的示例中,新表将包含 bar.corge.
.
关于linux - struct load_info 中的字段strmap 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287703/
我是一名优秀的程序员,十分优秀!