diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-03-15 10:04:13 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-03-15 10:10:48 -0400 |
commit | 43adec955edd116c3e98c6e2f85fbd63281f5221 (patch) | |
tree | 9cc67758e4c88e7733d469698995e4561d187630 | |
parent | 1424dc96807909438282663079adc7f27c10b4a5 (diff) |
perf evlist: New command to list the names of events present in a perf.data file
[root@emilia ~]# perf record -a -e sched:* -e timer:timer* sleep 5
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.172 MB perf.data (~7530 samples) ]
[root@emilia ~]# perf evlist
sched:sched_kthread_stop
sched:sched_kthread_stop_ret
sched:sched_wakeup
sched:sched_wakeup_new
sched:sched_switch
sched:sched_migrate_task
sched:sched_process_free
sched:sched_process_exit
sched:sched_wait_task
sched:sched_process_wait
sched:sched_process_fork
sched:sched_stat_wait
sched:sched_stat_sleep
sched:sched_stat_iowait
sched:sched_stat_runtime
sched:sched_pi_setprio
timer:timer_init
timer:timer_start
timer:timer_expire_entry
timer:timer_expire_exit
timer:timer_cancel
[root@emilia ~]#
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/Documentation/perf-evlist.txt | 26 | ||||
-rw-r--r-- | tools/perf/Makefile | 1 | ||||
-rw-r--r-- | tools/perf/builtin-evlist.c | 54 | ||||
-rw-r--r-- | tools/perf/builtin.h | 1 | ||||
-rw-r--r-- | tools/perf/command-list.txt | 1 | ||||
-rw-r--r-- | tools/perf/perf.c | 1 |
6 files changed, 84 insertions, 0 deletions
diff --git a/tools/perf/Documentation/perf-evlist.txt b/tools/perf/Documentation/perf-evlist.txt new file mode 100644 index 000000000000..0cada9e053dc --- /dev/null +++ b/tools/perf/Documentation/perf-evlist.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | perf-evlist(1) | ||
2 | ============== | ||
3 | |||
4 | NAME | ||
5 | ---- | ||
6 | perf-evlist - List the event names in a perf.data file | ||
7 | |||
8 | SYNOPSIS | ||
9 | -------- | ||
10 | [verse] | ||
11 | 'perf evlist <options>' | ||
12 | |||
13 | DESCRIPTION | ||
14 | ----------- | ||
15 | This command displays the names of events sampled in a perf.data file. | ||
16 | |||
17 | OPTIONS | ||
18 | ------- | ||
19 | -i:: | ||
20 | --input=:: | ||
21 | Input file name. (default: perf.data) | ||
22 | |||
23 | SEE ALSO | ||
24 | -------- | ||
25 | linkperf:perf-record[1], linkperf:perf-list[1], | ||
26 | linkperf:perf-report[1] | ||
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 9b8421805c5c..158c30e8210c 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
@@ -338,6 +338,7 @@ endif | |||
338 | BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o | 338 | BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o |
339 | 339 | ||
340 | BUILTIN_OBJS += $(OUTPUT)builtin-diff.o | 340 | BUILTIN_OBJS += $(OUTPUT)builtin-diff.o |
341 | BUILTIN_OBJS += $(OUTPUT)builtin-evlist.o | ||
341 | BUILTIN_OBJS += $(OUTPUT)builtin-help.o | 342 | BUILTIN_OBJS += $(OUTPUT)builtin-help.o |
342 | BUILTIN_OBJS += $(OUTPUT)builtin-sched.o | 343 | BUILTIN_OBJS += $(OUTPUT)builtin-sched.o |
343 | BUILTIN_OBJS += $(OUTPUT)builtin-buildid-list.o | 344 | BUILTIN_OBJS += $(OUTPUT)builtin-buildid-list.o |
diff --git a/tools/perf/builtin-evlist.c b/tools/perf/builtin-evlist.c new file mode 100644 index 000000000000..4c5e9e04a41f --- /dev/null +++ b/tools/perf/builtin-evlist.c | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * Builtin evlist command: Show the list of event selectors present | ||
3 | * in a perf.data file. | ||
4 | */ | ||
5 | #include "builtin.h" | ||
6 | |||
7 | #include "util/util.h" | ||
8 | |||
9 | #include <linux/list.h> | ||
10 | |||
11 | #include "perf.h" | ||
12 | #include "util/evlist.h" | ||
13 | #include "util/evsel.h" | ||
14 | #include "util/parse-events.h" | ||
15 | #include "util/parse-options.h" | ||
16 | #include "util/session.h" | ||
17 | |||
18 | static char const *input_name = "perf.data"; | ||
19 | |||
20 | static int __cmd_evlist(void) | ||
21 | { | ||
22 | struct perf_session *session; | ||
23 | struct perf_evsel *pos; | ||
24 | |||
25 | session = perf_session__new(input_name, O_RDONLY, 0, false, NULL); | ||
26 | if (session == NULL) | ||
27 | return -ENOMEM; | ||
28 | |||
29 | list_for_each_entry(pos, &session->evlist->entries, node) | ||
30 | printf("%s\n", event_name(pos)); | ||
31 | |||
32 | perf_session__delete(session); | ||
33 | return 0; | ||
34 | } | ||
35 | |||
36 | static const char * const evlist_usage[] = { | ||
37 | "perf evlist [<options>]", | ||
38 | NULL | ||
39 | }; | ||
40 | |||
41 | static const struct option options[] = { | ||
42 | OPT_STRING('i', "input", &input_name, "file", | ||
43 | "input file name"), | ||
44 | OPT_END() | ||
45 | }; | ||
46 | |||
47 | int cmd_evlist(int argc, const char **argv, const char *prefix __used) | ||
48 | { | ||
49 | argc = parse_options(argc, argv, options, evlist_usage, 0); | ||
50 | if (argc) | ||
51 | usage_with_options(evlist_usage, options); | ||
52 | |||
53 | return __cmd_evlist(); | ||
54 | } | ||
diff --git a/tools/perf/builtin.h b/tools/perf/builtin.h index c7798c7f24ed..4702e2443a8e 100644 --- a/tools/perf/builtin.h +++ b/tools/perf/builtin.h | |||
@@ -19,6 +19,7 @@ extern int cmd_bench(int argc, const char **argv, const char *prefix); | |||
19 | extern int cmd_buildid_cache(int argc, const char **argv, const char *prefix); | 19 | extern int cmd_buildid_cache(int argc, const char **argv, const char *prefix); |
20 | extern int cmd_buildid_list(int argc, const char **argv, const char *prefix); | 20 | extern int cmd_buildid_list(int argc, const char **argv, const char *prefix); |
21 | extern int cmd_diff(int argc, const char **argv, const char *prefix); | 21 | extern int cmd_diff(int argc, const char **argv, const char *prefix); |
22 | extern int cmd_evlist(int argc, const char **argv, const char *prefix); | ||
22 | extern int cmd_help(int argc, const char **argv, const char *prefix); | 23 | extern int cmd_help(int argc, const char **argv, const char *prefix); |
23 | extern int cmd_sched(int argc, const char **argv, const char *prefix); | 24 | extern int cmd_sched(int argc, const char **argv, const char *prefix); |
24 | extern int cmd_list(int argc, const char **argv, const char *prefix); | 25 | extern int cmd_list(int argc, const char **argv, const char *prefix); |
diff --git a/tools/perf/command-list.txt b/tools/perf/command-list.txt index 16b5088cf8f4..d695fe40fbff 100644 --- a/tools/perf/command-list.txt +++ b/tools/perf/command-list.txt | |||
@@ -8,6 +8,7 @@ perf-bench mainporcelain common | |||
8 | perf-buildid-cache mainporcelain common | 8 | perf-buildid-cache mainporcelain common |
9 | perf-buildid-list mainporcelain common | 9 | perf-buildid-list mainporcelain common |
10 | perf-diff mainporcelain common | 10 | perf-diff mainporcelain common |
11 | perf-evlist mainporcelain common | ||
11 | perf-inject mainporcelain common | 12 | perf-inject mainporcelain common |
12 | perf-list mainporcelain common | 13 | perf-list mainporcelain common |
13 | perf-sched mainporcelain common | 14 | perf-sched mainporcelain common |
diff --git a/tools/perf/perf.c b/tools/perf/perf.c index 595d0f4a7103..ec635b7cc8ea 100644 --- a/tools/perf/perf.c +++ b/tools/perf/perf.c | |||
@@ -313,6 +313,7 @@ static void handle_internal_command(int argc, const char **argv) | |||
313 | { "buildid-cache", cmd_buildid_cache, 0 }, | 313 | { "buildid-cache", cmd_buildid_cache, 0 }, |
314 | { "buildid-list", cmd_buildid_list, 0 }, | 314 | { "buildid-list", cmd_buildid_list, 0 }, |
315 | { "diff", cmd_diff, 0 }, | 315 | { "diff", cmd_diff, 0 }, |
316 | { "evlist", cmd_evlist, 0 }, | ||
316 | { "help", cmd_help, 0 }, | 317 | { "help", cmd_help, 0 }, |
317 | { "list", cmd_list, 0 }, | 318 | { "list", cmd_list, 0 }, |
318 | { "record", cmd_record, 0 }, | 319 | { "record", cmd_record, 0 }, |