커널 함수에서 사용되는 출력 함수이다.

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
Posted by cyj4369
,