我正在研究Linux内核中的代码。特别是,Per-CPU variables。
我对following part中的section
提出了疑问。
#define __PCPU_ATTRS(sec) \
__percpu __attribute__((section(PER_CPU_BASE_SECTION sec))) \
PER_CPU_ATTRIBUTES
通常,我使用http://elixir.free-electrons.com/
来查找变量定义。但有时候很难找到真正的那个。
在这种情况下,section
here是什么?
答案 0 :(得分:2)
在这种特殊情况下,section
是一个变量属性。它是特定于编译器的构造,而不是在站点上查找的符号名称。
粗略地说,它只允许人们选择放置物体的确切部分。即,通常编译器(gcc
)将生成的对象放在程序的data
或bss
部分中,但属性 section
将有助于你可以自定义它。
可以在GCC documentation中找到更全面的解释。