perf evlist: Force perf_evlist__set_maps to propagate maps through events
authorJiri Olsa <jolsa@kernel.org>
Tue, 21 Jul 2015 12:31:30 +0000 (14:31 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 21 Jul 2015 17:25:12 +0000 (14:25 -0300)
Forcing perf_evlist__set_maps to propagate maps through events, so
cpu/thread maps get set within evlist.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
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/1437481927-29538-11-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/evlist.c
tools/perf/util/evlist.h

index f7d9c77ee31b7972069c3265ab8b2e89a143eb80..6bfcab9b7108e65228e7b40c1fc5c280c45531d4 100644 (file)
@@ -1150,6 +1150,23 @@ out_delete_threads:
        return -1;
 }
 
+int perf_evlist__set_maps(struct perf_evlist *evlist,
+                         struct cpu_map *cpus,
+                         struct thread_map *threads)
+{
+       if (evlist->cpus)
+               cpu_map__put(evlist->cpus);
+
+       evlist->cpus = cpus;
+
+       if (evlist->threads)
+               thread_map__put(evlist->threads);
+
+       evlist->threads = threads;
+
+       return perf_evlist__propagate_maps(evlist, false);
+}
+
 int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **err_evsel)
 {
        struct perf_evsel *evsel;
index 037633c1da9d0c42402b908294724f92e6caddc8..406a8216a51e1530027579d688413c4415a662b7 100644 (file)
@@ -152,14 +152,9 @@ int perf_evlist__enable_event_idx(struct perf_evlist *evlist,
 void perf_evlist__set_selected(struct perf_evlist *evlist,
                               struct perf_evsel *evsel);
 
-static inline void perf_evlist__set_maps(struct perf_evlist *evlist,
-                                        struct cpu_map *cpus,
-                                        struct thread_map *threads)
-{
-       evlist->cpus    = cpus;
-       evlist->threads = threads;
-}
-
+int perf_evlist__set_maps(struct perf_evlist *evlist,
+                         struct cpu_map *cpus,
+                         struct thread_map *threads);
 int perf_evlist__create_maps(struct perf_evlist *evlist, struct target *target);
 int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **err_evsel);