Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39876e7d authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

perf evlist: Introduce add_newtp method

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

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-4z90i79gnmsza2czv2dhdrb7@git.kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent de332ac4
Loading
Loading
Loading
Loading
+3 −15
Original line number Diff line number Diff line
@@ -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");
+14 −0
Original line number Diff line number Diff line
@@ -285,6 +285,20 @@ int perf_evlist__set_tracepoints_handlers(struct perf_evlist *evlist,
	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;
+3 −0
Original line number Diff line number Diff line
@@ -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 *