模块延迟打印到内核日志

模块延迟打印到内核日志

我创建了一个基本的 Linux 内核模块,它执行以下操作:

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

而且当然:

module_init(init);

奇怪的是,我通过插入模块后找不到字符串“Banana”

insmod banana_module.ko

命令

dmesg -k | grep Banana

不返回任何内容。

但是,当我卸下模块并再次插入时,我可以找到它。然后我找到了两根香蕉,一根是之前的,一根是当前插入的。这是由于冲洗问题吗?我觉得这种行为有点奇怪,在互联网上找不到类似的问题。

顺便说一句,这种情况发生在我的台式机和笔记本电脑上的虚拟机(没有虚拟机)上。

那么,为什么内核不喜欢香蕉呢?

答案1

我已经弄清楚问题出在哪里:

我没有在内核消息末尾指定结束符 \n 。如果您忽略它,它的行为就像上面描述的那样。原因是,内核消息被视为仅在完成时才打印出来的记录。欲了解更多信息,请参阅此关于 printk 问题的文章

相关内容