Por qué printk no imprime el mensaje en el registro del kernel (dmesg)

Escribí un código de módulo de kernel pequeño como se menciona a continuación, lo estoy probando enubuntu 14.04

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

int init_mod_func(void)
{
    printk(KERN_INFO "My module inserted\n ");
    return 0;
}

void cleanup_mod_func(void)
{
    printk(KERN_INFO "My module removed\n ");
}

module_init(init_mod_func);
module_exit(cleanup_mod_func);


MODULE_AUTHOR("Ankur");
MODULE_DESCRIPTION("TEST MODULE");
MODULE_LICENSE("GPL");

Ahora cuando compilo e inserto el módulo anterior usandoinsmod No veo el mensaje printk en el dmesg. Sin embargo, después de la eliminación del módulo utilizandormmod Veo los dos mensajes printk.

Con el aspecto de cierre, descubrí que está sucediendo debido aspace después\n en el printk.
Sin embargo, no entiendo por qué es así.

ankur:~/temp/tmp$ 
ankur:~/temp/tmp$ 
ankur:~/temp/tmp$ sudo dmesg -C /dev/null
ankur:~/temp/tmp$ 
ankur:~/temp/tmp$ 
ankur:~/temp/tmp$ sudo insmod testmod.ko 
ankur:~/temp/tmp$ dmesg
ankur:~/temp/tmp$ 
ankur:~/temp/tmp$ sudo rmmod testmod
ankur:~/temp/tmp$ dmesg
[ 4062.140441] My module inserted
[ 4062.140441]  
[ 4073.324994] My module removed
[ 4073.324994]

Respuestas a la pregunta(1)

Su respuesta a la pregunta