perf parse-events: pass parse_state to add_tracepoint
authorDominique Martinet <asmadeus@codewreck.org>
Thu, 9 May 2024 22:24:30 +0000 (07:24 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 10 May 2024 13:49:09 +0000 (10:49 -0300)
The next patch will add another flag to parse_state that we will want to
pass to evsel__newtp_idx(), so pass the whole parse_state all the way
down instead of giving only the index

Originally-by: Jiri Olsa <jolsa@kernel.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240510-perf_digit-v4-1-db1553f3233b@codewreck.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/parse-events.c
tools/perf/util/parse-events.h
tools/perf/util/parse-events.y

index 2b9ede311c3182cb88b9f7aede7df920f134a389..e6a2a80b02dffc6040885a93bc66087d74f40509 100644 (file)
@@ -543,13 +543,14 @@ static void tracepoint_error(struct parse_events_error *e, int err,
        parse_events_error__handle(e, column, strdup(str), strdup(help));
 }
 
-static int add_tracepoint(struct list_head *list, int *idx,
+static int add_tracepoint(struct parse_events_state *parse_state,
+                         struct list_head *list,
                          const char *sys_name, const char *evt_name,
                          struct parse_events_error *err,
                          struct parse_events_terms *head_config, void *loc_)
 {
        YYLTYPE *loc = loc_;
-       struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, (*idx)++);
+       struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, parse_state->idx++);
 
        if (IS_ERR(evsel)) {
                tracepoint_error(err, PTR_ERR(evsel), sys_name, evt_name, loc->first_column);
@@ -568,7 +569,8 @@ static int add_tracepoint(struct list_head *list, int *idx,
        return 0;
 }
 
-static int add_tracepoint_multi_event(struct list_head *list, int *idx,
+static int add_tracepoint_multi_event(struct parse_events_state *parse_state,
+                                     struct list_head *list,
                                      const char *sys_name, const char *evt_name,
                                      struct parse_events_error *err,
                                      struct parse_events_terms *head_config, YYLTYPE *loc)
@@ -602,7 +604,7 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
 
                found++;
 
-               ret = add_tracepoint(list, idx, sys_name, evt_ent->d_name,
+               ret = add_tracepoint(parse_state, list, sys_name, evt_ent->d_name,
                                     err, head_config, loc);
        }
 
@@ -616,19 +618,21 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
        return ret;
 }
 
-static int add_tracepoint_event(struct list_head *list, int *idx,
+static int add_tracepoint_event(struct parse_events_state *parse_state,
+                               struct list_head *list,
                                const char *sys_name, const char *evt_name,
                                struct parse_events_error *err,
                                struct parse_events_terms *head_config, YYLTYPE *loc)
 {
        return strpbrk(evt_name, "*?") ?
-               add_tracepoint_multi_event(list, idx, sys_name, evt_name,
+               add_tracepoint_multi_event(parse_state, list, sys_name, evt_name,
                                           err, head_config, loc) :
-               add_tracepoint(list, idx, sys_name, evt_name,
+               add_tracepoint(parse_state, list, sys_name, evt_name,
                               err, head_config, loc);
 }
 
-static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
+static int add_tracepoint_multi_sys(struct parse_events_state *parse_state,
+                                   struct list_head *list,
                                    const char *sys_name, const char *evt_name,
                                    struct parse_events_error *err,
                                    struct parse_events_terms *head_config, YYLTYPE *loc)
@@ -654,7 +658,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
                if (!strglobmatch(events_ent->d_name, sys_name))
                        continue;
 
-               ret = add_tracepoint_event(list, idx, events_ent->d_name,
+               ret = add_tracepoint_event(parse_state, list, events_ent->d_name,
                                           evt_name, err, head_config, loc);
        }
 
@@ -1291,7 +1295,8 @@ static int get_config_chgs(struct perf_pmu *pmu, struct parse_events_terms *head
        return 0;
 }
 
-int parse_events_add_tracepoint(struct list_head *list, int *idx,
+int parse_events_add_tracepoint(struct parse_events_state *parse_state,
+                               struct list_head *list,
                                const char *sys, const char *event,
                                struct parse_events_error *err,
                                struct parse_events_terms *head_config, void *loc_)
@@ -1307,14 +1312,14 @@ int parse_events_add_tracepoint(struct list_head *list, int *idx,
        }
 
        if (strpbrk(sys, "*?"))
-               return add_tracepoint_multi_sys(list, idx, sys, event,
+               return add_tracepoint_multi_sys(parse_state, list, sys, event,
                                                err, head_config, loc);
        else
-               return add_tracepoint_event(list, idx, sys, event,
+               return add_tracepoint_event(parse_state, list, sys, event,
                                            err, head_config, loc);
 #else
+       (void)parse_state;
        (void)list;
-       (void)idx;
        (void)sys;
        (void)event;
        (void)head_config;
index e7ac1f13376df5efb5a2e2b19ad5f94eaa8afb77..c06984bd3af8394c6b2f6a0b031b1d5ac011a9a0 100644 (file)
@@ -208,7 +208,8 @@ int parse_events__modifier_event(struct parse_events_state *parse_state, void *l
 int parse_events__modifier_group(struct parse_events_state *parse_state, void *loc,
                                 struct list_head *list, struct parse_events_modifier mod);
 int parse_events__set_default_name(struct list_head *list, char *name);
-int parse_events_add_tracepoint(struct list_head *list, int *idx,
+int parse_events_add_tracepoint(struct parse_events_state *parse_state,
+                               struct list_head *list,
                                const char *sys, const char *event,
                                struct parse_events_error *error,
                                struct parse_events_terms *head_config, void *loc);
index 68b3b06c7ff06b2757069bb1fcc056508666247f..c94a3994177e640efc584ef42e66c54deb78d3f0 100644 (file)
@@ -497,7 +497,7 @@ tracepoint_name opt_event_config
        if (!list)
                YYNOMEM;
 
-       err = parse_events_add_tracepoint(list, &parse_state->idx, $1.sys, $1.event,
+       err = parse_events_add_tracepoint(parse_state, list, $1.sys, $1.event,
                                        error, $2, &@1);
 
        parse_events_terms__delete($2);