From: Arnaldo Carvalho de Melo <a...@redhat.com>

To reduce the boilerplate of creating and adding a new tracepoint to an
evlist.

Cc: David Ahern <dsah...@gmail.com>
Cc: Frederic Weisbecker <fweis...@gmail.com>
Cc: Jiri Olsa <jo...@redhat.com>
Cc: Mike Galbraith <efa...@gmx.de>
Cc: Namhyung Kim <namhy...@gmail.com>
Cc: Paul Mackerras <pau...@samba.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Stephane Eranian <eran...@google.com>
Link: http://lkml.kernel.org/n/tip-4z90i79gnmsza2czv2dhd...@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
---
 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(-)

diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 76b1202..dec8ced 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -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");
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index ae89686..6a2809f 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -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;
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 3f1fb66..ac98b01 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -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 *
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to