diff options
Diffstat (limited to 'tools/perf/ui')
| -rw-r--r-- | tools/perf/ui/browsers/annotate.c | 54 | ||||
| -rw-r--r-- | tools/perf/ui/gtk/annotate.c | 3 | 
2 files changed, 38 insertions, 19 deletions
| diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index d990ad08a3c6..27f41f28dcb4 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -46,12 +46,15 @@ static struct annotate_browser_opt {  	.jump_arrows	= true,  }; +struct arch; +  struct annotate_browser {  	struct ui_browser b;  	struct rb_root	  entries;  	struct rb_node	  *curr_hot;  	struct disasm_line  *selection;  	struct disasm_line  **offsets; +	struct arch	    *arch;  	int		    nr_events;  	u64		    start;  	int		    nr_asm_entries; @@ -125,43 +128,57 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int  	int i, pcnt_width = annotate_browser__pcnt_width(ab);  	double percent_max = 0.0;  	char bf[256]; +	bool show_title = false;  	for (i = 0; i < ab->nr_events; i++) {  		if (bdl->samples[i].percent > percent_max)  			percent_max = bdl->samples[i].percent;  	} +	if ((row == 0) && (dl->offset == -1 || percent_max == 0.0)) { +		if (ab->have_cycles) { +			if (dl->ipc == 0.0 && dl->cycles == 0) +				show_title = true; +		} else +			show_title = true; +	} +  	if (dl->offset != -1 && percent_max != 0.0) { -		if (percent_max != 0.0) { -			for (i = 0; i < ab->nr_events; i++) { -				ui_browser__set_percent_color(browser, -							bdl->samples[i].percent, -							current_entry); -				if (annotate_browser__opts.show_total_period) { -					ui_browser__printf(browser, "%6" PRIu64 " ", -							   bdl->samples[i].nr); -				} else { -					ui_browser__printf(browser, "%6.2f ", -							   bdl->samples[i].percent); -				} +		for (i = 0; i < ab->nr_events; i++) { +			ui_browser__set_percent_color(browser, +						bdl->samples[i].percent, +						current_entry); +			if (annotate_browser__opts.show_total_period) { +				ui_browser__printf(browser, "%6" PRIu64 " ", +						   bdl->samples[i].nr); +			} else { +				ui_browser__printf(browser, "%6.2f ", +						   bdl->samples[i].percent);  			} -		} else { -			ui_browser__write_nstring(browser, " ", 7 * ab->nr_events);  		}  	} else {  		ui_browser__set_percent_color(browser, 0, current_entry); -		ui_browser__write_nstring(browser, " ", 7 * ab->nr_events); + +		if (!show_title) +			ui_browser__write_nstring(browser, " ", 7 * ab->nr_events); +		else +			ui_browser__printf(browser, "%*s", 7, "Percent");  	}  	if (ab->have_cycles) {  		if (dl->ipc)  			ui_browser__printf(browser, "%*.2f ", IPC_WIDTH - 1, dl->ipc); -		else +		else if (!show_title)  			ui_browser__write_nstring(browser, " ", IPC_WIDTH); +		else +			ui_browser__printf(browser, "%*s ", IPC_WIDTH - 1, "IPC"); +  		if (dl->cycles)  			ui_browser__printf(browser, "%*" PRIu64 " ",  					   CYCLES_WIDTH - 1, dl->cycles); -		else +		else if (!show_title)  			ui_browser__write_nstring(browser, " ", CYCLES_WIDTH); +		else +			ui_browser__printf(browser, "%*s ", CYCLES_WIDTH - 1, "Cycle");  	}  	SLsmg_write_char(' '); @@ -1056,7 +1073,8 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,  		  (nr_pcnt - 1);  	} -	err = symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), sizeof_bdl); +	err = symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), +				  sizeof_bdl, &browser.arch);  	if (err) {  		char msg[BUFSIZ];  		symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg)); diff --git a/tools/perf/ui/gtk/annotate.c b/tools/perf/ui/gtk/annotate.c index e99ba86158d2..d903fd493416 100644 --- a/tools/perf/ui/gtk/annotate.c +++ b/tools/perf/ui/gtk/annotate.c @@ -168,7 +168,8 @@ static int symbol__gtk_annotate(struct symbol *sym, struct map *map,  	if (map->dso->annotate_warned)  		return -1; -	err = symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), 0); +	err = symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), +				  0, NULL);  	if (err) {  		char msg[BUFSIZ];  		symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg)); |