본문 바로가기

리눅스 커널

(42)
Device file 해당 글은 아래 사이트를 참조하여 개인적으로 공부한 바를 정리한 글이다. https://sysplay.in/blog/linux-kernel-internals/2015/10/waiting-blocking-in-linux-driver/ 리눅스 커널에서 프로세스를 관리하는 자료구조는 task_struct이며, state라는 멤버를 통해 현재 해당 태스크의 상태정보를 알 수 있다. /* Used in tsk->state: */ #define TASK_RUNNING0 //run 큐 내에 있거나, 실행중 인 상태. #define TASK_INTERRUPTIBLE1 //이벤트를 기다리는 상태, 시그널에 의해 wake up 될 수 있다. #define TASK_UNINTERRUPTIBLE2 //역시 이벤트를 기다리나,..
Kernel module compile 작성한 커널 모듈 소스코드를 컴파일 하는 방법이다. 아래의 Makefile을 참조하면 된다. obj-m 은 모듈 형태로 컴파일 하겠다는 의미로, 컴파일 할 소스코드와 그 이름이 같아야 한다. 커널 소스의 Makefile을 보면 obj-y 가 있는데 이는 obj-m 과 달리 컴파일 할 소스코드를 전체 커널에 합쳐놓은 형태로 컴파일 하겠다는 의미이다. 이어서 PWD 매크로는 현재 작업 디렉토리를 의미하는데, 이 Makefile과 컴파일 할 소스코드를 같이 두도록 해야한다. KDIR 매크로는 현재 사용 중인 커널 소스 디렉터리를 의미한다. build라는 파일은 심볼릭 링크파일이다. 실질적으로 컴파일하는 방법은 default, default1 에 있다. make의 -C 옵션은 man page 설명을 보면 컴파일..