본문 바로가기

linux41

모듈의 상호참조 출처 : 리눅스 커널 프로그래밍 저 한동훈,원일용, 하홍준 / 한빛 미디어 callee 모듈에서 add()와 sub() 함수를 제공하고, caller 모듈에서 add()와 sub() 함수를 호출하는 예제를 작성해보겠습니다. 2.4 커널과 2.6 커널 프로그램의 차이점을 이미 설명했기 떄문에 여기서는 2.6 소스코드만 설명하겟습니다. 2.4.20 이후의 커널이라면 2.6 커널 모듈과 같은 방식을 사용할 수 있기 때문에 2.6 커널 모듈의 소스 코드를 그대로 컴파일해도 됩니다. - 참고 - 2.4.20 이후 버전은 module_init(), module_exit() 매크로를 사용할 수 있으며, init.h 파일도 모듈에 선언할 수 있습니다. 2.4.20 이후 버전과 2.6 버전 모듈의 차이점은 사용할 수 있.. 2010. 6. 3.
모듈에 대해 알아야 할것들 출처 : 리눅스 커널 프로그래밍 저 한동훈,원일용, 하홍준 / 한빛 미디어 모듈과 커널 버전 모듈은 커널 버전과 관련이 많습니다. 커널 버전에 맞춰서 모듈이 빌드되며, 커널의 버전과 모듈의 버전이 일치해야만 이용할 수 있습니다. 커널 소스에서 커널의 버전은 include /linux/version.h에서 확인할 수 있습니다. #define UTS_RELEASE "2.6.14.6" #define LINUX_VERSION_CODE 132622 #define KERNEL_VERSION(a,b,c) (((a) 종류 설명 EXPORT_SYMBOL(var) 심볼을 공개합니다. EXPORT_SYMBOL_NOVERS(var) 심볼을 버전정보 없이 공개합니다. EXPORT_SYMBOL_GPL(var) EXPORT_SYM.. 2010. 6. 3.
Hello 커널 모듈 작성 예제 출처 : 리눅스 커널 프로그래밍 저 한동훈,원일용, 하홍준 / 한빛 미디어 2.4 커널 모듈 hello.c ----------------------------------------------------------------------------------------------------------- #include #include // 초기화 루틴 int __init init_module(void) { printk( KERN_ALERT "[Module Message] Hello, Module.\n"); return 0; } // 종료 루틴 void __exit cleanup_module(void) { printk( KERN_ALERT "[Module Message] Do you really want to.. 2010. 6. 2.
모듈 개발. 출처 : 리눅스 커널 프로그래밍 저 한동훈,원일용, 하홍준 / 한빛 미디어 모듈 개발 절차 1. 모듈프로그램 작성 2. 모듈 프로그램 컴파일 3. 모듈 로드 (insmod 명령 ) 4. 로드된 모듈 확인(lsmod 명령) 5. 모듈 제거(rmmod 명령) 시스템 에 로드된 모듈은 lsmod 명령으로 확인할 수 있으며, insmod명령은 모듈을 커널에 로드할 떄 사용하며, rmmod 명령은 커널에서 모듈을 제거할 때 사용합니다. 모듈 프로그램의 구성 1) 커널, 모듈 프로그램의 구성 2.4 커널 모듈 프로그램 구성 #include - #include - => "헤더파일 선언" // 모듈을 로드할 때 수행되는 초기화 루틴 int __init init_module(void) { . . . . . .// 초기화.. 2010. 6. 1.