네트워크 초기화 부분인데 이 함수가 가리키는 부분이 어딘지 모
글쓴이: blue39 / 작성시간: 화, 2003/08/26 - 9:22오후
아래 코드는 리눅스 커널 2.6.0-test2 버전 init시에 호출되는 do_basic_set
up() 함수에서 호출되는 네트워크를 초기화하는 do_initcalls()입니다.
extern initcall_t __initcall_start, __initcall_end; static void __init do_initcalls(void) { initcall_t *call; int count = preempt_count(); for (call = &__initcall_start; call < &__initcall_end; call++) char *msg; if (initcall_debug) printk("calling initcall 0x%p\n", *call); (*call)();
다른게 아니라 이 함수 내부의 initcall_t *call에 __initcall_start의 포인터를
할당해서 마지막으로 (*call)()의 형식으로 가상 함수를 호출하고 있습니다. 그
런데 제 생각으로는 이 부분이 각 프로토콜 패밀리들에 대한 각 가상함수들을
초기화하고 연결하는 부분이라 생각하는데 도무지 저 initcall_t 타입의 변수를
찾아가봐도 적당한 값이 없더군요. 단지 init.h 파일에 typedef int (*initcall_t)(void);
extern initcall_t __initcall_start, __initcall_end;
이렇게 정의만 되어있고 어떤 값으로 초기화가 되어있는지 영 못찾겠네요
저 __initcall_start 부분이 어떤 부분으로 연결이 되는지, 이 부분이 어떻게 초
기화가 되는지 아시는 분 답변 좀 부탁드립니다.
그럼 항상 행복하시구요~~
Forums:
댓글 달기