본문 바로가기

Embedded/Device Driver

Device Driver] 모듈 프로그래밍

※ 모듈의 구현 원리
커널 라이브러리를 객체(.ko)형태로 만들어 시스템콜을 통해 커널에 적재 요청하고,
그 요청에 따라 커널은 해당 객체를 커널에 동적으로 링크하여 사용한다.
이를 구현하기 우해 커널에 심볼 테이블 기능이 추가 됐다.


/proc/ksyms 는 v2.4 의 kernel 소스에서 커널 심볼 테이블이고,
v2.6 kernel에서는
/proc/kallsyms 로 바뀌었다.

※ 모듈 유틸리티
     ㅡ.# insmod <모듈명>.ko
커널에 모듈 추가
     ㅡ.# rmmod <모듈명>
커널에서 모듈 제거
     ㅡ.# lsmod
현재 등록된 모듈을 확인
/proc/modules 파일을 읽어서 모듈 정보를 얻는다. 
     ㅡ.# modprobe 
모듈의 의존성 검사 및 추가, 삭제(-r)
     ㅡ.# depmod 
모듈의 의존성 검사 및 의존성 업데이트

※ 모듈 프로그램의 기본 형태
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
 MODULE_LICENSE("GPL");

 int my_module_start() {
     ...
    return 0;
 }
 
 void my_module_end() {
     ... 
 }
 
 module_init(my_module_start);
 module_exit(my_module_end);