Thread (78 messages) 78 messages, 3 authors, 2021-11-08
STALE1721d

[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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help