Messages in this thread Patch in this message | | | Subject | [PATCH] printk: Optimize if statement logic where newline exists | From | Steven Rostedt <> | Date | Fri, 29 Jun 2012 11:40:11 -0400 |
| |
In reviewing Kay's fix up patch: "printk: Have printk() never buffer its data", I found two if statements that could be combined and optimized.
Put together the two 'cont.len && cont.owner == current' if statements into a single one, and check if we need to call cont_add(). This also removes the unneeded double cont_flush() calls.
Link: http://lkml.kernel.org/r/1340869133.876.10.camel@mop
Signed-off-by: Steven Rostedt <rostedt@goodmis.org> ---
[ This patch is dependent on Kay's patch, referenced at the above Link ]
Index: linux-trace.git/kernel/printk.c =================================================================== --- linux-trace.git.orig/kernel/printk.c +++ linux-trace.git/kernel/printk.c @@ -1474,15 +1474,14 @@ asmlinkage int vprintk_emit(int facility bool stored = false; /* - * Flush the conflicting buffer. An earlier newline was missing, - * or we race with a continuation line from an interrupt. + * If an earlier newline was missing and it was the same task, + * either merge it with the current buffer and flush, or if + * there was a race with interrupts (prefix == true) then just + * flush it out and store this line separately. */ - if (cont.len && prefix && cont.owner == current) - cont_flush(); - - /* Merge with our buffer if possible; flush it in any case */ if (cont.len && cont.owner == current) { - stored = cont_add(facility, level, text, text_len); + if (!prefix) + stored = cont_add(facility, level, text, text_len); cont_flush(); }
| |