모듈을 커널에 올릴때 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
모듈 프로그래밍 #2  (0) 2013.08.14
모듈 프로그래밍 #1  (0) 2013.08.14
I/O Method  (0) 2013.08.14

+ Recent posts