内核代码的“__PCPU_ATTRS”中的"section"是什么?
What is "section" in "__PCPU_ATTRS" of kernel code?
我正在研究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是什么?
在这种特殊情况下,section
是一个可变属性。它是特定于编译器的构造,而不是要在站点上查找的符号名称。
粗略地说,它只是允许一个人选择将对象放置在哪个确切的部分。即,通常编译器 (gcc
) 将生成的对象放在程序的 data
或 bss
部分,但是 属性 section
将帮助您自定义它。
可以在GCC documentation中找到更全面的解释。
我正在研究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是什么?
在这种特殊情况下,section
是一个可变属性。它是特定于编译器的构造,而不是要在站点上查找的符号名称。
粗略地说,它只是允许一个人选择将对象放置在哪个确切的部分。即,通常编译器 (gcc
) 将生成的对象放在程序的 data
或 bss
部分,但是 属性 section
将帮助您自定义它。
可以在GCC documentation中找到更全面的解释。