Skip to content

Commit

Permalink
perf tools: Add monitored events array
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jiri Olsa authored and Arnaldo Carvalho de Melo committed Feb 23, 2016
1 parent d392711 commit acbe613
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 8 deletions.
17 changes: 9 additions & 8 deletions tools/perf/builtin-mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "util/tool.h"
#include "util/session.h"
#include "util/data.h"
#include "util/mem-events.h"

#define MEM_OPERATION_LOAD 0x1
#define MEM_OPERATION_STORE 0x2
Expand Down Expand Up @@ -34,20 +35,20 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem)

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++] = "-d";

if (mem->operation & MEM_OPERATION_LOAD) {
rec_argv[i++] = "-e";
rec_argv[i++] = "cpu/mem-loads/pp";
}
for (j = 0; j < PERF_MEM_EVENTS__MAX; j++) {
if (!perf_mem_events[j].record)
continue;

if (mem->operation & MEM_OPERATION_STORE) {
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++)
rec_argv[i] = argv[j];
Expand Down
1 change: 1 addition & 0 deletions tools/perf/util/Build
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ libperf-y += parse-branch-options.o
libperf-y += parse-regs-options.o
libperf-y += term.o
libperf-y += help-unknown-cmd.o
libperf-y += mem-events.o

libperf-$(CONFIG_LIBBPF) += bpf-loader.o
libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o
Expand Down
10 changes: 10 additions & 0 deletions tools/perf/util/mem-events.c
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions tools/perf/util/mem-events.h
Original file line number Diff line number Diff line change
@@ -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 */

0 comments on commit acbe613

Please sign in to comment.