Acabo de leer que los módulos del kernel de Linux no se pueden imprimir en la pantalla, es decir, printf
no 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 printf
y eso se debía a que las interrupciones estaban desactivadas.
Respuesta1
¡En el kernel, printf
no funciona porque no está implementado! Tu usasprintk
en su lugar (o early_printk
en código muy temprano, antes de que se configure la consola). printk
está 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.