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

[PATCH 48/59] perf tools: Add add_breakpoint callback to struct parse_events_ops

From: Jiri Olsa <hidden>
Date: 2021-11-08 13:42:10
Subsystem: performance events subsystem, the rest · Maintainers: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim, Linus Torvalds

Adding add_breakpoint callback to struct parse_events_ops,
to allow custom breakpoint parsing code.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/lib/perf/include/internal/parse-events.h | 4 ++++
 tools/perf/util/parse-events.c                 | 2 ++
 tools/perf/util/parse-events.h                 | 3 ---
 tools/perf/util/parse-events.y                 | 8 ++++----
 4 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/tools/lib/perf/include/internal/parse-events.h b/tools/lib/perf/include/internal/parse-events.h
index bc938cddb3d7..9a30155d628b 100644
--- a/tools/lib/perf/include/internal/parse-events.h
+++ b/tools/lib/perf/include/internal/parse-events.h
@@ -113,6 +113,10 @@ struct parse_events_ops {
 			 char *type, char *op_result1, char *op_result2,
 			 struct parse_events_error *err,
 			 struct list_head *head_config);
+
+	int (*add_breakpoint)(struct parse_events_state *parse_state,
+			      struct list_head *list,
+			      u64 addr, char *type, u64 len);
 };
 
 struct parse_events_state {
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 6bffb67f8c24..0b033c8a852a 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -884,6 +884,7 @@ do {					\
 	return 0;
 }
 
+static
 int parse_events_add_breakpoint(struct parse_events_state *parse_state,
 				struct list_head *list,
 				u64 addr, char *type, u64 len)
@@ -2908,4 +2909,5 @@ static struct parse_events_ops parse_state_ops = {
 	.add_pmu_multi      = parse_events_multi_pmu_add,
 	.add_numeric        = parse_events_add_numeric,
 	.add_cache          = parse_events_add_cache,
+	.add_breakpoint     = parse_events_add_breakpoint,
 };
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index 91c3f5bdf434..6bd3ab01f063 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -82,9 +82,6 @@ int parse_events_load_bpf_obj(struct parse_events_state *parse_state,
 int parse_events_add_tool(struct parse_events_state *parse_state,
 			  struct list_head *list,
 			  int tool_event);
-int parse_events_add_breakpoint(struct parse_events_state *parse_state,
-				struct list_head *list,
-				u64 addr, char *type, u64 len);
 
 struct evsel *parse_events__add_event(struct parse_events_state *parse_state,
 				      struct perf_event_attr *attr,
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 6dcd1e1677e9..1e43e6839278 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -546,7 +546,7 @@ PE_PREFIX_MEM PE_VALUE '/' PE_VALUE ':' PE_MODIFIER_BP sep_dc
 
 	list = alloc_list();
 	ABORT_ON(!list);
-	err = parse_events_add_breakpoint(parse_state, list, $2, $6, $4);
+	err = parse_state->ops->add_breakpoint(parse_state, list, $2, $6, $4);
 	free($6);
 	if (err) {
 		free(list);
@@ -562,7 +562,7 @@ PE_PREFIX_MEM PE_VALUE '/' PE_VALUE sep_dc
 
 	list = alloc_list();
 	ABORT_ON(!list);
-	if (parse_events_add_breakpoint(parse_state, list, $2, NULL, $4)) {
+	if (parse_state->ops->add_breakpoint(parse_state, list, $2, NULL, $4)) {
 		free(list);
 		YYABORT;
 	}
@@ -577,7 +577,7 @@ PE_PREFIX_MEM PE_VALUE ':' PE_MODIFIER_BP sep_dc
 
 	list = alloc_list();
 	ABORT_ON(!list);
-	err = parse_events_add_breakpoint(parse_state, list, $2, $4, 0);
+	err = parse_state->ops->add_breakpoint(parse_state, list, $2, $4, 0);
 	free($4);
 	if (err) {
 		free(list);
@@ -593,7 +593,7 @@ PE_PREFIX_MEM PE_VALUE sep_dc
 
 	list = alloc_list();
 	ABORT_ON(!list);
-	if (parse_events_add_breakpoint(parse_state, list, $2, NULL, 0)) {
+	if (parse_state->ops->add_breakpoint(parse_state, list, $2, NULL, 0)) {
 		free(list);
 		YYABORT;
 	}
-- 
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