2015-03-30 3 views
4

Я делаю простую программу 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 


this is a part of my code 

     printk(KERN_ALERT "Enqueue %d \n queue : ", a); 
      rear++; 
       for(i = front; i<rear; i++) 
       printk(KERN_ALERT "%d ", queue_test[i]); 

Короче говоря, я хочу, чтобы напечатать в ядре сообщение в одной строке. но если я использую printk, он автоматически меняет строку. как мне печатать сообщение в одной строке?

+0

Я думаю, вам нужно 'printk (KERN_CONT ...);' или 'pr_cont (...);' зависит от ваших потребностей. Но обычно это плохая идея, означает, что вам нужно переосмыслить то, что вы пытаетесь сделать, и сделать это по-другому. – 0andriy

ответ

4

Чтобы предотвратить новую линию от того начала, используйте KERN_CONT:

printk(KERN_ALERT "self destruction commences in "); 
printk(KERN_CONT "%d", time_remaining); 
printk(KERN_CONT " minutes\n"); 
0

Debugging by printing

printk(KERN_ERR "Doing something was "); 
/* <100 lines of whatever>*/ 
if (success) 
    printk(KERN_CONT "successful\n"); 
else 
    printk(KERN_CONT "NOT successful\n"); 

Logging отпечатки должны быть безопасными: SFP против одного процессора.