2 * Builtin evlist command: Show the list of event selectors present
9 #include <linux/list.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"
18 struct perf_attr_details
{
23 static int comma_printf(bool *first
, const char *fmt
, ...)
36 ret
+= vprintf(fmt
, args
);
41 static int __if_print(bool *first
, const char *field
, u64 value
)
46 return comma_printf(first
, " %s: %" PRIu64
, field
, value
);
49 #define if_print(field) __if_print(&first, #field, pos->attr.field)
51 static int __cmd_evlist(const char *input_name
, struct perf_attr_details
*details
)
53 struct perf_session
*session
;
54 struct perf_evsel
*pos
;
56 session
= perf_session__new(input_name
, O_RDONLY
, 0, false, NULL
);
60 list_for_each_entry(pos
, &session
->evlist
->entries
, node
) {
63 printf("%s", perf_evsel__name(pos
));
65 if (details
->verbose
|| details
->freq
) {
66 comma_printf(&first
, " sample_freq=%" PRIu64
,
67 (u64
)pos
->attr
.sample_freq
);
70 if (details
->verbose
) {
76 if_print(sample_type
);
77 if_print(read_format
);
82 if_print(exclude_user
);
83 if_print(exclude_kernel
);
85 if_print(exclude_idle
);
89 if_print(inherit_stat
);
90 if_print(enable_on_exec
);
95 if_print(sample_id_all
);
96 if_print(exclude_host
);
97 if_print(exclude_guest
);
98 if_print(__reserved_1
);
99 if_print(wakeup_events
);
101 if_print(branch_sample_type
);
107 perf_session__delete(session
);
111 int cmd_evlist(int argc
, const char **argv
, const char *prefix __maybe_unused
)
113 struct perf_attr_details details
= { .verbose
= false, };
114 const char *input_name
= NULL
;
115 const struct option options
[] = {
116 OPT_STRING('i', "input", &input_name
, "file", "Input file name"),
117 OPT_BOOLEAN('F', "freq", &details
.freq
, "Show the sample frequency"),
118 OPT_BOOLEAN('v', "verbose", &details
.verbose
,
119 "Show all event attr details"),
122 const char * const evlist_usage
[] = {
123 "perf evlist [<options>]",
127 argc
= parse_options(argc
, argv
, options
, evlist_usage
, 0);
129 usage_with_options(evlist_usage
, options
);
131 return __cmd_evlist(input_name
, &details
);