mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	perf tools: Add monitored events array
It will ease up configuration of memory events and addition of other memory events in following patches. Signed-off-by: Jiri Olsa <jolsa@kernel.org> 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/1455525293-8671-5-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
		
							parent
							
								
									d392711095
								
							
						
					
					
						commit
						acbe613e0c
					
				
					 4 changed files with 39 additions and 8 deletions
				
			
		| 
						 | 
					@ -6,6 +6,7 @@
 | 
				
			||||||
#include "util/tool.h"
 | 
					#include "util/tool.h"
 | 
				
			||||||
#include "util/session.h"
 | 
					#include "util/session.h"
 | 
				
			||||||
#include "util/data.h"
 | 
					#include "util/data.h"
 | 
				
			||||||
 | 
					#include "util/mem-events.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MEM_OPERATION_LOAD	0x1
 | 
					#define MEM_OPERATION_LOAD	0x1
 | 
				
			||||||
#define MEM_OPERATION_STORE	0x2
 | 
					#define MEM_OPERATION_STORE	0x2
 | 
				
			||||||
| 
						 | 
					@ -34,20 +35,20 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rec_argv[i++] = "record";
 | 
						rec_argv[i++] = "record";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (mem->operation & MEM_OPERATION_LOAD)
 | 
						if (mem->operation & MEM_OPERATION_LOAD) {
 | 
				
			||||||
 | 
							perf_mem_events[PERF_MEM_EVENTS__LOAD].record = true;
 | 
				
			||||||
		rec_argv[i++] = "-W";
 | 
							rec_argv[i++] = "-W";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rec_argv[i++] = "-d";
 | 
						rec_argv[i++] = "-d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (mem->operation & MEM_OPERATION_LOAD) {
 | 
						for (j = 0; j < PERF_MEM_EVENTS__MAX; j++) {
 | 
				
			||||||
		rec_argv[i++] = "-e";
 | 
							if (!perf_mem_events[j].record)
 | 
				
			||||||
		rec_argv[i++] = "cpu/mem-loads/pp";
 | 
								continue;
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (mem->operation & MEM_OPERATION_STORE) {
 | 
					 | 
				
			||||||
		rec_argv[i++] = "-e";
 | 
							rec_argv[i++] = "-e";
 | 
				
			||||||
		rec_argv[i++] = "cpu/mem-stores/pp";
 | 
							rec_argv[i++] = perf_mem_events[j].name;
 | 
				
			||||||
	}
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (j = 1; j < argc; j++, i++)
 | 
						for (j = 1; j < argc; j++, i++)
 | 
				
			||||||
		rec_argv[i] = argv[j];
 | 
							rec_argv[i] = argv[j];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -82,6 +82,7 @@ libperf-y += parse-branch-options.o
 | 
				
			||||||
libperf-y += parse-regs-options.o
 | 
					libperf-y += parse-regs-options.o
 | 
				
			||||||
libperf-y += term.o
 | 
					libperf-y += term.o
 | 
				
			||||||
libperf-y += help-unknown-cmd.o
 | 
					libperf-y += help-unknown-cmd.o
 | 
				
			||||||
 | 
					libperf-y += mem-events.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libperf-$(CONFIG_LIBBPF) += bpf-loader.o
 | 
					libperf-$(CONFIG_LIBBPF) += bpf-loader.o
 | 
				
			||||||
libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o
 | 
					libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										10
									
								
								tools/perf/util/mem-events.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								tools/perf/util/mem-events.c
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					#include "mem-events.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define E(n) { .name = n }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct perf_mem_event perf_mem_events[PERF_MEM_EVENTS__MAX] = {
 | 
				
			||||||
 | 
						E("cpu/mem-loads,ldlat=30/P"),
 | 
				
			||||||
 | 
						E("cpu/mem-stores/P"),
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef E
 | 
				
			||||||
							
								
								
									
										19
									
								
								tools/perf/util/mem-events.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								tools/perf/util/mem-events.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					#ifndef __PERF_MEM_EVENTS_H
 | 
				
			||||||
 | 
					#define __PERF_MEM_EVENTS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct perf_mem_event {
 | 
				
			||||||
 | 
						bool		record;
 | 
				
			||||||
 | 
						const char	*name;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum {
 | 
				
			||||||
 | 
						PERF_MEM_EVENTS__LOAD,
 | 
				
			||||||
 | 
						PERF_MEM_EVENTS__STORE,
 | 
				
			||||||
 | 
						PERF_MEM_EVENTS__MAX,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern struct perf_mem_event perf_mem_events[PERF_MEM_EVENTS__MAX];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __PERF_MEM_EVENTS_H */
 | 
				
			||||||
		Loading…
	
		Reference in a new issue