diff options
Diffstat (limited to 'tools/perf/ui/stdio/hist.c')
| -rw-r--r-- | tools/perf/ui/stdio/hist.c | 45 | 
1 files changed, 16 insertions, 29 deletions
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c index 882461a4283..fbd4e32d074 100644 --- a/tools/perf/ui/stdio/hist.c +++ b/tools/perf/ui/stdio/hist.c @@ -271,7 +271,7 @@ static size_t hist_entry_callchain__fprintf(struct hist_entry *he,  {  	switch (callchain_param.mode) {  	case CHAIN_GRAPH_REL: -		return callchain__fprintf_graph(fp, &he->sorted_chain, he->period, +		return callchain__fprintf_graph(fp, &he->sorted_chain, he->stat.period,  						left_margin);  		break;  	case CHAIN_GRAPH_ABS: @@ -292,9 +292,10 @@ static size_t hist_entry_callchain__fprintf(struct hist_entry *he,  static size_t hist_entry__callchain_fprintf(struct hist_entry *he,  					    struct hists *hists, -					    u64 total_period, FILE *fp) +					    FILE *fp)  {  	int left_margin = 0; +	u64 total_period = hists->stats.total_period;  	if (sort__first_dimension == SORT_COMM) {  		struct sort_entry *se = list_first_entry(&hist_entry__sort_list, @@ -307,17 +308,13 @@ static size_t hist_entry__callchain_fprintf(struct hist_entry *he,  }  static int hist_entry__fprintf(struct hist_entry *he, size_t size, -			       struct hists *hists, struct hists *pair_hists, -			       long displacement, u64 total_period, FILE *fp) +			       struct hists *hists, FILE *fp)  {  	char bf[512];  	int ret;  	struct perf_hpp hpp = {  		.buf		= bf,  		.size		= size, -		.total_period	= total_period, -		.displacement	= displacement, -		.ptr		= pair_hists,  	};  	bool color = !symbol_conf.field_sep; @@ -330,22 +327,17 @@ static int hist_entry__fprintf(struct hist_entry *he, size_t size,  	ret = fprintf(fp, "%s\n", bf);  	if (symbol_conf.use_callchain) -		ret += hist_entry__callchain_fprintf(he, hists, -						     total_period, fp); +		ret += hist_entry__callchain_fprintf(he, hists, fp);  	return ret;  } -size_t hists__fprintf(struct hists *hists, struct hists *pair, -		      bool show_displacement, bool show_header, int max_rows, +size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,  		      int max_cols, FILE *fp)  {  	struct sort_entry *se;  	struct rb_node *nd;  	size_t ret = 0; -	u64 total_period; -	unsigned long position = 1; -	long displacement = 0;  	unsigned int width;  	const char *sep = symbol_conf.field_sep;  	const char *col_width = symbol_conf.col_width_list_str; @@ -354,8 +346,8 @@ size_t hists__fprintf(struct hists *hists, struct hists *pair,  	struct perf_hpp dummy_hpp = {  		.buf	= bf,  		.size	= sizeof(bf), -		.ptr	= pair,  	}; +	bool first = true;  	init_rem_hits(); @@ -367,8 +359,10 @@ size_t hists__fprintf(struct hists *hists, struct hists *pair,  		if (!perf_hpp__format[idx].cond)  			continue; -		if (idx) +		if (!first)  			fprintf(fp, "%s", sep ?: "  "); +		else +			first = false;  		perf_hpp__format[idx].header(&dummy_hpp);  		fprintf(fp, "%s", bf); @@ -403,6 +397,8 @@ size_t hists__fprintf(struct hists *hists, struct hists *pair,  	if (sep)  		goto print_entries; +	first = true; +  	fprintf(fp, "# ");  	for (idx = 0; idx < PERF_HPP__MAX_INDEX; idx++) {  		unsigned int i; @@ -410,8 +406,10 @@ size_t hists__fprintf(struct hists *hists, struct hists *pair,  		if (!perf_hpp__format[idx].cond)  			continue; -		if (idx) +		if (!first)  			fprintf(fp, "%s", sep ?: "  "); +		else +			first = false;  		width = perf_hpp__format[idx].width(&dummy_hpp);  		for (i = 0; i < width; i++) @@ -441,24 +439,13 @@ size_t hists__fprintf(struct hists *hists, struct hists *pair,  		goto out;  print_entries: -	total_period = hists->stats.total_period; -  	for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {  		struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);  		if (h->filtered)  			continue; -		if (show_displacement) { -			if (h->pair != NULL) -				displacement = ((long)h->pair->position - -					        (long)position); -			else -				displacement = 0; -			++position; -		} -		ret += hist_entry__fprintf(h, max_cols, hists, pair, displacement, -					   total_period, fp); +		ret += hist_entry__fprintf(h, max_cols, hists, fp);  		if (max_rows && ++nr_rows >= max_rows)  			goto out;  |