tracing: optimize trace_printk()
Impact: micro-optimization trace_printk() does this unconditionally: trace_printk_fmt = fmt; Where trace_printk_fmt is an entry into a global array. This is very SMP-unfriendly. So only write it once per bootup. Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Peter Zijlstra <peterz@infradead.org> LKML-Reference: <1236356510-8381-5-git-send-email-fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
8a20d84d09
commit
7bffc23e56
|
@ -454,7 +454,10 @@ do { \
|
|||
do { \
|
||||
static const char *trace_printk_fmt \
|
||||
__attribute__((section("__trace_printk_fmt"))); \
|
||||
trace_printk_fmt = fmt; \
|
||||
\
|
||||
if (!trace_printk_fmt) \
|
||||
trace_printk_fmt = fmt; \
|
||||
\
|
||||
__trace_printk_check_format(fmt, ##args); \
|
||||
__trace_printk(_THIS_IP_, trace_printk_fmt, ##args); \
|
||||
} while (0)
|
||||
|
@ -467,7 +470,10 @@ __trace_printk(unsigned long ip, const char *fmt, ...)
|
|||
do { \
|
||||
static const char *trace_printk_fmt \
|
||||
__attribute__((section("__trace_printk_fmt"))); \
|
||||
trace_printk_fmt = fmt; \
|
||||
\
|
||||
if (!trace_printk_fmt) \
|
||||
trace_printk_fmt = fmt; \
|
||||
\
|
||||
__ftrace_vprintk(_THIS_IP_, trace_printk_fmt, vargs); \
|
||||
} while (0)
|
||||
|
||||
|
|
Loading…
Reference in a new issue