Skip to content

Commit f4536dd

Browse files
namhyungacmel
authored andcommitted
perf hists browser: Factor out hist_browser__show_callchain_entry()
Factor out duplicate callchain printing code into the hist_browser__ show_callchain_entry(). Signed-off-by: Namhyung Kim <[email protected]> Cc: Andi Kleen <[email protected]> Cc: David Ahern <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Peter Zijlstra <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent 2bfa152 commit f4536dd

File tree

1 file changed

+33
-31
lines changed

1 file changed

+33
-31
lines changed

tools/perf/ui/browsers/hists.c

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,29 @@ static char *callchain_list__sym_name(struct callchain_list *cl,
477477
return bf;
478478
}
479479

480+
static void hist_browser__show_callchain_entry(struct hist_browser *browser,
481+
struct callchain_list *chain,
482+
unsigned short row, int offset,
483+
char folded_sign, const char *str,
484+
bool *is_current_entry)
485+
{
486+
int color, width;
487+
488+
color = HE_COLORSET_NORMAL;
489+
width = browser->b.width - (offset + 2);
490+
if (ui_browser__is_current_entry(&browser->b, row)) {
491+
browser->selection = &chain->ms;
492+
color = HE_COLORSET_SELECTED;
493+
*is_current_entry = true;
494+
}
495+
496+
ui_browser__set_color(&browser->b, color);
497+
hist_browser__gotorc(browser, row, 0);
498+
slsmg_write_nstring(" ", offset);
499+
slsmg_printf("%c ", folded_sign);
500+
slsmg_write_nstring(str, width);
501+
}
502+
480503
#define LEVEL_OFFSET_STEP 3
481504

482505
static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *browser,
@@ -487,7 +510,7 @@ static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *browse
487510
bool *is_current_entry)
488511
{
489512
struct rb_node *node;
490-
int first_row = row, width, offset = level * LEVEL_OFFSET_STEP;
513+
int first_row = row, offset = level * LEVEL_OFFSET_STEP;
491514
u64 new_total;
492515

493516
if (callchain_param.mode == CHAIN_GRAPH_REL)
@@ -508,7 +531,6 @@ static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *browse
508531
list_for_each_entry(chain, &child->val, list) {
509532
char bf[1024], *alloc_str;
510533
const char *str;
511-
int color;
512534
bool was_first = first;
513535

514536
if (first)
@@ -534,19 +556,10 @@ static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *browse
534556
str = alloc_str;
535557
}
536558

537-
color = HE_COLORSET_NORMAL;
538-
width = browser->b.width - (offset + extra_offset + 2);
539-
if (ui_browser__is_current_entry(&browser->b, row)) {
540-
browser->selection = &chain->ms;
541-
color = HE_COLORSET_SELECTED;
542-
*is_current_entry = true;
543-
}
544-
545-
ui_browser__set_color(&browser->b, color);
546-
hist_browser__gotorc(browser, row, 0);
547-
slsmg_write_nstring(" ", offset + extra_offset);
548-
slsmg_printf("%c ", folded_sign);
549-
slsmg_write_nstring(str, width);
559+
hist_browser__show_callchain_entry(browser, chain, row,
560+
offset + extra_offset,
561+
folded_sign, str,
562+
is_current_entry);
550563
free(alloc_str);
551564

552565
if (++row == browser->b.rows)
@@ -577,14 +590,12 @@ static int hist_browser__show_callchain_node(struct hist_browser *browser,
577590
bool *is_current_entry)
578591
{
579592
struct callchain_list *chain;
580-
int first_row = row,
581-
offset = level * LEVEL_OFFSET_STEP,
582-
width = browser->b.width - offset;
593+
int first_row = row;
594+
int offset = level * LEVEL_OFFSET_STEP;
583595
char folded_sign = ' ';
584596

585597
list_for_each_entry(chain, &node->val, list) {
586598
char bf[1024], *s;
587-
int color;
588599

589600
folded_sign = callchain_list__folded(chain);
590601

@@ -593,20 +604,11 @@ static int hist_browser__show_callchain_node(struct hist_browser *browser,
593604
continue;
594605
}
595606

596-
color = HE_COLORSET_NORMAL;
597-
if (ui_browser__is_current_entry(&browser->b, row)) {
598-
browser->selection = &chain->ms;
599-
color = HE_COLORSET_SELECTED;
600-
*is_current_entry = true;
601-
}
602-
603607
s = callchain_list__sym_name(chain, bf, sizeof(bf),
604608
browser->show_dso);
605-
hist_browser__gotorc(browser, row, 0);
606-
ui_browser__set_color(&browser->b, color);
607-
slsmg_write_nstring(" ", offset);
608-
slsmg_printf("%c ", folded_sign);
609-
slsmg_write_nstring(s, width - 2);
609+
hist_browser__show_callchain_entry(browser, chain, row,
610+
offset, folded_sign, s,
611+
is_current_entry);
610612

611613
if (++row == browser->b.rows)
612614
goto out;

0 commit comments

Comments
 (0)