perf ui browser: Introduce ui_browser__printf()
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 517dfdb315fa2da9b144f6fa494b4f54b490de7e Gitweb: http://git.kernel.org/tip/517dfdb315fa2da9b144f6fa494b4f54b490de7e Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 11 Aug 2015 12:50:55 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 12 Aug 2015 10:27:05 -0300
perf ui browser: Introduce ui_browser__printf()
To remove direct access to libslang functions, with the immediate goal of implementing horizontal scrolling at the ui_browser level, but also because we may at some point want to implement ui_browser with other UIs in addition to the current libslang implementation.
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/ui/browser.c | 9 +++++++++ tools/perf/ui/browser.h | 1 + tools/perf/ui/browsers/annotate.c | 19 ++++++++++--------- tools/perf/ui/browsers/hists.c | 16 ++++++++-------- tools/perf/ui/browsers/map.c | 9 ++++----- tools/perf/ui/libslang.h | 3 +++ 6 files changed, 35 insertions(+), 22 deletions(-)
tools/perf/ui/browser.c +9 -0
@@ -52,6 +52,15 @@ void ui_browser__write_nstring(struct ui_browser *browser __maybe_unused, constslsmg_write_nstring (msg, width); } +void ui_browser__printf (struct ui_browser *browser__maybe_unused ,const char *fmt, ...) +{ +va_list args; + +va_start (args, fmt); +slsmg_vprintf (fmt, args); +va_end (args); +} +static struct list_head *ui_browser__list_head_filter_entries (struct ui_browser *browser,struct list_head *pos)
tools/perf/ui/browser.h +1 -0
@@ -39,6 +39,7 @@ void ui_browser__reset_index(struct ui_browser *browser);void ui_browser__gotorc (struct ui_browser *browser,int y,int x);void ui_browser__write_nstring (struct ui_browser *browser,const char *msg,unsigned int width); +void ui_browser__printf (struct ui_browser *browser,const char *fmt, ...);void ui_browser__write_graph (struct ui_browser *browser,int graph);void __ui_browser__line_arrow (struct ui_browser *browser,unsigned int column,u64 start,u64 end);
tools/perf/ui/browsers/annotate.c +10 -9
@@ -1,7 +1,6 @@#include "../../util/util.h" #include "../browser.h" #include "../helpline.h" -#include "../libslang.h" #include "../ui.h" #include "../util.h" #include "../../util/annotate.h"
@@ -134,11 +133,13 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, intui_browser__set_percent_color (browser, bdl->samples[i].percent, current_entry); -if (annotate_browser__opts.show_total_period) -slsmg_printf ("%6" PRIu64" " , - bdl->samples[i].nr); -else -slsmg_printf ("%6.2f " , bdl->samples[i].percent); +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);
@@ -149,12 +150,12 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int }if (ab->have_cycles) {if (dl->ipc) -slsmg_printf ("%*.2f " ,IPC_WIDTH -1 , dl->ipc); +ui_browser__printf (browser,"%*.2f " ,IPC_WIDTH -1 , dl->ipc);else ui_browser__write_nstring (browser," " ,IPC_WIDTH );if (dl->cycles) -slsmg_printf ("%*" PRIu64" " , -CYCLES_WIDTH -1 , dl->cycles); +ui_browser__printf (browser,"%*" PRIu64" " , +CYCLES_WIDTH -1 , dl->cycles);else ui_browser__write_nstring (browser," " ,CYCLES_WIDTH ); }
tools/perf/ui/browsers/hists.c +8 -8
@@ -1,5 +1,4 @@#include <stdio.h> -#include "../libslang.h" #include <stdlib.h> #include <string.h> #include <linux/rbtree.h>
@@ -541,7 +540,7 @@ static void hist_browser__show_callchain_entry(struct hist_browser *browser,ui_browser__set_color (&browser->b, color);hist_browser__gotorc (browser, row,0 );ui_browser__write_nstring (&browser->b," " , offset); -slsmg_printf ("%c" , folded_sign); +ui_browser__printf (&browser->b,"%c" , folded_sign);ui_browser__write_graph (&browser->b, show_annotated ?SLSMG_RARROW_CHAR :' ' );ui_browser__write_nstring (&browser->b, str, width); }
@@ -680,7 +679,7 @@ static int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...)ui_browser__set_percent_color (arg->b, percent, arg->current_entry); ret =scnprintf (hpp->buf, hpp->size, fmt, len, percent); -slsmg_printf ("%s" , hpp->buf); +ui_browser__printf (arg->b,"%s" , hpp->buf);advance_hpp (hpp, ret);return ret;
@@ -713,10 +712,11 @@ hist_browser__hpp_color_##_type(struct perf_hpp_fmt *fmt, \ struct hist_entry *he) \ { \if (!symbol_conf.cumulate_callchain) { \ +struct hpp_arg *arg = hpp->ptr; \int len = fmt->user_len ?: fmt->len; \int ret =scnprintf (hpp->buf, hpp->size, \"%*s" , len,"N/A" ); \ -slsmg_printf ("%s" , hpp->buf); \ +ui_browser__printf (arg->b,"%s" , hpp->buf); \ \return ret; \ } \
@@ -801,12 +801,12 @@ static int hist_browser__show_entry(struct hist_browser *browser,if (first) {if (symbol_conf.use_callchain) { -slsmg_printf ("%c " , folded_sign); +ui_browser__printf (&browser->b,"%c " , folded_sign); width -=2 ; } first = false; }else { -slsmg_printf (" " ); +ui_browser__printf (&browser->b," " ); width -=2 ; }
@@ -814,7 +814,7 @@ static int hist_browser__show_entry(struct hist_browser *browser, width -= fmt->color (fmt, &hpp, entry); }else { width -= fmt->entry (fmt, &hpp, entry); -slsmg_printf ("%s" , s); +ui_browser__printf (&browser->b,"%s" , s); } }
@@ -2044,7 +2044,7 @@ static void perf_evsel_menu__write(struct ui_browser *browser, nr_events =convert_unit (nr_events, &unit); printed =scnprintf (bf,sizeof (bf),"%lu%c%s%s" , nr_events, unit, unit ==' ' ?"" :" " , ev_name); -slsmg_printf ("%s" , bf); +ui_browser__printf (browser,"%s" , bf); nr_events = hists->stats.nr_events[PERF_RECORD_LOST ];if (nr_events !=0 ) {
tools/perf/ui/browsers/map.c +4 -5
@@ -1,4 +1,3 @@ -#include "../libslang.h" #include <elf.h> #include <inttypes.h> #include <sys/ttydefaults.h>
@@ -26,10 +25,10 @@ static void map_browser__write(struct ui_browser *browser, void *nd, int row)int width;ui_browser__set_percent_color (browser,0 , current_entry); -slsmg_printf ("%*" PRIx64" %*" PRIx64" %c " , - mb->addrlen, sym->start, mb->addrlen, sym->end, - sym->binding ==STB_GLOBAL ?'g' : - sym->binding ==STB_LOCAL ?'l' :'w' ); +ui_browser__printf (browser,"%*" PRIx64" %*" PRIx64" %c " , + mb->addrlen, sym->start, mb->addrlen, sym->end, + sym->binding ==STB_GLOBAL ?'g' : + sym->binding ==STB_LOCAL ?'l' :'w' ); width = browser->width - ((mb->addrlen *2 ) +4 );if (width >0 )ui_browser__write_nstring (browser, sym->name, width);
tools/perf/ui/libslang.h +3 -0
@@ -14,12 +14,15 @@#if SLANG_VERSION <20104 #define slsmg_printf(msg, args...) \ SLsmg_printf((char *)(msg), ##args) +#define slsmg_vprintf (msg, vargs) \ + SLsmg_vprintf((char *)(msg), vargs)#define slsmg_write_nstring (msg, len) \ SLsmg_write_nstring((char *)(msg), len)#define sltt_set_color (obj, name, fg, bg) \ SLtt_set_color(obj,(char *)(name), (char *)(fg), (char *)(bg))#else #define slsmg_printf SLsmg_printf +#define slsmg_vprintf SLsmg_vprintf#define slsmg_write_nstring SLsmg_write_nstring#define sltt_set_color SLtt_set_color#endif