본문 바로가기

2010/0611

포인터 개념 포인터란? 메모리의 주소 값을 저장하기 위한 변수이다. 즉 포인터란 기본 자료형 변수와 달리 메모리 공간의 주소 값을 저장하는데 사용되는 변수를 말하는 것이다. 그래서 흔히 포인터가 변수라는것을 강조하기 위해서 '포인터 변수' 라는 표현을 많은 사람들이 포인터와 포인터 변수를 다른 것으로 이해하는 경향이 있는데, 이 둘은 같은 것이다. (이 책에서는 포인터와 포인터 변수라는 표현을 흐름에 적절하게 혼용해서 쓸것이다.) 다시 한번 말하지만 포인터와 포인터 변수는 같은 것이다. - 포인터는 const 키워드에 의해서 상수화 되기도 한다. 그러나 이는 변수가 상수화되는 것이므로 포인터는 변수라는 주장을 해도 틀리지는 않는다고 한다.;; int main(void) { int *a; //a라는 이름의 int형 포.. 2010. 6. 11.
모듈의 상호참조 출처 : 리눅스 커널 프로그래밍 저 한동훈,원일용, 하홍준 / 한빛 미디어 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.