perf mem: Add -U/-K (--all-user/--all-kernel) options
authorJiri Olsa <jolsa@kernel.org>
Thu, 24 Mar 2016 12:52:16 +0000 (13:52 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 30 Mar 2016 14:14:07 +0000 (11:14 -0300)
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>
tools/perf/Documentation/perf-mem.txt
tools/perf/builtin-mem.c

index 43310d8..1d6092c 100644 (file)
@@ -48,6 +48,14 @@ OPTIONS
        option can be passed in record mode. It will be interpreted the same way as perf
        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
 --------
 linkperf:perf-record[1], linkperf:perf-report[1]
index 85db3be..1dc140c 100644 (file)
@@ -62,19 +62,22 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem)
        int rec_argc, i = 0, j;
        const char **rec_argv;
        int ret;
+       bool all_user = false, all_kernel = false;
        struct option options[] = {
        OPT_CALLBACK('e', "event", &mem, "event",
                     "event selector. use 'perf mem record -e list' to list available events",
                     parse_record_events),
        OPT_INCR('v', "verbose", &verbose,
                 "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()
        };
 
        argc = parse_options(argc, argv, options, record_mem_usage,
                             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 *));
        if (!rec_argv)
                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);
        };
 
+       if (all_user)
+               rec_argv[i++] = "--all-user";
+
+       if (all_kernel)
+               rec_argv[i++] = "--all-kernel";
+
        for (j = 0; j < argc; j++, i++)
                rec_argv[i] = argv[j];