| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * 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"
 | 
					
						
							| 
									
										
										
										
											2013-10-15 16:27:32 +02:00
										 |  |  | #include "util/data.h"
 | 
					
						
							| 
									
										
										
										
											2014-07-14 23:46:48 +02:00
										 |  |  | #include "util/debug.h"
 | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-30 11:56:02 +08:00
										 |  |  | static int __cmd_evlist(const char *file_name, struct perf_attr_details *details) | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | { | 
					
						
							|  |  |  | 	struct perf_session *session; | 
					
						
							|  |  |  | 	struct perf_evsel *pos; | 
					
						
							| 
									
										
										
										
											2013-10-15 16:27:32 +02:00
										 |  |  | 	struct perf_data_file file = { | 
					
						
							|  |  |  | 		.path = file_name, | 
					
						
							|  |  |  | 		.mode = PERF_DATA_MODE_READ, | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-15 16:27:32 +02:00
										 |  |  | 	session = perf_session__new(&file, 0, NULL); | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | 	if (session == NULL) | 
					
						
							| 
									
										
										
										
											2014-09-24 10:33:37 +09:00
										 |  |  | 		return -1; | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-10 10:37:27 -03:00
										 |  |  | 	evlist__for_each(session->evlist, pos) | 
					
						
							| 
									
										
										
										
											2012-12-10 18:17:08 -03:00
										 |  |  | 		perf_evsel__fprintf(pos, details, stdout); | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	perf_session__delete(session); | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-09-11 01:15:03 +03:00
										 |  |  | int cmd_evlist(int argc, const char **argv, const char *prefix __maybe_unused) | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | { | 
					
						
							| 
									
										
										
											
												perf evlist: Show event attribute details
There was no easy way to see the frequency used, and with the change of
default, we better provide one.
[root@sandy linux]# perf evlist -F
cycles: sample_freq=4000
[root@sandy linux]# perf evlist -v
cycles: sample_freq=4000, size: 80, sample_type: 391, read_format: 7, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, sample_id_all: 1, exclude_guest: 1
[root@sandy linux]#
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-e1p9poez3nwrgycbmwqmhlsu@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
											
										 
											2012-05-22 14:30:11 -03:00
										 |  |  | 	struct perf_attr_details details = { .verbose = false, }; | 
					
						
							|  |  |  | 	const struct option options[] = { | 
					
						
							| 
									
										
										
										
											2012-10-01 15:20:58 -03:00
										 |  |  | 	OPT_STRING('i', "input", &input_name, "file", "Input file name"), | 
					
						
							|  |  |  | 	OPT_BOOLEAN('F', "freq", &details.freq, "Show the sample frequency"), | 
					
						
							|  |  |  | 	OPT_BOOLEAN('v', "verbose", &details.verbose, | 
					
						
							|  |  |  | 		    "Show all event attr details"), | 
					
						
							| 
									
										
										
										
											2013-02-06 17:20:02 -03:00
										 |  |  | 	OPT_BOOLEAN('g', "group", &details.event_group, | 
					
						
							| 
									
										
										
										
											2013-01-22 18:09:47 +09:00
										 |  |  | 		    "Show event group information"), | 
					
						
							| 
									
										
										
										
											2012-10-01 15:20:58 -03:00
										 |  |  | 	OPT_END() | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	const char * const evlist_usage[] = { | 
					
						
							|  |  |  | 		"perf evlist [<options>]", | 
					
						
							|  |  |  | 		NULL | 
					
						
							| 
									
										
										
											
												perf evlist: Show event attribute details
There was no easy way to see the frequency used, and with the change of
default, we better provide one.
[root@sandy linux]# perf evlist -F
cycles: sample_freq=4000
[root@sandy linux]# perf evlist -v
cycles: sample_freq=4000, size: 80, sample_type: 391, read_format: 7, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, sample_id_all: 1, exclude_guest: 1
[root@sandy linux]#
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-e1p9poez3nwrgycbmwqmhlsu@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
											
										 
											2012-05-22 14:30:11 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | 	argc = parse_options(argc, argv, options, evlist_usage, 0); | 
					
						
							|  |  |  | 	if (argc) | 
					
						
							|  |  |  | 		usage_with_options(evlist_usage, options); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-06 17:20:02 -03:00
										 |  |  | 	if (details.event_group && (details.verbose || details.freq)) { | 
					
						
							| 
									
										
										
										
											2013-01-22 18:09:47 +09:00
										 |  |  | 		pr_err("--group option is not compatible with other options\n"); | 
					
						
							|  |  |  | 		usage_with_options(evlist_usage, options); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												perf evlist: Show event attribute details
There was no easy way to see the frequency used, and with the change of
default, we better provide one.
[root@sandy linux]# perf evlist -F
cycles: sample_freq=4000
[root@sandy linux]# perf evlist -v
cycles: sample_freq=4000, size: 80, sample_type: 391, read_format: 7, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, sample_id_all: 1, exclude_guest: 1
[root@sandy linux]#
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-e1p9poez3nwrgycbmwqmhlsu@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
											
										 
											2012-05-22 14:30:11 -03:00
										 |  |  | 	return __cmd_evlist(input_name, &details); | 
					
						
							| 
									
										
										
										
											2011-03-15 11:04:13 -03:00
										 |  |  | } |