diff options
| author | Stephane Eranian <eranian@google.com> | 2013-01-24 16:10:40 +0100 | 
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-04-01 12:22:00 -0300 | 
| commit | bad4091791b0bb8c2d7919ddefe2f0d109299b5a (patch) | |
| tree | b551d801c52d221b3d0f11037d70272388322797 /tools/perf/util/machine.c | |
| parent | 028f12ee6beff0961781c5ed3f740e5f3b56f781 (diff) | |
| download | olio-linux-3.10-bad4091791b0bb8c2d7919ddefe2f0d109299b5a.tar.xz olio-linux-3.10-bad4091791b0bb8c2d7919ddefe2f0d109299b5a.zip | |
perf machine: Detect data vs. text mappings
Leverages the PERF_RECORD_MISC_MMAP_DATA bit in the RECORD_MMAP record
header. When the bit is set then the mapping type is set to
MAP__VARIABLE.
Signed-off-by: Stephane Eranian <eranian@google.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1359040242-8269-17-git-send-email-eranian@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/machine.c')
| -rw-r--r-- | tools/perf/util/machine.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index d77ba869d7e..b2ecad6ec46 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -955,6 +955,7 @@ int machine__process_mmap_event(struct machine *machine, union perf_event *event  	u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;  	struct thread *thread;  	struct map *map; +	enum map_type type;  	int ret = 0;  	if (dump_trace) @@ -971,10 +972,17 @@ int machine__process_mmap_event(struct machine *machine, union perf_event *event  	thread = machine__findnew_thread(machine, event->mmap.pid);  	if (thread == NULL)  		goto out_problem; + +	if (event->header.misc & PERF_RECORD_MISC_MMAP_DATA) +		type = MAP__VARIABLE; +	else +		type = MAP__FUNCTION; +  	map = map__new(&machine->user_dsos, event->mmap.start,  			event->mmap.len, event->mmap.pgoff,  			event->mmap.pid, event->mmap.filename, -			MAP__FUNCTION); +			type); +  	if (map == NULL)  		goto out_problem; |