diff options
Diffstat (limited to 'tools/perf/ui/stdio/hist.c')
| -rw-r--r-- | tools/perf/ui/stdio/hist.c | 33 | 
1 files changed, 30 insertions, 3 deletions
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c index 5365606e9dad..2ab2af4d4849 100644 --- a/tools/perf/ui/stdio/hist.c +++ b/tools/perf/ui/stdio/hist.c @@ -8,13 +8,14 @@  #include "../../util/event.h"  #include "../../util/hist.h"  #include "../../util/map.h" -#include "../../util/map_groups.h" +#include "../../util/maps.h"  #include "../../util/symbol.h"  #include "../../util/sort.h"  #include "../../util/evsel.h"  #include "../../util/srcline.h"  #include "../../util/string2.h"  #include "../../util/thread.h" +#include "../../util/block-info.h"  #include <linux/ctype.h>  #include <linux/zalloc.h> @@ -558,6 +559,25 @@ static int hist_entry__block_fprintf(struct hist_entry *he,  	return ret;  } +static int hist_entry__individual_block_fprintf(struct hist_entry *he, +						char *bf, size_t size, +						FILE *fp) +{ +	int ret = 0; + +	struct perf_hpp hpp = { +		.buf		= bf, +		.size		= size, +		.skip		= false, +	}; + +	hist_entry__snprintf(he, &hpp); +	if (!hpp.skip) +		ret += fprintf(fp, "%s\n", bf); + +	return ret; +} +  static int hist_entry__fprintf(struct hist_entry *he, size_t size,  			       char *bf, size_t bfsz, FILE *fp,  			       bool ignore_callchains) @@ -580,6 +600,9 @@ static int hist_entry__fprintf(struct hist_entry *he, size_t size,  	if (symbol_conf.report_block)  		return hist_entry__block_fprintf(he, bf, size, fp); +	if (symbol_conf.report_individual_block) +		return hist_entry__individual_block_fprintf(he, bf, size, fp); +  	hist_entry__snprintf(he, &hpp);  	ret = fprintf(fp, "%s\n", bf); @@ -834,7 +857,11 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,  		if (h->filtered)  			continue; -		percent = hist_entry__get_percent_limit(h); +		if (symbol_conf.report_individual_block) +			percent = block_info__total_cycles_percent(h); +		else +			percent = hist_entry__get_percent_limit(h); +  		if (percent < min_pcnt)  			continue; @@ -858,7 +885,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,  		}  		if (h->ms.map == NULL && verbose > 1) { -			map_groups__fprintf(h->thread->mg, fp); +			maps__fprintf(h->thread->maps, fp);  			fprintf(fp, "%.10s end\n", graph_dotted_line);  		}  	}  |