모듈을 커널에 올릴때 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 함수를 등록한다.
'프로그래밍 > 리눅스 드라이버' 카테고리의 다른 글
쓰레드 동기화(synchronization) (0) | 2013.08.14 |
---|---|
make 간단 설명 (0) | 2013.08.14 |
GCC 옵션 간단하게 정리하기 (0) | 2013.08.14 |
모듈 프로그래밍 #1 (0) | 2013.08.14 |
I/O Method (0) | 2013.08.14 |