커널 함수에서 사용되는 출력 함수이다.
printf와의 차이는 메시지 기록관리를 위한 로그레벨을 지정할 수 있다는 것이다.
로그레벨 명령어 의미
"<0>" KERN_EMERG 시스템이 동작하지 않는다.
"<1>" KERN_ALERT 항상 출력
"<2>" KERN_CRIT 치명적인 정보
"<3>" KERN_ERR 오류 정보
"<4>" KERN_WARNING 경고 정보
"<5>" KERN_NOTICE 정상적인 정보
"<6>" KERN_INFO 시스템 정보
"<7>" KERN_DEBUG 디버깅 정보
위처럼 로그레벨을 지정하는 이유는 kernel source 내에서 원하는 정보만 출력할 수 있게 함이다.
사용법은 다음과 같다
printk(KERN_ERR"This is KERN_ERR option\n");
다음 명령을 실행해보면 현재의 로그레벨을 확인 할 수 있다.
$cat /proc/sys/kernel/prink
7 4 1 7
[7] : 현재 로그레벨
이 레벨보다 높은 메시지(숫자가 작은 수)만 출력을 해준다.
[4] : 기본 로그레벨
printk()함수를 입력하면서 별도로 로그레벨을 입력하지 않을 경우
[1] : 최소 로그레벨
부여할 수 있는 최소 로그레벨이다.
이 값이 1이라면 우리가 printk 함수를 입력하면서 0을 부여할 수 없다.
[7] : 부팅시 로그레벨
부팅시 출력될 레벨을 지정해주는 것이다.
출력되지 않았을 경우 다음과 같은 명령어로 로그버퍼에 기록된 내용을 볼 수 있다. (출력되지 않은 메시지도 볼 수 있음)
dmesg
# cat /proc/kmsg
'Embedded Lab > linux, x86' 카테고리의 다른 글
[blktrace2] (0) | 2013.04.08 |
---|---|
[blktrace1] (0) | 2013.04.08 |
[환경변수 삭제] (0) | 2013.04.07 |
[간단한 블록 디바이스 드라이버 모듈(램디스크)] (0) | 2013.04.07 |
[환경변수 삭제] (0) | 2013.03.29 |