tracing/core: bring back raw trace_printk for dynamic formats strings
authorFrederic Weisbecker <fweisbec@gmail.com>
Thu, 12 Mar 2009 17:24:49 +0000 (18:24 +0100)
committerSteven Rostedt <srostedt@redhat.com>
Fri, 13 Mar 2009 01:15:00 +0000 (21:15 -0400)
commit48ead02030f849d011259244bb4ea9b985479006
tree4500f27dc7eb6567ca79dd03fa94fe9e56fbc316
parentdb526ca329f855510e8ce672332eba3304aed590
tracing/core: bring back raw trace_printk for dynamic formats strings

Impact: fix callsites with dynamic format strings

Since its new binary implementation, trace_printk() internally uses static
containers for the format strings on each callsites. But the value is
assigned once at build time, which means that it can't take dynamic
formats.

So this patch unearthes the raw trace_printk implementation for the callers
that will need trace_printk to be able to carry these dynamic format
strings. The trace_printk() macro will use the appropriate implementation
for each callsite. Most of the time however, the binary implementation will
still be used.

The other impact of this patch is that mmiotrace_printk() will use the old
implementation because it calls the low level trace_vprintk and we can't
guess here whether the format passed in it is dynamic or not.

Some parts of this patch have been written by Steven Rostedt (most notably
the part that chooses the appropriate implementation for each callsites).

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
include/linux/kernel.h
kernel/trace/trace.c
kernel/trace/trace.h
kernel/trace/trace_event_types.h
kernel/trace/trace_functions_graph.c
kernel/trace/trace_mmiotrace.c
kernel/trace/trace_output.c
kernel/trace/trace_printk.c