diff options
| author | Ingo Molnar <mingo@elte.hu> | 2011-08-04 09:09:27 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2011-08-04 09:09:27 +0200 | 
| commit | d7619fe39d9769b4d4545cc511c891deea18ae08 (patch) | |
| tree | 0a902533414001075b2245825e145cc2e35ce985 /tools/perf/builtin-stat.c | |
| parent | 9ea71503a8ed9184d2d0b8ccc4d269d05f7940ae (diff) | |
| parent | ed8f37370d83e695c0a4fa5d5fc7a83ecb947526 (diff) | |
Merge branch 'linus' into core/urgent
Diffstat (limited to 'tools/perf/builtin-stat.c')
| -rw-r--r-- | tools/perf/builtin-stat.c | 20 | 
1 files changed, 14 insertions, 6 deletions
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index a9f06715e44d..1ad04ce29c34 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -61,6 +61,8 @@  #include <locale.h>  #define DEFAULT_SEPARATOR	" " +#define CNTR_NOT_SUPPORTED	"<not supported>" +#define CNTR_NOT_COUNTED	"<not counted>"  static struct perf_event_attr default_attrs[] = { @@ -448,6 +450,7 @@ static int run_perf_stat(int argc __used, const char **argv)  				if (verbose)  					ui__warning("%s event is not supported by the kernel.\n",  						    event_name(counter)); +				counter->supported = false;  				continue;  			} @@ -466,6 +469,7 @@ static int run_perf_stat(int argc __used, const char **argv)  			die("Not all events could be opened.\n");  			return -1;  		} +		counter->supported = true;  	}  	if (perf_evlist__set_filters(evsel_list)) { @@ -513,7 +517,10 @@ static void print_noise_pct(double total, double avg)  	if (avg)  		pct = 100.0*total/avg; -	fprintf(stderr, "  ( +-%6.2f%% )", pct); +	if (csv_output) +		fprintf(stderr, "%s%.2f%%", csv_sep, pct); +	else +		fprintf(stderr, "  ( +-%6.2f%% )", pct);  }  static void print_noise(struct perf_evsel *evsel, double avg) @@ -861,7 +868,7 @@ static void print_counter_aggr(struct perf_evsel *counter)  	if (scaled == -1) {  		fprintf(stderr, "%*s%s%*s",  			csv_output ? 0 : 18, -			"<not counted>", +			counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED,  			csv_sep,  			csv_output ? 0 : -24,  			event_name(counter)); @@ -878,13 +885,13 @@ static void print_counter_aggr(struct perf_evsel *counter)  	else  		abs_printout(-1, counter, avg); +	print_noise(counter, avg); +  	if (csv_output) {  		fputc('\n', stderr);  		return;  	} -	print_noise(counter, avg); -  	if (scaled) {  		double avg_enabled, avg_running; @@ -914,7 +921,8 @@ static void print_counter(struct perf_evsel *counter)  				csv_output ? 0 : -4,  				evsel_list->cpus->map[cpu], csv_sep,  				csv_output ? 0 : 18, -				"<not counted>", csv_sep, +				counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED, +				csv_sep,  				csv_output ? 0 : -24,  				event_name(counter)); @@ -1024,7 +1032,7 @@ static int stat__set_big_num(const struct option *opt __used,  static const struct option options[] = {  	OPT_CALLBACK('e', "event", &evsel_list, "event",  		     "event selector. use 'perf list' to list available events", -		     parse_events), +		     parse_events_option),  	OPT_CALLBACK(0, "filter", &evsel_list, "filter",  		     "event filter", parse_filter),  	OPT_BOOLEAN('i', "no-inherit", &no_inherit,  | 
