什么是内核代码的“__PCPU_ATTRS”中的“section”?
问题描述:
我在研究Linux Kernel中的代码。特别是,Per-CPU variables。什么是内核代码的“__PCPU_ATTRS”中的“section”?
我对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?
答
在这种特殊情况下section
是一个可变属性。这是一个编译器特定的结构,而不是在网站上查找的符号名称。
粗略地说,它只允许人们选择放置物体的确切部分。即,编译器(gcc
)通常将生成的对象放在程序的data
或bss
部分,但属性section
将帮助您自定义该对象。
更全面的解释可以在GCC documentation中找到。