소스 검색

perf evlist: Propagate thread maps through the evlist

Propagate evlist's thread_map object through all the evsel objects.

It'll be handy to access evsel's threads directly in following patches.
The reason is there's no link from evsel to evlist which hold threads
map now and evlist is not always available.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1435012588-9007-7-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Jiri Olsa 10 년 전
부모
커밋
578e91ec04
3개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 1
      tools/perf/util/evlist.c
  2. 1 0
      tools/perf/util/evsel.c
  3. 1 0
      tools/perf/util/evsel.h

+ 3 - 1
tools/perf/util/evlist.c

@@ -1117,7 +1117,9 @@ static int perf_evlist__propagate_maps(struct perf_evlist *evlist,
 		if (!evsel->cpus || target->cpu_list)
 		if (!evsel->cpus || target->cpu_list)
 			evsel->cpus = cpu_map__get(evlist->cpus);
 			evsel->cpus = cpu_map__get(evlist->cpus);
 
 
-		if (!evsel->cpus)
+		evsel->threads = thread_map__get(evlist->threads);
+
+		if (!evsel->cpus || !evsel->threads)
 			return -ENOMEM;
 			return -ENOMEM;
 	}
 	}
 
 

+ 1 - 0
tools/perf/util/evsel.c

@@ -886,6 +886,7 @@ void perf_evsel__exit(struct perf_evsel *evsel)
 	perf_evsel__free_id(evsel);
 	perf_evsel__free_id(evsel);
 	close_cgroup(evsel->cgrp);
 	close_cgroup(evsel->cgrp);
 	cpu_map__put(evsel->cpus);
 	cpu_map__put(evsel->cpus);
+	thread_map__put(evsel->threads);
 	zfree(&evsel->group_name);
 	zfree(&evsel->group_name);
 	zfree(&evsel->name);
 	zfree(&evsel->name);
 	perf_evsel__object.fini(evsel);
 	perf_evsel__object.fini(evsel);

+ 1 - 0
tools/perf/util/evsel.h

@@ -82,6 +82,7 @@ struct perf_evsel {
 	struct cgroup_sel	*cgrp;
 	struct cgroup_sel	*cgrp;
 	void			*handler;
 	void			*handler;
 	struct cpu_map		*cpus;
 	struct cpu_map		*cpus;
+	struct thread_map	*threads;
 	unsigned int		sample_size;
 	unsigned int		sample_size;
 	int			id_pos;
 	int			id_pos;
 	int			is_pos;
 	int			is_pos;