diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2009-01-10 11:34:13 -0800 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-14 12:11:37 +0100 |
commit | 002bb86d8d42f18937aef396c3ecd65c7e02e21a (patch) | |
tree | ce8e81f6dc2515f6442198bbd4b527d900982f8e /kernel/trace/trace_stat.h | |
parent | a14a07b8018b714e03a39ff2180c66e307ef4238 (diff) | |
download | talos-op-linux-002bb86d8d42f18937aef396c3ecd65c7e02e21a.tar.gz talos-op-linux-002bb86d8d42f18937aef396c3ecd65c7e02e21a.zip |
tracing/ftrace: separate events tracing and stats tracing engine
Impact: tracing's Api change
Currently, the stat tracing depends on the events tracing.
When you switch to a new tracer, the stats files of the previous tracer
will disappear. But it's more scalable to separate those two engines.
This way, we can keep the stat files of one or several tracers when we
want, without bothering of multiple tracer stat files or tracer switching.
To build/destroys its stats files, a tracer just have to call
register_stat_tracer/unregister_stat_tracer everytimes it wants to.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace_stat.h')
-rw-r--r-- | kernel/trace/trace_stat.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/kernel/trace/trace_stat.h b/kernel/trace/trace_stat.h new file mode 100644 index 000000000000..202274cf7f3d --- /dev/null +++ b/kernel/trace/trace_stat.h @@ -0,0 +1,31 @@ +#ifndef __TRACE_STAT_H +#define __TRACE_STAT_H + +#include <linux/seq_file.h> + +/* + * If you want to provide a stat file (one-shot statistics), fill + * an iterator with stat_start/stat_next and a stat_show callbacks. + * The others callbacks are optional. + */ +struct tracer_stat { + /* The name of your stat file */ + const char *name; + /* Iteration over statistic entries */ + void *(*stat_start)(void); + void *(*stat_next)(void *prev, int idx); + /* Compare two entries for stats sorting */ + int (*stat_cmp)(void *p1, void *p2); + /* Print a stat entry */ + int (*stat_show)(struct seq_file *s, void *p); + /* Print the headers of your stat entries */ + int (*stat_headers)(struct seq_file *s); +}; + +/* + * Destroy or create a stat file + */ +extern int register_stat_tracer(struct tracer_stat *trace); +extern void unregister_stat_tracer(struct tracer_stat *trace); + +#endif /* __TRACE_STAT_H */ |