 5c5e854bc7
			
		
	
	
	5c5e854bc7
	
	
	
		
			
			This patch adds support for the new PERF_RECORD_MMAP2 record type
exposed by the kernel. This is an extended PERF_RECORD_MMAP record.
It adds for each file-backed mapping the device major, minor number and
the inode number and generation.
This triplet uniquely identifies the source of a file-backed mapping. It
can be used to detect identical virtual mappings between processes, for
instance.
The patch will prefer MMAP2 over MMAP.
Signed-off-by: Stephane Eranian <eranian@google.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.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/1377079825-19057-3-git-send-email-eranian@google.com
[ Cope with 314add6 "Change machine__findnew_thread() to set thread pid",
  fix 'perf test' regression test entry affected,
  use perf_missing_features.mmap2 to fallback to not using .mmap2 in older kernels,
  so that new tools can work with kernels where this feature is not present ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
		
	
			
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __PERF_TOOL_H
 | |
| #define __PERF_TOOL_H
 | |
| 
 | |
| #include <stdbool.h>
 | |
| 
 | |
| struct perf_session;
 | |
| union perf_event;
 | |
| struct perf_evlist;
 | |
| struct perf_evsel;
 | |
| struct perf_sample;
 | |
| struct perf_tool;
 | |
| struct machine;
 | |
| 
 | |
| typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event,
 | |
| 			    struct perf_sample *sample,
 | |
| 			    struct perf_evsel *evsel, struct machine *machine);
 | |
| 
 | |
| typedef int (*event_op)(struct perf_tool *tool, union perf_event *event,
 | |
| 			struct perf_sample *sample, struct machine *machine);
 | |
| 
 | |
| typedef int (*event_attr_op)(struct perf_tool *tool,
 | |
| 			     union perf_event *event,
 | |
| 			     struct perf_evlist **pevlist);
 | |
| 
 | |
| typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
 | |
| 			 struct perf_session *session);
 | |
| 
 | |
| struct perf_tool {
 | |
| 	event_sample	sample,
 | |
| 			read;
 | |
| 	event_op	mmap,
 | |
| 			mmap2,
 | |
| 			comm,
 | |
| 			fork,
 | |
| 			exit,
 | |
| 			lost,
 | |
| 			throttle,
 | |
| 			unthrottle;
 | |
| 	event_attr_op	attr;
 | |
| 	event_op2	tracing_data;
 | |
| 	event_op2	finished_round,
 | |
| 			build_id;
 | |
| 	bool		ordered_samples;
 | |
| 	bool		ordering_requires_timestamps;
 | |
| };
 | |
| 
 | |
| #endif /* __PERF_TOOL_H */
 |