我正在研究我的第一个内核模块。我在“Linux内核模块编程指南”中完成了一些练习,但这是我的第一篇没有任何指导的练习。
当我使用printk或pr_err宏打印消息时,在我打印另一条消息之前,它没有赶上。
例如
int init_module()
{
pr_err("This is a message");
}
void cleanup_module()
{
pr_err("this is a second message");
}
如果我insmod这个模块,journalctl什么都不会显示。当我rmmod journalctl将显示两个消息,时间戳将是相同的。
如果我insmod这个模块然后insmod另一个打印两个消息的模块将在我insmod第二个模块后显示。两条消息的时间戳都相同。
答案 0 :(得分:0)
如果printk
的消息不包含换行符号,则其输出可能会延迟。
通常,你需要
pr_err("This is a message\n");
有时,使用KERN_INFO
或KERN_ALERT
也会强制立即输出消息。但终止\n
的方法似乎更清楚。
取自this question的答案。