한국어
Embedded
 

printk()

makersweb 2014.02.27 12:29 조회 수 : 5157

 

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' 을 포함 하도록 한다. 

 

번호 제목 글쓴이 날짜 조회 수
32 ESP-IDF 의 A2DP리뷰 (ESP32) file makersweb 2019.10.28 9563
31 임베디드 리눅스 부팅 절차 file makersweb 2019.10.21 6328
30 mainline 커널 및 etnaviv 를 사용하는 Wandboard(Freescale i.MX6Q)에서 eglfs를 사용 makersweb 2019.10.17 953
29 Yocto를 이용한 wandboard BSP 및 Qt5 SDK 빌드 file makersweb 2019.09.29 2654
28 STM32 & LibOpenCM3, printf함수사용 file makersweb 2019.08.08 3137
27 STM32(Cortex-M3) LED Blink with PlatformIO file makersweb 2019.08.05 2058
26 블루투스(Bluetooth) 기초 file makersweb 2019.08.02 4991
25 STM32(Cortex-M3) 개발환경구축 with PlatformIO file makersweb 2019.07.26 4051
24 STM32(Cortex-M3) 개발 - Firmware Flashing file makersweb 2019.07.23 3196
23 libopencm3 활용, Cortex-M 펌웨어 개발 makersweb 2019.07.14 1103
22 yocto의 몇가지 중요한 용어 및 개념 makersweb 2019.06.21 4030
21 라즈베리파이3와 PC간 Serial 통신 테스트 [1] file makersweb 2019.05.20 6420
20 욕토 프로젝트를 이용한 Qt SDK 빌드 for 라즈베리파이3 file makersweb 2019.03.19 3079
19 yocto project, 라즈베리파이를 위한 Qt + 임베디드리눅스 빌드 file makersweb 2019.02.01 11069
18 STM32(Cortex-M3) 개발환경구축 with Eclipse file makersweb 2018.11.08 3618
17 STM32와 CAN(Controller Area Network) Loop Back file makersweb 2017.01.23 5457
16 윈도우10에서 Prolific USB to Serial 드라이버 인식문제 file makersweb 2016.01.24 22839
15 AVRISP mkII 펌웨어 업그레이드 file makersweb 2015.07.22 6945
14 이클립스에서 IAR프로젝트 사용방법 file makersweb 2015.07.09 8791
13 JFlashARM으로 MCU에 bin(바이너리)다운로드 file makersweb 2015.06.07 4320