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

Commit f114d6ef authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo
Browse files

perf evlist: Fix splice_list_tail() not setting evlist



Commit d49e4695 ("perf evsel: Add a backpointer to the evlist a
evsel is in") updated perf_evlist__add() but not
perf_evlist__splice_list_tail().

This illustrates that it is better if perf_evlist__splice_list_tail()
calls perf_evlist__add() instead of duplicating the logic, so do that.
This will also simplify a subsequent fix for propagating maps.

Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@intel.com>
Link: http://lkml.kernel.org/r/1441699142-18905-6-git-send-email-adrian.hunter@intel.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent ec9a77a7
Loading
Loading
Loading
Loading
+7 −8
Original line number Original line Diff line number Diff line
@@ -136,15 +136,14 @@ void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry)
}
}


void perf_evlist__splice_list_tail(struct perf_evlist *evlist,
void perf_evlist__splice_list_tail(struct perf_evlist *evlist,
				   struct list_head *list,
				   struct list_head *list)
				   int nr_entries)
{
{
	bool set_id_pos = !evlist->nr_entries;
	struct perf_evsel *evsel, *temp;


	list_splice_tail(list, &evlist->entries);
	__evlist__for_each_safe(list, temp, evsel) {
	evlist->nr_entries += nr_entries;
		list_del_init(&evsel->node);
	if (set_id_pos)
		perf_evlist__add(evlist, evsel);
		perf_evlist__set_id_pos(evlist);
	}
}
}


void __perf_evlist__set_leader(struct list_head *list)
void __perf_evlist__set_leader(struct list_head *list)
@@ -210,7 +209,7 @@ static int perf_evlist__add_attrs(struct perf_evlist *evlist,
		list_add_tail(&evsel->node, &head);
		list_add_tail(&evsel->node, &head);
	}
	}


	perf_evlist__splice_list_tail(evlist, &head, nr_attrs);
	perf_evlist__splice_list_tail(evlist, &head);


	return 0;
	return 0;


+1 −2
Original line number Original line Diff line number Diff line
@@ -179,8 +179,7 @@ bool perf_evlist__valid_sample_id_all(struct perf_evlist *evlist);
bool perf_evlist__valid_read_format(struct perf_evlist *evlist);
bool perf_evlist__valid_read_format(struct perf_evlist *evlist);


void perf_evlist__splice_list_tail(struct perf_evlist *evlist,
void perf_evlist__splice_list_tail(struct perf_evlist *evlist,
				   struct list_head *list,
				   struct list_head *list);
				   int nr_entries);


static inline struct perf_evsel *perf_evlist__first(struct perf_evlist *evlist)
static inline struct perf_evsel *perf_evlist__first(struct perf_evlist *evlist)
{
{
+1 −2
Original line number Original line Diff line number Diff line
@@ -1140,10 +1140,9 @@ int parse_events(struct perf_evlist *evlist, const char *str,
	ret = parse_events__scanner(str, &data, PE_START_EVENTS);
	ret = parse_events__scanner(str, &data, PE_START_EVENTS);
	perf_pmu__parse_cleanup();
	perf_pmu__parse_cleanup();
	if (!ret) {
	if (!ret) {
		int entries = data.idx - evlist->nr_entries;
		struct perf_evsel *last;
		struct perf_evsel *last;


		perf_evlist__splice_list_tail(evlist, &data.list, entries);
		perf_evlist__splice_list_tail(evlist, &data.list);
		evlist->nr_groups += data.nr_groups;
		evlist->nr_groups += data.nr_groups;
		last = perf_evlist__last(evlist);
		last = perf_evlist__last(evlist);
		last->cmdline_group_boundary = true;
		last->cmdline_group_boundary = true;