| /* | 
 |  * Builtin evlist command: Show the list of event selectors present | 
 |  * in a perf.data file. | 
 |  */ | 
 | #include "builtin.h" | 
 |  | 
 | #include "util/util.h" | 
 |  | 
 | #include <linux/list.h> | 
 |  | 
 | #include "perf.h" | 
 | #include "util/evlist.h" | 
 | #include "util/evsel.h" | 
 | #include "util/parse-events.h" | 
 | #include "util/parse-options.h" | 
 | #include "util/session.h" | 
 |  | 
 | static char const *input_name = "perf.data"; | 
 |  | 
 | static int __cmd_evlist(void) | 
 | { | 
 | 	struct perf_session *session; | 
 | 	struct perf_evsel *pos; | 
 |  | 
 | 	session = perf_session__new(input_name, O_RDONLY, 0, false, NULL); | 
 | 	if (session == NULL) | 
 | 		return -ENOMEM; | 
 |  | 
 | 	list_for_each_entry(pos, &session->evlist->entries, node) | 
 | 		printf("%s\n", event_name(pos)); | 
 |  | 
 | 	perf_session__delete(session); | 
 | 	return 0; | 
 | } | 
 |  | 
 | static const char * const evlist_usage[] = { | 
 | 	"perf evlist [<options>]", | 
 | 	NULL | 
 | }; | 
 |  | 
 | static const struct option options[] = { | 
 | 	OPT_STRING('i', "input", &input_name, "file", | 
 | 		    "input file name"), | 
 | 	OPT_END() | 
 | }; | 
 |  | 
 | int cmd_evlist(int argc, const char **argv, const char *prefix __used) | 
 | { | 
 | 	argc = parse_options(argc, argv, options, evlist_usage, 0); | 
 | 	if (argc) | 
 | 		usage_with_options(evlist_usage, options); | 
 |  | 
 | 	return __cmd_evlist(); | 
 | } |