[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