perf evswitch: Introduce init() method to set the on/off evsels from the command line
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 124e02be72fdff05ab5d7f004a3c0d4061569380 Gitweb: https://git.kernel.org/tip/124e02be72fdff05ab5d7f004a3c0d4061569380 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 15 Aug 2019 11:31:29 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 15 Aug 2019 12:25:55 -0300
perf evswitch: Introduce init() method to set the on/off evsels from the command line
Another step in having all the boilerplate in just one place to then use in the other tools.
Cc Adrian Hunter <[email protected]>
Cc Florian Weimer <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc William Cohen <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-script.c | 21 +++------------------ tools/perf/util/evswitch.c | 23 +++++++++++++++++++++++ tools/perf/util/evswitch.h | 4 ++++ 3 files changed, 30 insertions(+), 18 deletions(-)
tools/perf/builtin-script.c +3 -18
@@ -3868,24 +3868,9 @@ int cmd_script(int argc, const char **argv) script.range_num); } -if (script.evswitch.on_name) { - script.evswitch.on =perf_evlist__find_evsel_by_str (session->evlist, script.evswitch.on_name); -if (script.evswitch.on ==NULL ) { -fprintf (stderr,"switch-on event not found (%s)\n" , script.evswitch.on_name); - err = -ENOENT ; - goto out_delete; - } - script.evswitch.discarding = true; - } - -if (script.evswitch.off_name) { - script.evswitch.off =perf_evlist__find_evsel_by_str (session->evlist, script.evswitch.off_name); -if (script.evswitch.off ==NULL ) { -fprintf (stderr,"switch-off event not found (%s)\n" , script.evswitch.off_name); - err = -ENOENT ; - goto out_delete; - } - } + err =evswitch__init (&script.evswitch, session->evlist, stderr); +if (err) + goto out_delete; err =__cmd_script (&script);
tools/perf/util/evswitch.c +23 -0
@@ -2,6 +2,7 @@// Copyright (C) 2019, Red Hat Inc, Arnaldo Carvalho de Melo <[email protected]> #include "evswitch.h" +#include "evlist.h" bool evswitch__discard (struct evswitch *evswitch,struct evsel *evsel) {
@@ -29,3 +30,25 @@ bool evswitch__discard(struct evswitch *evswitch, struct evsel *evsel)return false; } + +int evswitch__init (struct evswitch *evswitch,struct evlist *evlist,FILE *fp) +{ +if (evswitch->on_name) { + evswitch->on =perf_evlist__find_evsel_by_str (evlist, evswitch->on_name); +if (evswitch->on ==NULL ) { +fprintf (fp,"switch-on event not found (%s)\n" , evswitch->on_name); +return -ENOENT ; + } + evswitch->discarding = true; + } + +if (evswitch->off_name) { + evswitch->off =perf_evlist__find_evsel_by_str (evlist, evswitch->off_name); +if (evswitch->off ==NULL ) { +fprintf (fp,"switch-off event not found (%s)\n" , evswitch->off_name); +return -ENOENT ; + } + } + +return 0 ; +}
tools/perf/util/evswitch.h +4 -0
@@ -4,8 +4,10 @@#define __PERF_EVSWITCH_H 1#include <stdbool.h> +#include <stdio.h> struct evsel ; +struct evlist ;struct evswitch {struct evsel *on, *off;
@@ -14,6 +16,8 @@ struct evswitch {bool show_on_off_events; }; +int evswitch__init (struct evswitch *evswitch,struct evlist *evlist,FILE *fp); +bool evswitch__discard (struct evswitch *evswitch,struct evsel *evsel);#define OPTS_EVSWITCH (evswitch) \