한국어
Embedded
 

printk()

makersweb 2014.02.27 12:29 조회 수 : 5154

 

printf()와 유사하지만 커널의 메시지를 출력하고 관리할 수 있는 특성이 있다.

  • 메시지 기록 관리를 위한 로그 레벨의 지정
  • 원형 큐 구조의 관리
  • 출력 디바이스의 다중 지정
  • 콘솔에서 확인하거나 dmesg명령을 이용해서 로그 파일을 확인

로그 레벨 지정

로그 레벨은 printk()함수에 전달되는 문자열의 선두 문자에 "<1>"과 같이 숫자로 등급을 표현한다. linux/kernel.h 에 정의된 선언문을 이용하는 것이 바람직하다.

상수 선언문

의미

#define KERN_EMERG

<0>시스템이 동작하지 않는다.

#define KERN_ALERT

<1>항상 출력된다.

#define KERN_CRIT

<2>치명적인 정보

#define KERN_ERR

<3>오류 정보

#define KERN_WARNING

<4>경고 정보

#define KERN_NOTICE

<5>정상적인 정보

#define KERN_INFO

<6>시스템 정보

#define KERN_DEBUG

<7>디버깅 정보

 

레벨에 대한 표시를 하지 않으면 KERN_WARNING과 같은 레벨이다. 다음의 처리 결과는 모두 같다.

printk(KERN_WARNING"system okn");

printk("<4>""system okn");

printk("<4> system okn");

printk("system okn");

 

원형 큐 구조 관리

커널 메시지는 커널 내부에 있는 원형 큐 형식의 로그 버퍼에 저장된다.

이 로그 버퍼의 크기는 CONFIG_LOG_BUF_SHIFT 값으로 지정된다. 

 (정의된 헤더 include/config/log/buf/shift.h)

로그 버퍼는 일반적으로 콘솔에 출력된다.

 

커널 메시지 관리 데몬

klogd : 커널에서 발생하는 메시지를 기록하고 관리한다.

syslogd : 커널에서 발생하는 메시지와 응용 프로그램에서 요청한 시스템 정보를 기록하고 관리한다.

 

printk()사용 시 주의점

printk()를 과도하게 사용하지 않는다. -> 실행시간이 길다.

개행 문자가 있어야 출력을 시작한다. -> 'n' 을 포함 하도록 한다. 

 

번호 제목 글쓴이 날짜 조회 수
52 Rockchip VOP makersweb 2024.04.22 190
51 Raspberry Pi에서 I²C 그리고 Bit-bang (비트뱅) makersweb 2023.08.27 635
50 Yocto 프로젝트 3.4 릴리스(honister) 이상 버전으로 마이그레이션 시 참고 사항 makersweb 2023.03.21 1140
49 Raspberry Pi 와 ATtiny85 간 I²C 통신 file makersweb 2023.03.18 715
48 로직분석기와 함께 PulseView 를 사용해서 CAN 신호 캡쳐 file makersweb 2023.03.16 697
47 임베디드 개발자를 위한 Hex,Bin,Dec 변환기 유틸 file makersweb 2023.02.27 1195
46 ATtiny85 개발보드(HW-260) file makersweb 2023.01.02 531
45 플랫폼 디바이스 및 디바이스 트리 makersweb 2021.03.20 4071
44 Android 기기를 사용하여 Raspberry Pi SD 카드 작성 방법 file makersweb 2020.08.01 1065
43 Raspberry Pi 의 프레임버퍼(Framebuffer)구성 makersweb 2020.05.15 1997
42 라즈베리파이2에서 RTOS기반 GPIO제어(LED) file makersweb 2020.04.21 1708
41 POSIX를 지원하는 오픈소스 RTOS, RTEMS file makersweb 2020.04.15 1833
40 라즈베리파이 부팅 가능한 sd카드 파티션 생성 makersweb 2020.04.15 1782
39 플랫폼 디바이스 및 드라이버에 대해서 makersweb 2020.02.01 6393
38 디바이스 트리(Device Tree, DT) makersweb 2020.01.12 5660
37 RISC-V : 자유롭고 개방 된 RISC 명령어 세트 아키텍처 [2] file makersweb 2020.01.01 1180
36 임베디드 비대칭 멀티 프로세싱(asymmetric multiprocessing) 시스템 file makersweb 2019.12.31 952
35 임베디드 시스템에서 베어메탈(Bare metal) 이란? makersweb 2019.12.11 3368
34 HelloWorld 커널 모듈과 yocto 레시피 추가 방법 file makersweb 2019.12.09 5672
33 ESP32 블루투스 스피커(A2DP Sink) file makersweb 2019.10.29 3530