perf mem: Move the mem_operations global to struct perf_mem

Just like the other parameters, grouping it on the builtin-mem specific
config area: struct perf_mem.
Acked-by: default avatarStephane Eranian <eranian@google.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Joe Mario <jmario@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Richard Fowles <rfowles@redhat.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-ad8ns5l51ongemfsir3zy09x@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 67121f85
...@@ -10,21 +10,17 @@ ...@@ -10,21 +10,17 @@
#define MEM_OPERATION_LOAD 0x1 #define MEM_OPERATION_LOAD 0x1
#define MEM_OPERATION_STORE 0x2 #define MEM_OPERATION_STORE 0x2
/*
* default to both load an store sampling
*/
static int mem_operation = MEM_OPERATION_LOAD | MEM_OPERATION_STORE;
struct perf_mem { struct perf_mem {
struct perf_tool tool; struct perf_tool tool;
char const *input_name; char const *input_name;
bool hide_unresolved; bool hide_unresolved;
bool dump_raw; bool dump_raw;
int operation;
const char *cpu_list; const char *cpu_list;
DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
}; };
static int __cmd_record(int argc, const char **argv) static int __cmd_record(int argc, const char **argv, struct perf_mem *mem)
{ {
int rec_argc, i = 0, j; int rec_argc, i = 0, j;
const char **rec_argv; const char **rec_argv;
...@@ -37,17 +33,17 @@ static int __cmd_record(int argc, const char **argv) ...@@ -37,17 +33,17 @@ static int __cmd_record(int argc, const char **argv)
rec_argv[i++] = "record"; rec_argv[i++] = "record";
if (mem_operation & MEM_OPERATION_LOAD) if (mem->operation & MEM_OPERATION_LOAD)
rec_argv[i++] = "-W"; rec_argv[i++] = "-W";
rec_argv[i++] = "-d"; rec_argv[i++] = "-d";
if (mem_operation & MEM_OPERATION_LOAD) { if (mem->operation & MEM_OPERATION_LOAD) {
rec_argv[i++] = "-e"; rec_argv[i++] = "-e";
rec_argv[i++] = "cpu/mem-loads/pp"; rec_argv[i++] = "cpu/mem-loads/pp";
} }
if (mem_operation & MEM_OPERATION_STORE) { if (mem->operation & MEM_OPERATION_STORE) {
rec_argv[i++] = "-e"; rec_argv[i++] = "-e";
rec_argv[i++] = "cpu/mem-stores/pp"; rec_argv[i++] = "cpu/mem-stores/pp";
} }
...@@ -177,7 +173,7 @@ static int report_events(int argc, const char **argv, struct perf_mem *mem) ...@@ -177,7 +173,7 @@ static int report_events(int argc, const char **argv, struct perf_mem *mem)
* there is no weight (cost) associated with stores, so don't print * there is no weight (cost) associated with stores, so don't print
* the column * the column
*/ */
if (!(mem_operation & MEM_OPERATION_LOAD)) if (!(mem->operation & MEM_OPERATION_LOAD))
rep_argv[i++] = "--sort=mem,sym,dso,symbol_daddr," rep_argv[i++] = "--sort=mem,sym,dso,symbol_daddr,"
"dso_daddr,tlb,locked"; "dso_daddr,tlb,locked";
...@@ -273,9 +269,13 @@ int cmd_mem(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -273,9 +269,13 @@ int cmd_mem(int argc, const char **argv, const char *prefix __maybe_unused)
.ordered_events = true, .ordered_events = true,
}, },
.input_name = "perf.data", .input_name = "perf.data",
/*
* default to both load an store sampling
*/
.operation = MEM_OPERATION_LOAD | MEM_OPERATION_STORE,
}; };
const struct option mem_options[] = { const struct option mem_options[] = {
OPT_CALLBACK('t', "type", &mem_operation, OPT_CALLBACK('t', "type", &mem.operation,
"type", "memory operations(load,store) Default load,store", "type", "memory operations(load,store) Default load,store",
parse_mem_ops), parse_mem_ops),
OPT_BOOLEAN('D', "dump-raw-samples", &mem.dump_raw, OPT_BOOLEAN('D', "dump-raw-samples", &mem.dump_raw,
...@@ -302,7 +302,7 @@ int cmd_mem(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -302,7 +302,7 @@ int cmd_mem(int argc, const char **argv, const char *prefix __maybe_unused)
argc = parse_options_subcommand(argc, argv, mem_options, mem_subcommands, argc = parse_options_subcommand(argc, argv, mem_options, mem_subcommands,
mem_usage, PARSE_OPT_STOP_AT_NON_OPTION); mem_usage, PARSE_OPT_STOP_AT_NON_OPTION);
if (!argc || !(strncmp(argv[0], "rec", 3) || mem_operation)) if (!argc || !(strncmp(argv[0], "rec", 3) || mem.operation))
usage_with_options(mem_usage, mem_options); usage_with_options(mem_usage, mem_options);
if (!mem.input_name || !strlen(mem.input_name)) { if (!mem.input_name || !strlen(mem.input_name)) {
...@@ -313,7 +313,7 @@ int cmd_mem(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -313,7 +313,7 @@ int cmd_mem(int argc, const char **argv, const char *prefix __maybe_unused)
} }
if (!strncmp(argv[0], "rec", 3)) if (!strncmp(argv[0], "rec", 3))
return __cmd_record(argc, argv); return __cmd_record(argc, argv, &mem);
else if (!strncmp(argv[0], "rep", 3)) else if (!strncmp(argv[0], "rep", 3))
return report_events(argc, argv, &mem); return report_events(argc, argv, &mem);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment