Blame view
tools/perf/builtin-list.c
1.82 KB
86847b62f perf_counter tool... |
1 2 3 4 5 6 7 |
/* * builtin-list.c * * Builtin list command: list all event types * * Copyright (C) 2009, Thomas Gleixner <tglx@linutronix.de> * Copyright (C) 2008-2009, Red Hat Inc, Ingo Molnar <mingo@redhat.com> |
668b8788f perf list: Allow ... |
8 |
* Copyright (C) 2011, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com> |
86847b62f perf_counter tool... |
9 10 11 12 |
*/ #include "builtin.h" #include "perf.h" |
86847b62f perf_counter tool... |
13 |
#include "util/parse-events.h" |
8f7a0dc51 perf list: Fix la... |
14 |
#include "util/cache.h" |
dc098b35b perf list: List k... |
15 |
#include "util/pmu.h" |
44d742e01 perf list: Add usage |
16 |
#include "util/parse-options.h" |
86847b62f perf_counter tool... |
17 |
|
1d037ca16 perf tools: Use _... |
18 |
int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused) |
86847b62f perf_counter tool... |
19 |
{ |
8e00ddc9d perf list: Remove... |
20 |
int i; |
44d742e01 perf list: Add usage |
21 22 23 24 25 26 27 28 29 30 |
const struct option list_options[] = { OPT_END() }; const char * const list_usage[] = { "perf list [hw|sw|cache|tracepoint|pmu|event_glob]", NULL }; argc = parse_options(argc, argv, list_options, list_usage, PARSE_OPT_STOP_AT_NON_OPTION); |
8e00ddc9d perf list: Remove... |
31 |
|
8f7a0dc51 perf list: Fix la... |
32 |
setup_pager(); |
668b8788f perf list: Allow ... |
33 |
|
44d742e01 perf list: Add usage |
34 |
if (argc == 0) { |
a3277d2d5 perf tools: Suppo... |
35 |
print_events(NULL, false); |
8e00ddc9d perf list: Remove... |
36 37 |
return 0; } |
668b8788f perf list: Allow ... |
38 |
|
44d742e01 perf list: Add usage |
39 40 |
for (i = 0; i < argc; ++i) { if (i) |
8e00ddc9d perf list: Remove... |
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
putchar(' '); if (strncmp(argv[i], "tracepoint", 10) == 0) print_tracepoint_events(NULL, NULL, false); else if (strcmp(argv[i], "hw") == 0 || strcmp(argv[i], "hardware") == 0) print_events_type(PERF_TYPE_HARDWARE); else if (strcmp(argv[i], "sw") == 0 || strcmp(argv[i], "software") == 0) print_events_type(PERF_TYPE_SOFTWARE); else if (strcmp(argv[i], "cache") == 0 || strcmp(argv[i], "hwcache") == 0) print_hwcache_events(NULL, false); else if (strcmp(argv[i], "pmu") == 0) print_pmu_events(NULL, false); else if (strcmp(argv[i], "--raw-dump") == 0) print_events(NULL, true); else { char *sep = strchr(argv[i], ':'), *s; int sep_idx; |
668b8788f perf list: Allow ... |
61 |
|
8e00ddc9d perf list: Remove... |
62 63 64 |
if (sep == NULL) { print_events(argv[i], false); continue; |
668b8788f perf list: Allow ... |
65 |
} |
8e00ddc9d perf list: Remove... |
66 67 68 69 70 71 72 73 |
sep_idx = sep - argv[i]; s = strdup(argv[i]); if (s == NULL) return -1; s[sep_idx] = '\0'; print_tracepoint_events(s, s + sep_idx + 1, false); free(s); |
668b8788f perf list: Allow ... |
74 75 |
} } |
86847b62f perf_counter tool... |
76 77 |
return 0; } |