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);
// Copyright (C) 2019, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
#include "evswitch.h"
+#include "evlist.h"
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;
+}
#define __PERF_EVSWITCH_H 1
#include <stdbool.h>
+#include <stdio.h>
struct evsel;
+struct evlist;
struct evswitch {
struct evsel *on, *off;
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) \