[질문] 정의되지 않은 extern 함수
글쓴이: 태훈 / 작성시간: 수, 2007/08/29 - 11:24오후
리눅스 커널을 분석하고 있습니다. 분석하다가 도저히 이해 안되는 구문이 있네요.
#define per_cpu(var, cpu) (*({ \ extern int simple_identifier_##var(void); \ RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu)); }))
extern int simple_identifier_##var(void); 함수는 정의 된 곳이 없으며, 커널 소스 다른 코드에서 쓰이는 부분도 없더군요. 그런데 왜 저런 코드를 넣어 두었을까요? 함수를 정의하지 않고 extern 선언만 해둔 심볼을 사용하는 경우가 있나요?
Forums:
per_cpu를 사용하는 곳이 있을 겁니다...
냉무~
질문의 요지는...
per_cpu 매크로 안에
루틴을 왜 넣었나? 하는것입니다.
per_cpu는 cpu마다 할당되는 변수에 접근할때 사용하는 매크로입니다. 물론 여기저기 많이 사용되죠.
실제 per_cpu 매크로 안에 위의 루틴을 제거해도 동일한 동작을 합니다. 그런데 왜 저런 루틴을 넣었는지...
Just do it!
댓글 달기