Warum können Kernelmodule nicht auf dem Bildschirm drucken?

Warum können Kernelmodule nicht auf dem Bildschirm drucken?

Ich habe gerade gelesen, dass Linux-Kernelmodule nicht auf dem Bildschirm drucken können und daher printfnicht funktionieren. Hat das etwas mit der Interrupt-Behandlung zu tun oder warum ist das so?

Ich erinnere mich, dass ich beim Lernen von C und Assembler etwas printfdavon nicht verwenden konnte, weil die Interrupts deaktiviert waren.

Antwort1

Im Kernel printffunktioniert es nicht, da es nicht implementiert ist! Sie verwendenprintkstattdessen (oder early_printkin sehr frühem Code, bevor die Konsole eingerichtet wird). printkist sehr sorgfältig codiert, sodass es von überall und unter allen Umständen sicher aufgerufen werden kann (insbesondere muss kein Speicher zugewiesen werden). Es implementiert praktisch dieselbe API wie printf, mit dem Zusatz einer Protokollebene, um die Wichtigkeit der gedruckten Nachricht anzuzeigen, und Formatbezeichnern, dienützlich im Kernel.

verwandte Informationen