【问题标题】:What's the meaning of the field strmap in the struct load_info?struct load_info 中的字段strmap 是什么意思?
【发布时间】:2011-06-08 20:31:42
【问题描述】:

我正在研究linux内核内部的模块加载机制,我被困在结构load_info内的字段strmap的含义上。

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

【问题讨论】:

    标签: linux kernel dynamic-linking module


    【解决方案1】:

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

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

    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 通过仅复制 strtab 的字节将核心符号复制到新表 mod->symtabstrmap 中的相应位被设置。在上面的示例中,新表将包含 bar.corge.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2021-12-15
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      相关资源
      最近更新 更多