diff options
| author | Namhyung Kim <namhyung.kim@lge.com> | 2013-01-22 18:09:47 +0900 | 
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-01-31 13:07:49 -0300 | 
| commit | e6ab07d027d47e55d8a5c0f33b16dfdd3e18c96f (patch) | |
| tree | e53b70cb5b0517e1783cd10f888b775a4d8f25f3 /tools/perf | |
| parent | 00c7e1f10c6b8ae8a031f5c6a58ecd15d20c52cb (diff) | |
| download | linux-e6ab07d027d47e55d8a5c0f33b16dfdd3e18c96f.tar.bz2 | |
perf evlist: Add --group option
Add '-g/--group' option for showing event groups.  For simplicity it is
currently not compatible with other options.
  $ perf evlist --group
  {ref-cycles,cycles}
  $ perf evlist
  ref-cycles
  cycles
Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1358845787-1350-20-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/Documentation/perf-evlist.txt | 4 | ||||
| -rw-r--r-- | tools/perf/builtin-evlist.c | 7 | ||||
| -rw-r--r-- | tools/perf/util/evsel.c | 24 | 
3 files changed, 33 insertions, 2 deletions
| diff --git a/tools/perf/Documentation/perf-evlist.txt b/tools/perf/Documentation/perf-evlist.txt index 15217345c2fa..1ceb3700ffbb 100644 --- a/tools/perf/Documentation/perf-evlist.txt +++ b/tools/perf/Documentation/perf-evlist.txt @@ -28,6 +28,10 @@ OPTIONS  --verbose=::  	Show all fields. +-g:: +--group:: +	Show event group information. +  SEE ALSO  --------  linkperf:perf-record[1], linkperf:perf-list[1], diff --git a/tools/perf/builtin-evlist.c b/tools/perf/builtin-evlist.c index 1312a5e03ec7..85a5e35dd147 100644 --- a/tools/perf/builtin-evlist.c +++ b/tools/perf/builtin-evlist.c @@ -39,6 +39,8 @@ int cmd_evlist(int argc, const char **argv, const char *prefix __maybe_unused)  	OPT_BOOLEAN('F', "freq", &details.freq, "Show the sample frequency"),  	OPT_BOOLEAN('v', "verbose", &details.verbose,  		    "Show all event attr details"), +	OPT_BOOLEAN('g', "group", &symbol_conf.event_group, +		    "Show event group information"),  	OPT_END()  	};  	const char * const evlist_usage[] = { @@ -50,5 +52,10 @@ int cmd_evlist(int argc, const char **argv, const char *prefix __maybe_unused)  	if (argc)  		usage_with_options(evlist_usage, options); +	if (symbol_conf.event_group && (details.verbose || details.freq)) { +		pr_err("--group option is not compatible with other options\n"); +		usage_with_options(evlist_usage, options); +	} +  	return __cmd_evlist(input_name, &details);  } diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 94e74043ded8..a54701504606 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -1389,7 +1389,27 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,  			struct perf_attr_details *details, FILE *fp)  {  	bool first = true; -	int printed = fprintf(fp, "%s", perf_evsel__name(evsel)); +	int printed = 0; + +	if (symbol_conf.event_group) { +		struct perf_evsel *pos; + +		if (!perf_evsel__is_group_leader(evsel)) +			return 0; + +		if (evsel->nr_members > 1) +			printed += fprintf(fp, "%s{", evsel->group_name ?: ""); + +		printed += fprintf(fp, "%s", perf_evsel__name(evsel)); +		for_each_group_member(pos, evsel) +			printed += fprintf(fp, ",%s", perf_evsel__name(pos)); + +		if (evsel->nr_members > 1) +			printed += fprintf(fp, "}"); +		goto out; +	} + +	printed += fprintf(fp, "%s", perf_evsel__name(evsel));  	if (details->verbose || details->freq) {  		printed += comma_fprintf(fp, &first, " sample_freq=%" PRIu64, @@ -1430,7 +1450,7 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,  		if_print(bp_type);  		if_print(branch_sample_type);  	} - +out:  	fputc('\n', fp);  	return ++printed;  } |