Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 517dfdb3 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

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 <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-w0niblabqrkecs4o0eogfy6c@git.kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 26270a00
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -52,6 +52,15 @@ void ui_browser__write_nstring(struct ui_browser *browser __maybe_unused, const
	slsmg_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)
+1 −0
Original line number Diff line number Diff line
@@ -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);
+10 −9
Original line number Diff line number Diff line
#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, int
				ui_browser__set_percent_color(browser,
							bdl->samples[i].percent,
							current_entry);
				if (annotate_browser__opts.show_total_period)
					slsmg_printf("%6" PRIu64 " ",
				if (annotate_browser__opts.show_total_period) {
					ui_browser__printf(browser, "%6" PRIu64 " ",
							   bdl->samples[i].nr);
				else
					slsmg_printf("%6.2f ", bdl->samples[i].percent);
				} else {
					ui_browser__printf(browser, "%6.2f ",
							   bdl->samples[i].percent);
				}
			}
		} else {
			ui_browser__write_nstring(browser, " ", 7 * ab->nr_events);
@@ -149,11 +150,11 @@ 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 " ",
			ui_browser__printf(browser, "%*" PRIu64 " ",
					   CYCLES_WIDTH - 1, dl->cycles);
		else
			ui_browser__write_nstring(browser, " ", CYCLES_WIDTH);
+8 −8
Original line number Diff line number Diff line
#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) {
+4 −5
Original line number Diff line number Diff line
#include "../libslang.h"
#include <elf.h>
#include <inttypes.h>
#include <sys/ttydefaults.h>
@@ -26,7 +25,7 @@ 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 ",
	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');
Loading