perf evlist: Introduce add_newtp method
Commit-ID: 39876e7dd385e0f0a438ee0ab13cf75a4f5e0e3b Gitweb: http://git.kernel.org/tip/39876e7dd385e0f0a438ee0ab13cf75a4f5e0e3b Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Wed, 3 Oct 2012 11:40:22 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 3 Oct 2012 11:41:22 -0300
perf evlist: Introduce add_newtp method
To reduce the boilerplate of creating and adding a new tracepoint to an evlist.
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-trace.c | 18 +++--------------- tools/perf/util/evlist.c | 14 ++++++++++++++ tools/perf/util/evlist.h | 3 +++ 3 files changed, 20 insertions(+), 15 deletions(-)
tools/perf/builtin-trace.c +3 -15
@@ -200,24 +200,12 @@ static int trace__run(struct trace *trace) goto out; } - evsel =perf_evsel__newtp ("raw_syscalls" ,"sys_enter" ,0 ); -if (evsel ==NULL ) { -printf ("Couldn't read the raw_syscalls:sys_enter tracepoint information!\n" ); +if (perf_evlist__add_newtp (evlist,"raw_syscalls" ,"sys_enter" , trace__sys_enter) || +perf_evlist__add_newtp (evlist,"raw_syscalls" ,"sys_exit" , trace__sys_exit)) { +printf ("Couldn't read the raw_syscalls tracepoints information!\n" ); goto out_delete_evlist; } - evsel->handler.func = trace__sys_enter; -perf_evlist__add (evlist, evsel); - - evsel =perf_evsel__newtp ("raw_syscalls" ,"sys_exit" ,1 ); -if (evsel ==NULL ) { -printf ("Couldn't read the raw_syscalls:sys_exit tracepoint information!\n" ); - goto out_delete_evlist; - } - - evsel->handler.func = trace__sys_exit; -perf_evlist__add (evlist, evsel); - err =perf_evlist__create_maps (evlist, &trace->opts.target);if (err <0 ) {printf ("Problems parsing the target to trace, check your options!\n" );
tools/perf/util/evlist.c +14 -0
@@ -285,6 +285,20 @@ out:return err; } +int perf_evlist__add_newtp (struct perf_evlist *evlist, +const char *sys,const char *name,void *handler) +{ +struct perf_evsel *evsel; + + evsel =perf_evsel__newtp (sys, name, evlist->nr_entries); +if (evsel ==NULL ) +return -1 ; + + evsel->handler.func = handler; +perf_evlist__add (evlist, evsel); +return 0 ; +} +void perf_evlist__disable (struct perf_evlist *evlist) {int cpu, thread;
tools/perf/util/evlist.h +3 -0
@@ -72,6 +72,9 @@ int perf_evlist__set_tracepoints_handlers(struct perf_evlist *evlist,#define perf_evlist__set_tracepoints_handlers_array (evlist, array) \ perf_evlist__set_tracepoints_handlers(evlist, array, ARRAY_SIZE(array)) +int perf_evlist__add_newtp (struct perf_evlist *evlist, +const char *sys,const char *name,void *handler); +int perf_evlist__set_filter (struct perf_evlist *evlist,const char *filter); struct perf_evsel *