프로그래밍/리눅스 드라이버
모듈 프로그래밍 #2
얼땅불땅
2013. 8. 14. 09:39
모듈을 커널에 올릴때 insmod 명령어를 사용한다고 앞 모듈 프로그래밍 #1 문서에서 간략하게 설명했다. (솔직히 부실하다.. 추후 좀더 자세하게 모듈이 커널에 올라가는 원리에 대해서 커널 소스를 분석해서 설명해 봐야 겠다)
insmod 명령어가 실행되면 커널은 해당 모듈의 초기화 함수를 호출한다. 또한 rmmod 로 커널에서 모듈을 삭제시는 모듈 삭제 함수가 호출된다.
초기화 함수, 삭제 함수는 모듈 소스에서
module_init
module_exit
이 두 매크로 함수에 정의해준다. 매크로 함수명을 보면 대충 이해갈수 있겠지만 module_init은 초기화 함수, module_exit는 모듈을 커널에서 삭제시 호출된다.
static int hello_module_init(void) { printk("hi~\n"); return 0; } static int hello_module__exit(void) { printk("I'm exit\n"); } module_init(hello_init); module_exit(hello_exit); |
위와 같은 방법으로 매크로 함수에 init 함수와 exit 함수를 등록한다.