Em Sun, Jul 21, 2019 at 01:24:26PM +0200, Jiri Olsa escreveu: > Adding perf_evlist__add function to add perf_evsel > in perf_evlist struct. > > Link: http://lkml.kernel.org/n/tip-pnfovrqcgxquioroelzfz...@git.kernel.org > Signed-off-by: Jiri Olsa <jo...@kernel.org> > --- > tools/perf/lib/evlist.c | 7 +++++++ > tools/perf/lib/include/perf/evlist.h | 3 +++ > tools/perf/lib/libperf.map | 1 + > tools/perf/util/evlist.c | 2 +- > 4 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/tools/perf/lib/evlist.c b/tools/perf/lib/evlist.c > index fdc8c1894b37..e5f187fa4e57 100644 > --- a/tools/perf/lib/evlist.c > +++ b/tools/perf/lib/evlist.c > @@ -2,8 +2,15 @@ > #include <perf/evlist.h> > #include <linux/list.h> > #include <internal/evlist.h> > +#include <internal/evsel.h> > > void perf_evlist__init(struct perf_evlist *evlist) > { > INIT_LIST_HEAD(&evlist->entries); > } > + > +void perf_evlist__add(struct perf_evlist *evlist, > + struct perf_evsel *evsel) > +{ > + list_add_tail(&evsel->node, &evlist->entries); > +} > diff --git a/tools/perf/lib/include/perf/evlist.h > b/tools/perf/lib/include/perf/evlist.h > index 1ddfcca0bd01..6992568b14a0 100644 > --- a/tools/perf/lib/include/perf/evlist.h > +++ b/tools/perf/lib/include/perf/evlist.h > @@ -5,7 +5,10 @@ > #include <perf/core.h> > > struct perf_evlist; > +struct perf_evsel; > > LIBPERF_API void perf_evlist__init(struct perf_evlist *evlist); > +LIBPERF_API void perf_evlist__add(struct perf_evlist *evlist, > + struct perf_evsel *evsel); > > #endif /* __LIBPERF_EVLIST_H */ > diff --git a/tools/perf/lib/libperf.map b/tools/perf/lib/libperf.map > index 5ca6ff6fcdfa..06ccf31eb24d 100644 > --- a/tools/perf/lib/libperf.map > +++ b/tools/perf/lib/libperf.map > @@ -11,6 +11,7 @@ LIBPERF_0.0.1 { > perf_thread_map__put; > perf_evsel__init; > perf_evlist__init; > + perf_evlist__add; > local: > *; > }; > diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c > index aacddd9b2d64..ea25c7b49a4c 100644 > --- a/tools/perf/util/evlist.c > +++ b/tools/perf/util/evlist.c > @@ -180,8 +180,8 @@ static void perf_evlist__propagate_maps(struct evlist > *evlist) > > void evlist__add(struct evlist *evlist, struct evsel *entry) > { > + perf_evlist__add(&evlist->core, &entry->core); > entry->evlist = evlist; > - list_add_tail(&entry->core.node, &evlist->core.entries); > entry->idx = evlist->nr_entries; > entry->tracking = !entry->idx;
this inversion was ok, it by definition doesn't use entry->evlist, just core stuff. - Arnaldo