커널의 네트워크 함수를 모듈에서 사용하려고 하는데요.
글쓴이: linuxcoco / 작성시간: 목, 2004/06/03 - 7:14오후
고수님들 도와 주세요~ ㅜ.ㅜ)/
static inline int ip_local_deliver_finish(struct sk_buff *skb)
int ip_local_deliver(struct sk_buff *skb)
이 두 함수를 EXPORT 해서 모듈에서 사용하려고 합니다.
그래서 함수가 구현되어 있는 곳에 두 함수를
EXPORT_SYMBOL(ip_local_deliver_finish); EXPORT_SYMBOL(ip_local_deliver);
이렇게 export했습니다.
그리구선 Makefile을 찾아서
export-objs = ipip.o ip_gre.o ip_input.o
위와 같이
두 함수가 있는 ip_input.o 화일을 추가했습니다.
그랬더니만
warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL' warning: parameter names (without types) in function declaration warning: data definition has no type or storage class
이와 같은 경고 메시지를 띄우더군요.
그 커널 이미지로 재부팅을 해도 모듈에서 그 함수를 사용할 수 없습니다.
뭐 잘못된건가요?
혹시 모듈에서 절대 불러 쓸수없는 함수들이 있는 건가요?
고수님들의 고견을 좀 부탁드립니다.
Forums:
-_ㅠ
님께서 말씀하신 함수를 보니까 static 이라는 키워드가 붙어있는데요..
간단히 말씀드리자면(사실 복잡한건 몰라서 ㅋㅋㅋ)
저함수를 그대로 쓰시는건 아마 불가능하지 싶고, 함수안의 내용을 필요한
부분만 님의 함수로 그대로 코딩하셔야 될거 같아요.
그대로 코딩하는 과정에서 usercopy문제가 발생할때는 얼마전 올라왔던 글인
get_ds와 set_fs부분을 참조하시면 되구요..
그리고 ip_local_deliver는 <net/ip.h>헤더파일 참조하시면 아무탈없이
사용하실수 있을거에요..
No talking, all action.
답변 감사드립니다.
ip_local_deliver_finish는 님께서 말씀해주신대로 해봐야 겠구요.
ip_local_deliver는 지금 함수가 구현된 곳에다 EXPORT해 놓은 거거든요?
그런데
#include <net/ip.h>가 ip_local_deliver()함수가 구현된 곳에 되어있는데
<net/ip.h>를 참조하라는 말씀은 무슨 말씀인지 이해를 못하구 있어요. ㅜ.ㅜ
이미 netsyms.c에 <net/ip.h>를 include 해놓고 EXPORT도 해보았는데
ksyms에는 함수가 걸려있기는 한데 모듈에서는 unresolved 문제를 겪구 있습니다.
<net/ip.h>를 참조하라는 말씀이... 무엇이오니까~ ㅠ.ㅠ
제발 이글 오늘 밤내로 읽어주셨으면 좋겠습니다. 으흑.
앙... 리눅스..
댓글 달기