我正在研究Linux內核中模塊加載的機制,並且我堅持在結構load_info
內的字段strmap
的含義。struct load_info中字段strmap的含義是什麼?
該結構體定義爲in kernel/module.c
,該字段填充爲in kernel/module.c
。我知道這是一個位圖,但我無法弄清楚各個位的含義。
我正在研究Linux內核中模塊加載的機制,並且我堅持在結構load_info
內的字段strmap
的含義。struct load_info中字段strmap的含義是什麼?
該結構體定義爲in kernel/module.c
,該字段填充爲in kernel/module.c
。我知道這是一個位圖,但我無法弄清楚各個位的含義。
(我無法找到任何LWN這是代碼的部分分析。需要注意的是strmap
存在作爲一個單獨的變量引入struct load_info
之前。)
strtab
包含了一堆空值的終止的字符串連接在一起。例如。它可能包含這一點,在那裏.
代表一個空字符:
foo.bar.quux.corge.
在layout_symtab
,strmap
用於確定哪些strtab
塊對應core symbols。只要第j個字符是核心符號名稱的一部分,loop就會將第j位設置爲strtab
。例如,給定上表中,如果bar
和corge
是核心的符號,那麼,位4-7和13-18被設置爲1
在add_kallsyms
,所述second loop計算核心符號的名字的總長度,並且third loop通過僅複製設置了strmap
中的相應位的strtab
的字節將核心符號複製到新表mod->symtab
中。在上面的例子中,新表格將包含bar.corge.
。