什么是内核代码的“__PCPU_ATTRS”中的“section”?

什么是内核代码的“__PCPU_ATTRS”中的“section”?

问题描述:

我在研究Linux Kernel中的代码。特别是,Per-CPU variables什么是内核代码的“__PCPU_ATTRS”中的“section”?

我对following partsection有疑问。

#define __PCPU_ATTRS(sec)      \ 
    __percpu __attribute__((section(PER_CPU_BASE_SECTION sec))) \ 
    PER_CPU_ATTRIBUTES 

通常,我用http://elixir.free-electrons.com/找到变量定义。但有时很难找到真正的。

在这种情况下,什么是sectionhere

在这种特殊情况下section是一个可变属性。这是一个编译器特定的结构,而不是在网站上查找的符号名称。

粗略地说,它只允许人们选择放置物体的确切部分。即,编译器(gcc)通常将生成的对象放在程序的databss部分,但属性section将帮助您自定义该对象。

更全面的解释可以在GCC documentation中找到。