Browse Source

perf mem: Add -U/-K (--all-user/--all-kernel) options

Add -U/-K (--all-user/--all-kernel) options to use the perf record
--all-user/--all-kernel options.

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/1458823940-24583-3-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Jiri Olsa 9 years ago
parent
commit
ad16511b0e
2 changed files with 18 additions and 1 deletions
  1. 8 0
      tools/perf/Documentation/perf-mem.txt
  2. 10 1
      tools/perf/builtin-mem.c

+ 8 - 0
tools/perf/Documentation/perf-mem.txt

@@ -48,6 +48,14 @@ OPTIONS
 	option can be passed in record mode. It will be interpreted the same way as perf
 	option can be passed in record mode. It will be interpreted the same way as perf
 	record.
 	record.
 
 
+-K::
+--all-kernel::
+	Configure all used events to run in kernel space.
+
+-U::
+--all-user::
+	Configure all used events to run in user space.
+
 SEE ALSO
 SEE ALSO
 --------
 --------
 linkperf:perf-record[1], linkperf:perf-report[1]
 linkperf:perf-record[1], linkperf:perf-report[1]

+ 10 - 1
tools/perf/builtin-mem.c

@@ -62,19 +62,22 @@ 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;
 	int ret;
 	int ret;
+	bool all_user = false, all_kernel = false;
 	struct option options[] = {
 	struct option options[] = {
 	OPT_CALLBACK('e', "event", &mem, "event",
 	OPT_CALLBACK('e', "event", &mem, "event",
 		     "event selector. use 'perf mem record -e list' to list available events",
 		     "event selector. use 'perf mem record -e list' to list available events",
 		     parse_record_events),
 		     parse_record_events),
 	OPT_INCR('v', "verbose", &verbose,
 	OPT_INCR('v', "verbose", &verbose,
 		 "be more verbose (show counter open errors, etc)"),
 		 "be more verbose (show counter open errors, etc)"),
+	OPT_BOOLEAN('U', "--all-user", &all_user, "collect only user level data"),
+	OPT_BOOLEAN('K', "--all-kernel", &all_kernel, "collect only kernel level data"),
 	OPT_END()
 	OPT_END()
 	};
 	};
 
 
 	argc = parse_options(argc, argv, options, record_mem_usage,
 	argc = parse_options(argc, argv, options, record_mem_usage,
 			     PARSE_OPT_STOP_AT_NON_OPTION);
 			     PARSE_OPT_STOP_AT_NON_OPTION);
 
 
-	rec_argc = argc + 7; /* max number of arguments */
+	rec_argc = argc + 9; /* max number of arguments */
 	rec_argv = calloc(rec_argc + 1, sizeof(char *));
 	rec_argv = calloc(rec_argc + 1, sizeof(char *));
 	if (!rec_argv)
 	if (!rec_argv)
 		return -1;
 		return -1;
@@ -103,6 +106,12 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem)
 		rec_argv[i++] = perf_mem_events__name(j);
 		rec_argv[i++] = perf_mem_events__name(j);
 	};
 	};
 
 
+	if (all_user)
+		rec_argv[i++] = "--all-user";
+
+	if (all_kernel)
+		rec_argv[i++] = "--all-kernel";
+
 	for (j = 0; j < argc; j++, i++)
 	for (j = 0; j < argc; j++, i++)
 		rec_argv[i] = argv[j];
 		rec_argv[i] = argv[j];