内核/ proc / kallsyms中的'T'和't'有什么区别

els*_*sdy 3 linux text symbols module export

这是System.map和/ proc / kallsyms中文本文件的一部分。

  • ffffffff8106c260 T离开_毫米
  • ffffffff8106c340 t do_flush_tlb_all
  • ffffffff8106c390 t flush_tlb_func
  • ffffffff8106c510 T native_flush_tlb_others
  • ffffffff8106c540 T flush_tlb_current_task
  • ffffffff8106c600 T flush_tlb_mm_range
  • ffffffff8106c770 T flush_tlb_page
  • ffffffff8106c820 T flush_tlb_all
  • ffffffff8106c840 T flush_tlb_kernel_range

“ T”和“ t”有什么区别?我知道T或t用于文本(代码)部分。

我猜想T可以在内核模块中调用,而t不能在内核模块中调用。

让我知道它们的确切含义和区别。

mol*_*ier 5

文件/ proc / kallsyms保存了内核知道的所有符号,因此这些模块可共享,因为它们共享内核的代码空间。

来自man nm

符号值,以选项(请参见下文)选择的基数为单位,或者默认为十六进制。符号类型。至少使用以下类型;其他的也取决于目标文件格式。如果是小写,则该符号通常是局部的;如果为大写,则符号为全局(外部)。但是,对于特殊的全局符号(u,v和w),显示了一些小写符号。

T t符号在文本(代码)部分中。

T 表示该符号是全局可见的,并且可以在其他内核代码中使用。