module é impresso no log do kernel com atraso

2

Eu criei um módulo básico do kernel Linux, que faz o seguinte:

static __init int init(void)
{
  printk(KERN_DEBUG "Banana");
  return 0;
}

E claro:

module_init(init);

Estranhamente, não consigo encontrar a string "Banana" depois de inserir o módulo via

insmod banana_module.ko

O comando

dmesg -k | grep Banana

não retorna nada.

No entanto, posso encontrá-lo quando removo o módulo e o insiro novamente. Então eu encontro duas bananas, a de antes e outra da inserção atual. Isso é devido a problemas de descarga? Acho esse comportamento um pouco estranho e não consegui encontrar um problema semelhante na internet.

Btw, isso acontece tanto na minha máquina virtual na minha área de trabalho quanto no meu laptop (sem uma VM).

Então, por que o kernel não gosta de bananas?

    
por Philipp Murry 13.11.2014 / 00:19

1 resposta

2

Eu descobri qual era o problema:

Eu não especifiquei o caractere final \ n no final da minha mensagem do kernel. Se você deixar de fora, ele se comporta como descrito acima. A razão é que as mensagens do kernel são vistas como registros que são impressos apenas quando concluídos. Para obter mais informações, consulte este artigo sobre problemas no printk

    
por 13.11.2014 / 20:24