我写了一个简单的模块如下:
#include<linux/module.h>
#include<linux/kernel.h>
static int __init own_init(void)
{
printk(KERN_INFO "Hi");
return 0;
}
static int __exit own_exit(void)
{
printk(KERN_INFO "bye");
}
module_init(own_init);
module_exit(own_exit);
MODULE_LICENSE("GPL");
安装此模块后,我希望您好,但不会显示。 但在删除模块时,会显示您好。 当我再次插入时,会显示再见。
所以有一个滞后。
为什么?
答案 0 :(得分:5)
这是因为您在日志消息的末尾忘记了换行符。当内核输出部分消息时(通过将字符串传递给不以换行符结尾的printk()
),日志系统将缓冲文本,直到消息的其余部分到达。另请参阅 - printk()
problems。