2017-10-15 7 views
2

리눅스 커널에서 코드를 연구 중이다. 특히, Per-CPU variables.커널 코드의 "__PCPU_ATTRS"에서 "섹션"은 무엇입니까?

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에서 찾을 수 있습니다.