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: Jiri Olsa <jolsa@kernel.org> Reviewed-by: Ian Rogers <irogers@google.com> Signed-off-by: Dominique 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: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
25626e19ae
commit
11a4296485
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user