모듈이 커널 로그에 대한 인쇄를 지연합니다.

모듈이 커널 로그에 대한 인쇄를 지연합니다.

다음을 수행하는 기본 Linux 커널 모듈을 만들었습니다.

static __init int init(void)
{
  printk(KERN_DEBUG "Banana");
  return 0;
}

그리고 물론:

module_init(init);

이상한 점은 다음을 통해 모듈을 삽입한 후 "Banana" 문자열을 찾을 수 없다는 것입니다.

insmod banana_module.ko

주문하다

dmesg -k | grep Banana

아무것도 반환하지 않습니다.

그런데 모듈을 뺐다가 다시 꽂아보니 찾을 수 있더군요. 그러다가 발견한 바나나는 이전 바나나와 현재 삽입된 바나나 두 개였습니다. 플러시 문제 때문인가요? 나는 이 동작이 약간 이상하다고 생각하며 인터넷에서 비슷한 질문을 찾을 수 없습니다.

그런데, 이 문제는 VM이 ​​있는(VM 없이) 데스크톱과 노트북 모두에서 발생합니다.

그렇다면 왜 커널은 바나나를 좋아하지 않습니까?

답변1

문제가 어디에 있는지 알아냈습니다.

커널 메시지 끝에 종료 문자 \n을 지정하지 않았습니다. 무시하면 위에서 설명한 대로 동작합니다. 그 이유는 커널 메시지가 완료 시에만 인쇄되는 레코드로 처리되기 때문입니다. 자세한 내용은 다음을 참조하세요.printk 문제에 관한 기사

관련 정보