[PATCH 52/59] perf tools: Add set_leader callback to struct parse_events_ops
From: Jiri Olsa <hidden>
Date: 2021-11-08 13:42:36
Subsystem:
performance events subsystem, the rest · Maintainers:
Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim, Linus Torvalds
Adding add_numeric callback to struct parse_events_ops, to allow custom leader setting in parsing code. Signed-off-by: Jiri Olsa <jolsa@kernel.org> --- tools/lib/perf/include/internal/parse-events.h | 3 +++ tools/perf/util/parse-events.c | 6 ++++-- tools/perf/util/parse-events.h | 2 -- tools/perf/util/parse-events.y | 6 ++++-- 4 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/tools/lib/perf/include/internal/parse-events.h b/tools/lib/perf/include/internal/parse-events.h
index 8a5e3f7d5719..8eb9487a2519 100644
--- a/tools/lib/perf/include/internal/parse-events.h
+++ b/tools/lib/perf/include/internal/parse-events.h@@ -133,6 +133,9 @@ struct parse_events_ops { int (*add_tool)(struct parse_events_state *parse_state, struct list_head *list, int tool_event); + + void (*set_leader)(char *name, struct list_head *list, + struct parse_events_state *parse_state); }; struct parse_events_state {
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index c1ebb114dd41..2c1bc9644c42 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c@@ -1756,8 +1756,9 @@ parse_events__set_leader_for_uncore_aliase(char *name, struct list_head *list, return ret; } -void parse_events__set_leader(char *name, struct list_head *list, - struct parse_events_state *parse_state) +static +void parse_events_set_leader(char *name, struct list_head *list, + struct parse_events_state *parse_state) { struct evsel *leader;
@@ -2922,4 +2923,5 @@ static struct parse_events_ops parse_state_ops = { .add_tracepoint = parse_events_add_tracepoint, .add_bpf = parse_events_load_bpf, .add_tool = parse_events_add_tool, + .set_leader = parse_events_set_leader, };
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index 95fc6f4cd187..c62a2e3a1f34 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h@@ -77,8 +77,6 @@ struct evsel *parse_events__add_event(struct parse_events_state *parse_state, enum perf_pmu_event_symbol_type perf_pmu__parse_check(const char *name); -void parse_events__set_leader(char *name, struct list_head *list, - struct parse_events_state *parse_state); void print_events(const char *event_glob, bool name_only, bool quiet, bool long_desc, bool details_flag, bool deprecated,
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 1d9410605c9f..38d29946fa07 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y@@ -227,20 +227,22 @@ group_def group_def: PE_NAME '{' events '}' { + struct parse_events_state *parse_state = _parse_state; struct list_head *list = $3; inc_group_count(list, _parse_state); - parse_events__set_leader($1, list, _parse_state); + parse_state->ops->set_leader($1, list, parse_state); free($1); $$ = list; } | '{' events '}' { + struct parse_events_state *parse_state = _parse_state; struct list_head *list = $2; inc_group_count(list, _parse_state); - parse_events__set_leader(NULL, list, _parse_state); + parse_state->ops->set_leader(NULL, list, parse_state); $$ = list; }
--
2.31.1