aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.c
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2008-12-13 14:18:13 -0500
committerIngo Molnar <mingo@elte.hu>2008-12-16 18:26:36 -0500
commit66896a85cf2890b6bbbc4c9ccdcd296600ffbf89 (patch)
treead6b0a4df65a59280163f5b8ab0b92b2fe54c283 /kernel/trace/trace.c
parent2c2d7329d8afa9efa3ec24e19a53e7be9d14f242 (diff)
tracing/ftrace: add the printk-msg-only option
Impact: display ftrace_printk messages "as is" By default, ftrace_printk() messages find their output with some other informations like pid, caller, ... Sometimes a developer just want to have the ftrace_printk left "as is", without other information. This is done by providing a default-off option called printk-msg-only. To enable it, just do `echo printk-msg-only > /debugfs/tracing/trace_options` Before the patch: <...>-2739 [000] 145.692153: __might_sleep: I'm an ftrace_printk msg in __might_sleep <...>-2739 [000] 145.692155: __might_sleep: I'm another ftrace_printk msg in __might_sleep After the patch and the printk-msg-only option enabled: I'm an ftrace_printk msg in __might_sleep I'm another ftrace_printk msg in __might_sleep Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r--kernel/trace/trace.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 639344a4d3a2..1a3d6b329782 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -287,6 +287,7 @@ static const char *trace_options[] = {
287 "annotate", 287 "annotate",
288 "userstacktrace", 288 "userstacktrace",
289 "sym-userobj", 289 "sym-userobj",
290 "printk-msg-only",
290 NULL 291 NULL
291}; 292};
292 293
@@ -2265,6 +2266,25 @@ static enum print_line_t print_hex_fmt(struct trace_iterator *iter)
2265 return TRACE_TYPE_HANDLED; 2266 return TRACE_TYPE_HANDLED;
2266} 2267}
2267 2268
2269static enum print_line_t print_printk_msg_only(struct trace_iterator *iter)
2270{
2271 struct trace_seq *s = &iter->seq;
2272 struct trace_entry *entry = iter->ent;
2273 struct print_entry *field;
2274 int ret;
2275
2276 trace_assign_type(field, entry);
2277
2278 ret = trace_seq_printf(s, field->buf);
2279 if (!ret)
2280 return TRACE_TYPE_PARTIAL_LINE;
2281
2282 if (entry->flags & TRACE_FLAG_CONT)
2283 trace_seq_print_cont(s, iter);
2284
2285 return TRACE_TYPE_HANDLED;
2286}
2287
2268static enum print_line_t print_bin_fmt(struct trace_iterator *iter) 2288static enum print_line_t print_bin_fmt(struct trace_iterator *iter)
2269{ 2289{
2270 struct trace_seq *s = &iter->seq; 2290 struct trace_seq *s = &iter->seq;
@@ -2345,6 +2365,11 @@ static enum print_line_t print_trace_line(struct trace_iterator *iter)
2345 return ret; 2365 return ret;
2346 } 2366 }
2347 2367
2368 if (iter->ent->type == TRACE_PRINT &&
2369 trace_flags & TRACE_ITER_PRINTK &&
2370 trace_flags & TRACE_ITER_PRINTK_MSGONLY)
2371 return print_printk_msg_only(iter);
2372
2348 if (trace_flags & TRACE_ITER_BIN) 2373 if (trace_flags & TRACE_ITER_BIN)
2349 return print_bin_fmt(iter); 2374 return print_bin_fmt(iter);
2350 2375