如何在 Linux 内核中单行打印一条消息
How to print a message in one single line in Linux kernel
我正在内核中制作一个简单的 enque/deque 程序。我想在内核中打印消息,这就是我得到的:
[18594.595747] Enqueue 3
[18594.595748] queue :
[18594.595751] 2
[18594.595751] 1
[18594.595752] 3
但我想在不换行的情况下打印:
[8594.595747] Enqueue 3
[18594.595748] queue : 2 1 3
这是我的代码的一部分:
printk(KERN_ALERT "Enqueue %d \n queue : ", a);
rear++;
for(i = front; i<rear; i++)
printk(KERN_ALERT "%d ", queue_test[i]);
简而言之,我想在内核中一行打印一条消息。但是如果我使用 printk,它会自动换行。如何在一行中打印一条消息?
要防止开始换行,请使用 KERN_CONT
:
printk(KERN_ALERT "self destruction commences in ");
printk(KERN_CONT "%d", time_remaining);
printk(KERN_CONT " minutes\n");
printk(KERN_ERR "Doing something was ");
/* <100 lines of whatever>*/
if (success)
printk(KERN_CONT "successful\n");
else
printk(KERN_CONT "NOT successful\n");
记录打印应该是安全的:SFP vs 单一 CPU。
我正在内核中制作一个简单的 enque/deque 程序。我想在内核中打印消息,这就是我得到的:
[18594.595747] Enqueue 3
[18594.595748] queue :
[18594.595751] 2
[18594.595751] 1
[18594.595752] 3
但我想在不换行的情况下打印:
[8594.595747] Enqueue 3
[18594.595748] queue : 2 1 3
这是我的代码的一部分:
printk(KERN_ALERT "Enqueue %d \n queue : ", a);
rear++;
for(i = front; i<rear; i++)
printk(KERN_ALERT "%d ", queue_test[i]);
简而言之,我想在内核中一行打印一条消息。但是如果我使用 printk,它会自动换行。如何在一行中打印一条消息?
要防止开始换行,请使用 KERN_CONT
:
printk(KERN_ALERT "self destruction commences in ");
printk(KERN_CONT "%d", time_remaining);
printk(KERN_CONT " minutes\n");
printk(KERN_ERR "Doing something was ");
/* <100 lines of whatever>*/
if (success)
printk(KERN_CONT "successful\n");
else
printk(KERN_CONT "NOT successful\n");
记录打印应该是安全的:SFP vs 单一 CPU。