Não obtendo saída após o dmesg

0

Eu sou um iniciante. Eu escrevi um módulo hello world (na verdade copiei do livro o'Reilly). o código é:

#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
    printk(KERN_ALERT "\nHello World");
    return 0;
}

static void hello_exit(void)
{
    printk(KERN_ALERT "\nGood bye");
}

module_init(hello_init);
module_exit(hello_exit);

Então, quando eu inserir o módulo, o dmesg nothig aparecerá. Mas quando eu removê-lo e, em seguida, dmesg, eu posso ver

Hello World

Good Bye
    
por akshay 12.03.2014 / 15:13

1 resposta

2

Isso ocorre porque o buffer não é limpo quando você imprime "\ nOlá mundo" e o apaga quando, finalmente, você remove o módulo.

Para limpar o buffer deliberadamente, em vez disso, imprima

Hello world\n

e da mesma forma,

Good bye\n

Observe a nova linha \n no final de cada instrução printk .

Consulte esta pergunta do SO para saber por que uma nova linha é necessária:

por jobin 13.03.2014 / 07:59