2017-10-15 4 views
2

私はLinuxカーネルでコードを勉強しています。特に、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/を使用します。しかし時には本当のものを見つけるのは難しいです。

この場合、sectionhereとは何ですか?

答えて

2

この特定のケースでは、sectionは可変属性です。コンパイラ固有の構造であり、サイト上で探すシンボル名ではありません。

大雑把に言えば、オブジェクトを配置する正確なセクションを選択するだけです。つまり、通常コンパイラ(gcc)は、生成されたオブジェクトをプログラムのdataまたはbssセクションに配置しますが、の属性sectionをカスタマイズするのに役立ちます。

さらに詳しい説明はGCC documentationにあります。

関連する問題