Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2f9f8ea authored by Jiri Olsa's avatar Jiri Olsa Committed by Arnaldo Carvalho de Melo
Browse files

perf tools: Propagate error info for the tracepoint parsing



Pass 'struct parse_events_error *error' to the parse-event.c tracepoint
adding path. It will be filled with error data in following patches.

Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Reviewed-by: default avatarRaphael Beamonte <raphael.beamonte@gmail.com>
Reviewed-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1441615087-13886-4-git-send-email-jolsa@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 01ca9fd4
Loading
Loading
Loading
Loading
+16 −11
Original line number Diff line number Diff line
@@ -387,7 +387,8 @@ int parse_events_add_cache(struct list_head *list, int *idx,
}

static int add_tracepoint(struct list_head *list, int *idx,
			  char *sys_name, char *evt_name)
			  char *sys_name, char *evt_name,
			  struct parse_events_error *error __maybe_unused)
{
	struct perf_evsel *evsel;

@@ -401,7 +402,8 @@ static int add_tracepoint(struct list_head *list, int *idx,
}

static int add_tracepoint_multi_event(struct list_head *list, int *idx,
				      char *sys_name, char *evt_name)
				      char *sys_name, char *evt_name,
				      struct parse_events_error *error)
{
	char evt_path[MAXPATHLEN];
	struct dirent *evt_ent;
@@ -425,7 +427,7 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
		if (!strglobmatch(evt_ent->d_name, evt_name))
			continue;

		ret = add_tracepoint(list, idx, sys_name, evt_ent->d_name);
		ret = add_tracepoint(list, idx, sys_name, evt_ent->d_name, error);
	}

	closedir(evt_dir);
@@ -433,15 +435,17 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
}

static int add_tracepoint_event(struct list_head *list, int *idx,
				char *sys_name, char *evt_name)
				char *sys_name, char *evt_name,
				struct parse_events_error *error)
{
	return strpbrk(evt_name, "*?") ?
	       add_tracepoint_multi_event(list, idx, sys_name, evt_name) :
	       add_tracepoint(list, idx, sys_name, evt_name);
	       add_tracepoint_multi_event(list, idx, sys_name, evt_name, error) :
	       add_tracepoint(list, idx, sys_name, evt_name, error);
}

static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
				    char *sys_name, char *evt_name)
				    char *sys_name, char *evt_name,
				    struct parse_events_error *error)
{
	struct dirent *events_ent;
	DIR *events_dir;
@@ -465,7 +469,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
			continue;

		ret = add_tracepoint_event(list, idx, events_ent->d_name,
					   evt_name);
					   evt_name, error);
	}

	closedir(events_dir);
@@ -473,12 +477,13 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
}

int parse_events_add_tracepoint(struct list_head *list, int *idx,
				char *sys, char *event)
				char *sys, char *event,
				struct parse_events_error *error)
{
	if (strpbrk(sys, "*?"))
		return add_tracepoint_multi_sys(list, idx, sys, event);
		return add_tracepoint_multi_sys(list, idx, sys, event, error);
	else
		return add_tracepoint_event(list, idx, sys, event);
		return add_tracepoint_event(list, idx, sys, event, error);
}

static int
+2 −1
Original line number Diff line number Diff line
@@ -118,7 +118,8 @@ int parse_events__modifier_event(struct list_head *list, char *str, bool add);
int parse_events__modifier_group(struct list_head *list, char *event_mod);
int parse_events_name(struct list_head *list, char *name);
int parse_events_add_tracepoint(struct list_head *list, int *idx,
				char *sys, char *event);
				char *sys, char *event,
				struct parse_events_error *error);
int parse_events_add_numeric(struct parse_events_evlist *data,
			     struct list_head *list,
			     u32 type, u64 config,
+2 −2
Original line number Diff line number Diff line
@@ -376,7 +376,7 @@ PE_NAME '-' PE_NAME ':' PE_NAME
	snprintf(&sys_name, 128, "%s-%s", $1, $3);

	ALLOC_LIST(list);
	ABORT_ON(parse_events_add_tracepoint(list, &data->idx, &sys_name, $5));
	ABORT_ON(parse_events_add_tracepoint(list, &data->idx, &sys_name, $5, data->error));
	$$ = list;
}
|
@@ -386,7 +386,7 @@ PE_NAME ':' PE_NAME
	struct list_head *list;

	ALLOC_LIST(list);
	if (parse_events_add_tracepoint(list, &data->idx, $1, $3)) {
	if (parse_events_add_tracepoint(list, &data->idx, $1, $3, data->error)) {
		struct parse_events_error *error = data->error;

		if (error) {