perf annotate TUI: Clarify calculation of column header widths

In commit f8f4aaea ("perf annotate: Finally display IPC and cycle
accounting") the 'pcnt_width' variable was abused in a few places to
also include the optional width of the "IPC" and "cycles" columns, while
in other places we stopped using 'pcnt_width' and instead its previous
equation...

Now that we need to tap into annotate_browser__pcnt_width() to consider
if --show-total-period is being used and instead of that hardcoded 7
(strlen("Percent")) we need to use it or strlen("Event count") we need
this properly clarified to avoid having to touch all the (7 * nr_events)
places.

Clarify this by introducing a separate annotate_browser__cycles_width()
to leave the pcnt_width calculate just what its name implies.

Cc: Taeung Song <treeze.taeung@gmail.com>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Link: http://lkml.kernel.org/n/tip-szgb07t4k5wtvks8nzwkg710@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 29dc267f
...@@ -110,11 +110,12 @@ static int annotate_browser__set_jumps_percent_color(struct annotate_browser *br ...@@ -110,11 +110,12 @@ static int annotate_browser__set_jumps_percent_color(struct annotate_browser *br
static int annotate_browser__pcnt_width(struct annotate_browser *ab) static int annotate_browser__pcnt_width(struct annotate_browser *ab)
{ {
int w = 7 * ab->nr_events; return 7 * ab->nr_events;
}
if (ab->have_cycles) static int annotate_browser__cycles_width(struct annotate_browser *ab)
w += IPC_WIDTH + CYCLES_WIDTH; {
return w; return ab->have_cycles ? IPC_WIDTH + CYCLES_WIDTH : 0;
} }
static void annotate_browser__write(struct ui_browser *browser, void *entry, int row) static void annotate_browser__write(struct ui_browser *browser, void *entry, int row)
...@@ -127,7 +128,8 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int ...@@ -127,7 +128,8 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
(!current_entry || (browser->use_navkeypressed && (!current_entry || (browser->use_navkeypressed &&
!browser->navkeypressed))); !browser->navkeypressed)));
int width = browser->width, printed; int width = browser->width, printed;
int i, pcnt_width = annotate_browser__pcnt_width(ab); int i, pcnt_width = annotate_browser__pcnt_width(ab),
cycles_width = annotate_browser__cycles_width(ab);
double percent_max = 0.0; double percent_max = 0.0;
char bf[256]; char bf[256];
bool show_title = false; bool show_title = false;
...@@ -162,7 +164,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int ...@@ -162,7 +164,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
ui_browser__set_percent_color(browser, 0, current_entry); ui_browser__set_percent_color(browser, 0, current_entry);
if (!show_title) if (!show_title)
ui_browser__write_nstring(browser, " ", 7 * ab->nr_events); ui_browser__write_nstring(browser, " ", pcnt_width);
else else
ui_browser__printf(browser, "%*s", 7, "Percent"); ui_browser__printf(browser, "%*s", 7, "Percent");
} }
...@@ -190,7 +192,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int ...@@ -190,7 +192,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
width += 1; width += 1;
if (!*dl->line) if (!*dl->line)
ui_browser__write_nstring(browser, " ", width - pcnt_width); ui_browser__write_nstring(browser, " ", width - pcnt_width - cycles_width);
else if (dl->offset == -1) { else if (dl->offset == -1) {
if (dl->line_nr && annotate_browser__opts.show_linenr) if (dl->line_nr && annotate_browser__opts.show_linenr)
printed = scnprintf(bf, sizeof(bf), "%-*d ", printed = scnprintf(bf, sizeof(bf), "%-*d ",
...@@ -199,7 +201,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int ...@@ -199,7 +201,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
printed = scnprintf(bf, sizeof(bf), "%*s ", printed = scnprintf(bf, sizeof(bf), "%*s ",
ab->addr_width, " "); ab->addr_width, " ");
ui_browser__write_nstring(browser, bf, printed); ui_browser__write_nstring(browser, bf, printed);
ui_browser__write_nstring(browser, dl->line, width - printed - pcnt_width + 1); ui_browser__write_nstring(browser, dl->line, width - printed - pcnt_width - cycles_width + 1);
} else { } else {
u64 addr = dl->offset; u64 addr = dl->offset;
int color = -1; int color = -1;
...@@ -256,7 +258,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int ...@@ -256,7 +258,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
} }
disasm_line__scnprintf(dl, bf, sizeof(bf), !annotate_browser__opts.use_offset); disasm_line__scnprintf(dl, bf, sizeof(bf), !annotate_browser__opts.use_offset);
ui_browser__write_nstring(browser, bf, width - pcnt_width - 3 - printed); ui_browser__write_nstring(browser, bf, width - pcnt_width - cycles_width - 3 - printed);
} }
if (current_entry) if (current_entry)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment