diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-02-17 12:38:58 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-02-17 12:38:58 -0500 |
commit | 668b8788f497b2386402daeca583d6300240d41d (patch) | |
tree | 7e931ce5240c6a13b29510a854f90f07dc4629c5 /tools/perf/builtin-list.c | |
parent | 74cfc17dc1a69c37ce6c8a76c1ce84bcb796eb0e (diff) |
perf list: Allow filtering list of events
The man page has the details, here are some examples:
[root@emilia ~]# perf list *fault* *:*wait*
List of pre-defined events (to be used in -e):
page-faults OR faults [Software event]
minor-faults [Software event]
major-faults [Software event]
alignment-faults [Software event]
emulation-faults [Software event]
radeon:radeon_fence_wait_begin [Tracepoint event]
radeon:radeon_fence_wait_end [Tracepoint event]
writeback:wbc_writeback_wait [Tracepoint event]
writeback:wbc_balance_dirty_wait [Tracepoint event]
writeback:writeback_congestion_wait [Tracepoint event]
writeback:writeback_wait_iff_congested [Tracepoint event]
sched:sched_wait_task [Tracepoint event]
sched:sched_process_wait [Tracepoint event]
sched:sched_stat_wait [Tracepoint event]
sched:sched_stat_iowait [Tracepoint event]
syscalls:sys_enter_epoll_wait [Tracepoint event]
syscalls:sys_exit_epoll_wait [Tracepoint event]
syscalls:sys_enter_epoll_pwait [Tracepoint event]
syscalls:sys_exit_epoll_pwait [Tracepoint event]
syscalls:sys_enter_rt_sigtimedwait [Tracepoint event]
syscalls:sys_exit_rt_sigtimedwait [Tracepoint event]
syscalls:sys_enter_waitid [Tracepoint event]
syscalls:sys_exit_waitid [Tracepoint event]
syscalls:sys_enter_wait4 [Tracepoint event]
syscalls:sys_exit_wait4 [Tracepoint event]
syscalls:sys_enter_waitpid [Tracepoint event]
syscalls:sys_exit_waitpid [Tracepoint event]
[root@emilia ~]#
Suggested-by: Ingo Molnar <mingo@elte.hu>
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>
Diffstat (limited to 'tools/perf/builtin-list.c')
-rw-r--r-- | tools/perf/builtin-list.c | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c index d88c6961274c..6313b6eb3ebb 100644 --- a/tools/perf/builtin-list.c +++ b/tools/perf/builtin-list.c | |||
@@ -5,6 +5,7 @@ | |||
5 | * | 5 | * |
6 | * Copyright (C) 2009, Thomas Gleixner <tglx@linutronix.de> | 6 | * Copyright (C) 2009, Thomas Gleixner <tglx@linutronix.de> |
7 | * Copyright (C) 2008-2009, Red Hat Inc, Ingo Molnar <mingo@redhat.com> | 7 | * Copyright (C) 2008-2009, Red Hat Inc, Ingo Molnar <mingo@redhat.com> |
8 | * Copyright (C) 2011, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com> | ||
8 | */ | 9 | */ |
9 | #include "builtin.h" | 10 | #include "builtin.h" |
10 | 11 | ||
@@ -13,9 +14,47 @@ | |||
13 | #include "util/parse-events.h" | 14 | #include "util/parse-events.h" |
14 | #include "util/cache.h" | 15 | #include "util/cache.h" |
15 | 16 | ||
16 | int cmd_list(int argc __used, const char **argv __used, const char *prefix __used) | 17 | int cmd_list(int argc, const char **argv, const char *prefix __used) |
17 | { | 18 | { |
18 | setup_pager(); | 19 | setup_pager(); |
19 | print_events(); | 20 | |
21 | if (argc == 1) | ||
22 | print_events(NULL); | ||
23 | else { | ||
24 | int i; | ||
25 | |||
26 | for (i = 1; i < argc; ++i) { | ||
27 | if (i > 1) | ||
28 | putchar('\n'); | ||
29 | if (strncmp(argv[i], "tracepoint", 10) == 0) | ||
30 | print_tracepoint_events(NULL, NULL); | ||
31 | else if (strcmp(argv[i], "hw") == 0 || | ||
32 | strcmp(argv[i], "hardware") == 0) | ||
33 | print_events_type(PERF_TYPE_HARDWARE); | ||
34 | else if (strcmp(argv[i], "sw") == 0 || | ||
35 | strcmp(argv[i], "software") == 0) | ||
36 | print_events_type(PERF_TYPE_SOFTWARE); | ||
37 | else if (strcmp(argv[i], "cache") == 0 || | ||
38 | strcmp(argv[i], "hwcache") == 0) | ||
39 | print_hwcache_events(NULL); | ||
40 | else { | ||
41 | char *sep = strchr(argv[i], ':'), *s; | ||
42 | int sep_idx; | ||
43 | |||
44 | if (sep == NULL) { | ||
45 | print_events(argv[i]); | ||
46 | continue; | ||
47 | } | ||
48 | sep_idx = sep - argv[i]; | ||
49 | s = strdup(argv[i]); | ||
50 | if (s == NULL) | ||
51 | return -1; | ||
52 | |||
53 | s[sep_idx] = '\0'; | ||
54 | print_tracepoint_events(s, s + sep_idx + 1); | ||
55 | free(s); | ||
56 | } | ||
57 | } | ||
58 | } | ||
20 | return 0; | 59 | return 0; |
21 | } | 60 | } |