땅파서 남주자 오늘은 리눅스 커널에서 사용하는 printk함수의 포맷 문자열에 대해 알아보도록 하겠습니다. 리눅스 커널이 대부분 C언어로 작성되어 있지만 어플리케이션과 다르게 libc를 사용하지 못하기 때문에 라이브러리가 없다고 볼수 있습니다. 단지 커널 이미지 내에 포함된 함수들만 사용 가능하다고 볼 수 있습니다. 하지만 다양한 서브시스템과 유용한 함수들이 이미 잘 작성되어 있으니 차근차근 찾아서 쓰는 재미가 있습니다. printk는 printf와 비슷하지만 차이가 있다면 %f, %e등 실수(floating point)형에 대해 캐스팅을 지원하지 않습니다. 리눅스 커널내에서는 실수에 대한 연산을 여러 이유가 있겠지만 대표적으로 성능상의 이유로 지원하지 않습니다. 거두절미하고 예시부터 먼저 보겠습니다. ..
땅파서 남주자 오늘은 업그레이드한 리눅스 커널 4.10.10의 간단한 'Hello World' 커널 모듈을 만들어 보겠습니다. 왜 맨날 헬로우 월드이냐.. 그건 저도 모르겠습니다. 리눅스 커널은 일부 플랫폼 종속적인 코드를 제외하고는 대부분이 C언어로 구현되어 있습니다. 따라서 커널 모듈을 작성할때도 C언어를 사용하여 구현합니다. 하지만 큰 차이는 당연히 커널모듈이기 때문에 커널모드에서 실행됩니다. 일반 어플케이션 프로그램은 유저모드에서 동작되고 시스템콜을 통해 커널모드에 접근합니다. 그리고 일반 어플리케이션으로 컴파일하면 실행가능한 바이너리 파일이 만들어 지지만, 커널 모듈로 컴파일 하면 오브젝트 파일이 생성되고 이것을 insmod명령으로 커널에 적재시켜서 커널에서 동작 시킵니다. 설명은 간략히 이정도..
- Total
- Today
- Yesterday
- 맥주소
- 수식
- 커널 패치
- 커널프로그래밍
- 맥주소출력
- Linux
- 시그모이드
- patch
- 리눅스 커널
- 버퍼덤프
- Sigmoid
- 커널
- 리눅스커널
- 커널빌드
- printk
- 커널개발
- 웹수식
- Linux Kernel
- Kernel
- 커널 컴파일
- Mathjax
- 커널분석
- 커널컴파일
- 리눅스 patch 명령
- 커널다운로드
- 커널모듈
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |