aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/parse-events.c
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2022-08-09 11:07:02 +0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2022-08-10 14:30:09 -0300
commit806731a9465b42aaf887cbaf8bfee7eccc9417de (patch)
tree7a1cf71e17d762a0f7dffd5c473b999d20147ff6 /tools/perf/util/parse-events.c
parentperf tests: Fix Track with sched_switch test for hybrid case (diff)
downloadlinux-806731a9465b42aaf887cbaf8bfee7eccc9417de.tar.gz
linux-806731a9465b42aaf887cbaf8bfee7eccc9417de.zip
perf tools: Do not pass NULL to parse_events()
Many cases do not use the extra error information provided by parse_events and instead pass NULL as the struct parse_events_error pointer. Add a wrapper for those cases so that the pointer is never NULL. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20220809080702.6921-4-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/parse-events.c')
-rw-r--r--tools/perf/util/parse-events.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index dfc7d7a0ec4e..f05e15acd33f 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -2240,6 +2240,17 @@ int __parse_events(struct evlist *evlist, const char *str,
return ret;
}
+int parse_event(struct evlist *evlist, const char *str)
+{
+ struct parse_events_error err;
+ int ret;
+
+ parse_events_error__init(&err);
+ ret = parse_events(evlist, str, &err);
+ parse_events_error__exit(&err);
+ return ret;
+}
+
void parse_events_error__init(struct parse_events_error *err)
{
bzero(err, sizeof(*err));
@@ -2256,13 +2267,8 @@ void parse_events_error__exit(struct parse_events_error *err)
void parse_events_error__handle(struct parse_events_error *err, int idx,
char *str, char *help)
{
- if (WARN(!str, "WARNING: failed to provide error string\n"))
- goto out_free;
- if (!err) {
- /* Assume caller does not want message printed */
- pr_debug("event syntax error: %s\n", str);
+ if (WARN(!str || !err, "WARNING: failed to provide error string or struct\n"))
goto out_free;
- }
switch (err->num_errors) {
case 0:
err->idx = idx;