안녕하세요. EXPORT_SYMBOL에 대한 질문입니다.
안녕하세요. 현재 network module을 하나 만들고 있습니다.
우선 main module에서
struct list_head main_list;
EXPORT_SYMBOL( main_list );
그리고 init_module함수에서 INIT_LIST_HEAD( &main_list );
이렇게 초기화를 해주었습니다.
그리고 sub_module에서
extern struct list_head main_list;
이렇게 선언을 하였습니다.
그리고 여기서 실제 작업을 할려고 합니다.
문제는 sub_module에서 compile을 하면, 다음과 같은 warnning이 발생합니다.
*** Warning: "main_list" [/home/powerson/sub_module/sub_module.ko] undefined!
그리고 sub_module에서 list에 추가해주는 함수는 다음과 같이 짰습니다.
item은 kmalloc으로 이미 할당된 상태입니다.
void module_add( struct __test *item, struct list_head *list_head )
{
list_add_tail( &(item->list), list_head );
}
현재 list가 제대로 동작은 하고 있습니다. 다만, 자꾸 warning이 나오니 찝찝하네요.
혹시 이러한 문제에 대한 해결책이 있으시면 답변 부탁드립니다. ^^
참고로 kernel은 2.6.15입니다.
그럼 답변 부탁드립니다.
허거덩,..
거꾸로 물어 보아야 겠네염.
왜 EXPORT_SYMBOL( main_list );을 하셨지여?
-----<꼬릿말 절취선 시작>-----
춥다,... 동전사절, 지폐환영.
복 받으실 거야요~
-----<꼬릿말 절취선 끝>-----
-----[꼬릿말 절취선 시작]-----
삽질전에 먼저 구글신께 기도하자.
-----[꼬릿말 절취선 끝]-----
두개는 서로 다른
두개는 서로 다른 모듈이기 때문에 EXPORT_SYMBOL을 사용한 것입니다.
제가 알기론 EXPORT_SYMBOL은 다른 모듈의 함수나 변수를 참조할려고 할 때 EXPORT_SYMBOL을 해주지 않으면,
symbol table에 안 올리기 때문에 참조할 수 없는 걸로 알고 있습니다. 그래서 EXPORT_SYMBOL을
사용한 것입니다.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
댓글 달기