diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2008-09-29 20:18:34 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-14 10:39:00 +0200 |
commit | 2c4f035f6c3e8fda661eb6105aa51ef07aa71607 (patch) | |
tree | 9bac9e431789f2f551b6b6b2f86463b0b568bf19 /kernel/trace/trace.h | |
parent | 777e208d40d0953efc6fb4ab58590da3f7d8f02d (diff) | |
download | op-kernel-dev-2c4f035f6c3e8fda661eb6105aa51ef07aa71607.zip op-kernel-dev-2c4f035f6c3e8fda661eb6105aa51ef07aa71607.tar.gz |
tracing/ftrace: change the type of the print_line callback
We need a kind of disambiguation when a print_line callback
returns 0.
_There is not enough space to print all the entry.
Please flush the seq and retry.
_I can't handle this type of entry
This patch changes the type of this callback for better information.
Also some changes have been made in this V2.
_ Only relay to default functions after the print_line callback fails.
_ This patch doesn't fix the issue with the broken pipe (see patch 2/4 for that)
Some things are still in discussion:
_ Find better names for the enum print_line_t values
_ Change the type of print_trace_line into boolean.
Patches to change that can be sent later.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Pekka Paalanen <pq@iki.fi>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index e541a6b..a921ba5 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -177,6 +177,14 @@ struct trace_array { struct trace_array_cpu *data[NR_CPUS]; }; + +/* Return values for print_line callback */ +enum print_line_t { + TRACE_TYPE_PARTIAL_LINE = 0, /* Retry after flushing the seq */ + TRACE_TYPE_HANDLED = 1, + TRACE_TYPE_UNHANDLED = 2 /* Relay to other output functions */ +}; + /* * A specific tracer, represented by methods that operate on a trace array: */ @@ -197,7 +205,7 @@ struct tracer { int (*selftest)(struct tracer *trace, struct trace_array *tr); #endif - int (*print_line)(struct trace_iterator *iter); + enum print_line_t (*print_line)(struct trace_iterator *iter); struct tracer *next; int print_max; }; |