diff options
author | Steven Rostedt <srostedt@redhat.com> | 2012-04-06 00:47:56 +0200 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2012-04-25 13:28:48 +0200 |
commit | aaf045f72335653b24784d6042be8e4aee114403 (patch) | |
tree | 55c11335e23759e56e0a5ae2daf1c31bb9769662 /tools/perf/util/trace-event.h | |
parent | 668fe01f1cea2154da479dd12946eeb53413396e (diff) | |
download | linux-aaf045f72335653b24784d6042be8e4aee114403.tar.gz linux-aaf045f72335653b24784d6042be8e4aee114403.tar.bz2 linux-aaf045f72335653b24784d6042be8e4aee114403.zip |
perf: Have perf use the new libtraceevent.a library
The event parsing code in perf was originally copied from trace-cmd
but never was kept up-to-date with the changes that was done there.
The trace-cmd libtraceevent.a code is much more mature than what is
currently in perf.
This updates the code to use wrappers to handle the calls to the
new event parsing code. The new code requires a handle to be pass
around, which removes the global event variables and allows
more than one event structure to be read from different files
(and different machines).
But perf still has the old global events and the code throughout
perf does not yet have a nice way to pass around a handle.
A global 'pevent' has been made for perf and the old calls have
been created as wrappers to the new event parsing code that uses
the global pevent.
With this change, perf can later incorporate the pevent handle into
the perf structures and allow more than one file to be read and
compared, that contains different events.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Arun Sharma <asharma@fb.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'tools/perf/util/trace-event.h')
-rw-r--r-- | tools/perf/util/trace-event.h | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h index e78ef1e10ee1..112bc2aa72e1 100644 --- a/tools/perf/util/trace-event.h +++ b/tools/perf/util/trace-event.h @@ -2,7 +2,7 @@ #define _PERF_UTIL_TRACE_EVENT_H #include "parse-events.h" -#include "trace-parse-events.h" +#include "event-parse.h" #include "session.h" struct machine; @@ -10,6 +10,54 @@ struct perf_sample; union perf_event; struct thread; +extern int header_page_size_size; +extern int header_page_ts_size; +extern int header_page_data_offset; + +extern bool latency_format; +extern struct pevent *perf_pevent; + +enum { + RINGBUF_TYPE_PADDING = 29, + RINGBUF_TYPE_TIME_EXTEND = 30, + RINGBUF_TYPE_TIME_STAMP = 31, +}; + +#ifndef TS_SHIFT +#define TS_SHIFT 27 +#endif + +int bigendian(void); + +int read_trace_init(int file_bigendian, int host_bigendian); +void print_trace_event(int cpu, void *data, int size); + +void print_event(int cpu, void *data, int size, unsigned long long nsecs, + char *comm); + +int parse_ftrace_file(char *buf, unsigned long size); +int parse_event_file(char *buf, unsigned long size, char *sys); + +struct record *trace_peek_data(int cpu); +struct event_format *trace_find_event(int type); + +unsigned long long +raw_field_value(struct event_format *event, const char *name, void *data); +void *raw_field_ptr(struct event_format *event, const char *name, void *data); + +void parse_proc_kallsyms(char *file, unsigned int size __unused); +void parse_ftrace_printk(char *file, unsigned int size __unused); + +ssize_t trace_report(int fd, bool repipe); + +int trace_parse_common_type(void *data); +int trace_parse_common_pid(void *data); + +struct event_format *trace_find_next_event(struct event_format *event); +unsigned long long read_size(void *ptr, int size); +unsigned long long eval_flag(const char *flag); + +struct record *trace_read_data(int cpu); int read_tracing_data(int fd, struct list_head *pattrs); struct tracing_data { |