커널내에서 전역변수 지정하기
글쓴이: satanjr / 작성시간: 금, 2004/01/30 - 12:26오전
커널내에서 전역변수 하나를 유지를 하려고 합니다.
dev_base와 같이 어디서나 접근가능하며 이를 변경도 가능하게 하려고 합니다.
dev_base변수와 똑 같이 지정해두면 접근이 가능할것 같아서 dev_base함수가 지정된 3가지 파일내에서 아래와 같이 설정해 두었습니다.
EXPORT_SYMBOL(dev_test); (net/netsysms.c) struct net_device *dev_test = NULL; (drivers/net/Space.c) extern struct net_device *dev_test; (include/linux/netdevice.h)
이렇게 컴파일 하고 나서 부팅을 하고 간단한 모듈 프로그래밍을 통해
printk("test_dev : %x\n",dev_test);
이렇게 실행하고자 모듈을 로드 하려고 하면
unresolved symbol dev_test 이런 오류 메세지가 뜹니다.
dev_test가 제대로 노출이 안됐다는 말인거 같아서
System.map내에서 심볼이 노출되어 있는지 확인하면
cat /boot/System.map | grep dev_ test c024554a ? __kstrtab_dev_test c0249e08 ? __ksymtab_dev_test c02592fc D dev_test
이런식으로 등록(?)되어 있는거 같은데..
proc/ksyms 내에서 확인하면
c0259300 dev_base_lock_R5b3f9c07 c02592fc dev_test_R__ver_dev_test c01c5240 dev_close_Rb7e1321a c01c8960 dev_mc_add_R3cb733b5
이런식으로 다른 심볼과 그 형태가 다르게 등록이 되어 있습니다.
이런경우 어느쪽을 찾아봐야 할까요.. 조언 부탁드립니다.
Forums:
댓글 달기