printk 관련하여..

zasxer의 이미지

printf 함수와 printk 함수 사이의 차이는 우선순위 플래그에 있습니다.
이 플래그를 통해 syslogd가 커널 메시지를 어느 곳에 표시할지를 결정할 수 잇다.
예를 들어,
printk(KERN_ERR "this is an error!\n");
우선숭위 플래그는 문자형으로 표시된 선처리 지시자로 컴파일 과정에서 출력 메시지와 합쳐진다.

KERN_ERR가 의미하는 게 뭘까요...
그리고 syslogd의 의미가 정확히 이해가 안되는데, syslogd가 어느 곳에 표시할지 결정된다는 말을 이해 못하겠습니다..ㅠ

세벌의 이미지

printk 에 대해 공부하려면 영어에 익숙해져야 할 겁니다.
https://elinux.org/Debugging_by_printing
등을 참고하셔요.

twinwings의 이미지

실제 코드가 있으면 좋을텐데요.

1.
일단 C/C++에서 문자열에 대한 다음의 문법이 유효합니다.

"AAA" "BBB" == "AAABBB".

여기서 합쳐진다는 말이 있으니 해당 키워드는 문자열일 것 같습니다.

2.
syslogd 내부 구현이 다음처럼 되있다는 말 같습니다만....

 if(flag) {printf}
  else {printk}