Commit 11a42964 authored by Dominique Martinet's avatar Dominique Martinet Committed by Arnaldo Carvalho de Melo
Browse files

perf parse-events: pass parse_state to add_tracepoint



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: default avatarJiri Olsa <jolsa@kernel.org>
Reviewed-by: default avatarIan Rogers <irogers@google.com>
Signed-off-by: default avatarDominique 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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 25626e19
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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);