perf annotate: Finish the generalization of annotate_browser__write()
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: a1e9b74cc2ef80131b9f955c0e1acc25285dc88c Gitweb: https://git.kernel.org/tip/a1e9b74cc2ef80131b9f955c0e1acc25285dc88c Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 15 Mar 2018 19:12:39 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 20 Mar 2018 13:19:30 -0300
perf annotate: Finish the generalization of annotate_browser__write()
We pass some more callbacks and all of annotate_browser__write() seems to be free of TUI code (except for some arrow constants, will fix).
Cc Adrian Hunter <[email protected]>
Cc Andi Kleen <[email protected]>
Cc David Ahern <[email protected]>
Cc Jin Yao <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/ui/browsers/annotate.c | 97 +++++--------------------------- tools/perf/util/annotate.c | 113 +++++++++++++++++++++++++++++++++++--- tools/perf/util/annotate.h | 13 +++-- 3 files changed, 127 insertions(+), 96 deletions(-)
tools/perf/ui/browsers/annotate.c +15 -82
@@ -71,38 +71,20 @@ static int ui_browser__jumps_percent_color(struct ui_browser *browser, int nr, breturn HE_COLORSET_NORMAL ; } -static int ui_browser__set_jumps_percent_color (struct ui_browser *browser,int nr,bool current) +static int ui_browser__set_jumps_percent_color (void *browser,int nr,bool current) {int color =ui_browser__jumps_percent_color (browser, nr, current);return ui_browser__set_color (browser, color); } -static void disasm_line__write (struct disasm_line *dl,struct ui_browser *browser, -char *bf,size_t size) +static int annotate_browser__set_color (void *browser,int color) { -struct annotation *notes =browser__annotation (browser); - -if (dl->ins.ops && dl->ins.ops->scnprintf) { -if (ins__is_jump (&dl->ins)) { -bool fwd = dl->ops.target.offset > dl->al.offset; - -ui_browser__write_graph (browser, fwd ?SLSMG_DARROW_CHAR : -SLSMG_UARROW_CHAR ); -SLsmg_write_char (' ' ); - }else if (ins__is_call (&dl->ins)) { -ui_browser__write_graph (browser,SLSMG_RARROW_CHAR ); -SLsmg_write_char (' ' ); - }else if (ins__is_ret (&dl->ins)) { -ui_browser__write_graph (browser,SLSMG_LARROW_CHAR ); -SLsmg_write_char (' ' ); - }else { -ui_browser__write_nstring (browser," " ,2 ); - } - }else { -ui_browser__write_nstring (browser," " ,2 ); - } +return ui_browser__set_color (browser, color); +} -disasm_line__scnprintf (dl, bf, size, !notes->options->use_offset); +static void annotate_browser__write_graph (void *browser,int graph) +{ +ui_browser__write_graph (browser, graph); }static void annotate_browser__set_percent_color (void *browser,double percent,bool current)
@@ -128,68 +110,19 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, intbool change_color = (!notes->options->hide_src_code && (!current_entry || (browser->use_navkeypressed && !browser->navkeypressed))); -int width = browser->width, printed; -int pcnt_width =annotation__pcnt_width (notes), - cycles_width =annotation__cycles_width (notes); -char bf[256 ]; - -annotation_line__print_start (al, notes, row ==0 , current_entry, browser, - annotate_browser__set_percent_color, - annotate_browser__printf); +int width = browser->width;/* The scroll bar isn't being used */ if (!browser->navkeypressed) width +=1 ; -if (!*al->line) -ui_browser__write_nstring (browser," " , width - pcnt_width - cycles_width); -else if (al->offset ==-1 ) { -if (al->line_nr && notes->options->show_linenr) - printed =scnprintf (bf,sizeof (bf),"%-*d " , notes->widths.addr +1 , al->line_nr); -else - printed =scnprintf (bf,sizeof (bf),"%*s " , notes->widths.addr," " ); -ui_browser__write_nstring (browser, bf, printed); -ui_browser__write_nstring (browser, al->line, width - printed - pcnt_width - cycles_width +1 ); - }else { -u64 addr = al->offset; -int color =-1 ; - -if (!notes->options->use_offset) - addr += notes->start; - -if (!notes->options->use_offset) { - printed =scnprintf (bf,sizeof (bf),"%" PRIx64": " , addr); - }else { -if (al->jump_sources) { -if (notes->options->show_nr_jumps) { -int prev; - printed =scnprintf (bf,sizeof (bf),"%*d " , - notes->widths.jumps, - al->jump_sources); - prev =ui_browser__set_jumps_percent_color (browser, al->jump_sources, - current_entry); -ui_browser__write_nstring (browser, bf, printed); -ui_browser__set_color (browser, prev); - } - - printed =scnprintf (bf,sizeof (bf),"%*" PRIx64": " , - notes->widths.target, addr); - }else { - printed =scnprintf (bf,sizeof (bf),"%*s " , - notes->widths.addr," " ); - } - } - -if (change_color) - color =ui_browser__set_color (browser,HE_COLORSET_ADDR ); -ui_browser__write_nstring (browser, bf, printed); -if (change_color) -ui_browser__set_color (browser, color); - -disasm_line__write (disasm_line (al), browser, bf,sizeof (bf)); - -ui_browser__write_nstring (browser, bf, width - pcnt_width - cycles_width -3 - printed); - } +annotation_line__write (al, notes, row ==0 , current_entry, change_color, + width, browser, + annotate_browser__set_color, + annotate_browser__set_percent_color, + ui_browser__set_jumps_percent_color, + annotate_browser__printf, + annotate_browser__write_graph);if (current_entry) ab->selection = al;
tools/perf/util/annotate.c +104 -9
144 lines not on this page · raw message
tools/perf/util/annotate.h +8 -5
@@ -126,11 +126,14 @@ struct annotation_line * annotation_line__next(struct annotation_line *pos, struct list_head *head);double annotation_line__max_percent (struct annotation_line *al,struct annotation *notes); -void annotation_line__print_start (struct annotation_line *al,struct annotation *notes, -bool first_line,bool current_entry, -void *obj, -void (*obj__set_percent_color)(void *obj,double percent,bool current), -void (*obj__printf)(void *obj,const char *fmt, ...)); +void annotation_line__write (struct annotation_line *al,struct annotation *notes, +bool first_line,bool current_entry,bool change_color,int width, +void *obj, +int (*obj__set_color)(void *obj,int color), +void (*obj__set_percent_color)(void *obj,double percent,bool current), +int (*obj__set_jumps_percent_color)(void *obj,int nr,bool current), +void (*obj__printf)(void *obj,const char *fmt, ...), +void (*obj__write_graph)(void *obj,int graph));int disasm_line__scnprintf (struct disasm_line *dl,char *bf,size_t size,bool raw);size_t disasm__fprintf (struct list_head *head,FILE *fp);