¿Por qué los módulos del kernel no se pueden imprimir en la pantalla?

¿Por qué los módulos del kernel no se pueden imprimir en la pantalla?

Acabo de leer que los módulos del kernel de Linux no se pueden imprimir en la pantalla, es decir, printfno funcionan. ¿Tiene algo que ver con el manejo de interrupciones o por qué es así?

Tengo memoria de haber estudiado algo de C y ensamblador que no se podía usar printfy eso se debía a que las interrupciones estaban desactivadas.

Respuesta1

¡En el kernel, printfno funciona porque no está implementado! Tu usasprintken su lugar (o early_printken código muy temprano, antes de que se configure la consola). printkestá codificado con mucho cuidado para que sea seguro llamar desde cualquier lugar y en cualquier circunstancia (en particular, no necesita asignar memoria). Implementa prácticamente la misma API que printf, con la adición de un nivel de registro para indicar la importancia del mensaje que se imprime y especificadores de formato que sonútil en el núcleo.

información relacionada