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

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

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

나는 당신이 사용할 수 없는 일부 C와 어셈블리를 공부했던 기억이 있는데 printf그것은 인터럽트가 꺼져 있었기 때문입니다.

답변1

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

관련 정보