커널 모듈이 화면에 인쇄할 수 없는 이유는 무엇입니까?

커널 모듈이 화면에 인쇄할 수 없는 이유는 무엇입니까?

방금 Linux 커널 모듈이 화면에 인쇄할 수 없다는 내용을 읽었습니다. 즉, printf작동하지 않습니다. 인터럽트 처리와 관련이 있습니까? 왜 이런 일이 발생합니까?

printfC와 어셈블리 언어를 작업한 기억이 있는데, 인터럽트가 꺼져 있어서 사용할 수 없었습니다 .

답변1

커널에서는 printf구현되지 않아서 작동하지 않습니다! 너는 사용한다printk대신(또는 early_printk아주 초기 코드에서는 콘솔이 설정되기 전). printk어떤 상황에서도 어디서나 안전하게 호출할 수 있도록 매우 주의 깊게 코딩되었습니다(특히 메모리 할당이 필요하지 않습니다). 와 거의 동일한 API를 구현하고 printf인쇄되는 메시지의 중요성을 나타내는 로그 수준과 형식 지정자를 추가합니다.커널에 유용.

관련 정보