Lines Matching refs:browser

51 static int hist_browser__get_folding(struct hist_browser *browser)  in hist_browser__get_folding()  argument
54 struct hists *hists = browser->hists; in hist_browser__get_folding()
58 (nd = hists__filter_entries(nd, browser->min_pcnt)) != NULL; in hist_browser__get_folding()
84 struct ui_browser *browser = &hb->b; in hist_browser__update_rows() local
87 browser->rows = browser->height - header_offset; in hist_browser__update_rows()
92 index_row = browser->index - browser->top_idx; in hist_browser__update_rows()
93 if (index_row >= browser->rows) in hist_browser__update_rows()
94 browser->index -= index_row - browser->rows + 1; in hist_browser__update_rows()
97 static void hist_browser__refresh_dimensions(struct ui_browser *browser) in hist_browser__refresh_dimensions() argument
99 struct hist_browser *hb = container_of(browser, struct hist_browser, b); in hist_browser__refresh_dimensions()
102 browser->width = 3 + (hists__sort_list_width(hb->hists) + sizeof("[k]")); in hist_browser__refresh_dimensions()
109 ui_browser__refresh_dimensions(browser); in hist_browser__refresh_dimensions()
113 static void hist_browser__gotorc(struct hist_browser *browser, int row, int column) in hist_browser__gotorc() argument
115 u16 header_offset = browser->show_headers ? 1 : 0; in hist_browser__gotorc()
117 ui_browser__gotorc(&browser->b, row + header_offset, column); in hist_browser__gotorc()
120 static void hist_browser__reset(struct hist_browser *browser) in hist_browser__reset() argument
126 browser->nr_callchain_rows = 0; in hist_browser__reset()
128 hist_browser__update_nr_entries(browser); in hist_browser__reset()
129 browser->b.nr_entries = hist_browser__nr_entries(browser); in hist_browser__reset()
130 hist_browser__refresh_dimensions(&browser->b); in hist_browser__reset()
131 ui_browser__reset_index(&browser->b); in hist_browser__reset()
285 static bool hist_browser__toggle_fold(struct hist_browser *browser) in hist_browser__toggle_fold() argument
287 if (map_symbol__toggle_fold(browser->selection)) { in hist_browser__toggle_fold()
288 struct hist_entry *he = browser->he_selection; in hist_browser__toggle_fold()
291 browser->b.nr_entries -= he->nr_rows; in hist_browser__toggle_fold()
292 browser->nr_callchain_rows -= he->nr_rows; in hist_browser__toggle_fold()
299 browser->b.nr_entries += he->nr_rows; in hist_browser__toggle_fold()
300 browser->nr_callchain_rows += he->nr_rows; in hist_browser__toggle_fold()
376 __hist_browser__set_folding(struct hist_browser *browser, bool unfold) in __hist_browser__set_folding() argument
379 struct hists *hists = browser->hists; in __hist_browser__set_folding()
382 (nd = hists__filter_entries(nd, browser->min_pcnt)) != NULL; in __hist_browser__set_folding()
386 browser->nr_callchain_rows += he->nr_rows; in __hist_browser__set_folding()
390 static void hist_browser__set_folding(struct hist_browser *browser, bool unfold) in hist_browser__set_folding() argument
392 browser->nr_callchain_rows = 0; in hist_browser__set_folding()
393 __hist_browser__set_folding(browser, unfold); in hist_browser__set_folding()
395 browser->b.nr_entries = hist_browser__nr_entries(browser); in hist_browser__set_folding()
397 ui_browser__reset_index(&browser->b); in hist_browser__set_folding()
400 static void ui_browser__warn_lost_events(struct ui_browser *browser) in ui_browser__warn_lost_events() argument
402 ui_browser__warning(browser, 4, in ui_browser__warn_lost_events()
409 static int hist_browser__run(struct hist_browser *browser, in hist_browser__run() argument
416 browser->b.entries = &browser->hists->entries; in hist_browser__run()
417 browser->b.nr_entries = hist_browser__nr_entries(browser); in hist_browser__run()
419 hists__browser_title(browser->hists, hbt, title, sizeof(title)); in hist_browser__run()
421 if (ui_browser__show(&browser->b, title, in hist_browser__run()
426 key = ui_browser__run(&browser->b, delay_secs); in hist_browser__run()
433 if (hist_browser__has_filter(browser)) in hist_browser__run()
434 hist_browser__update_nr_entries(browser); in hist_browser__run()
436 nr_entries = hist_browser__nr_entries(browser); in hist_browser__run()
437 ui_browser__update_nr_entries(&browser->b, nr_entries); in hist_browser__run()
439 if (browser->hists->stats.nr_lost_warned != in hist_browser__run()
440 browser->hists->stats.nr_events[PERF_RECORD_LOST]) { in hist_browser__run()
441 browser->hists->stats.nr_lost_warned = in hist_browser__run()
442 browser->hists->stats.nr_events[PERF_RECORD_LOST]; in hist_browser__run()
443 ui_browser__warn_lost_events(&browser->b); in hist_browser__run()
446 hists__browser_title(browser->hists, in hist_browser__run()
448 ui_browser__show_title(&browser->b, title); in hist_browser__run()
453 struct hist_entry *h = rb_entry(browser->b.top, in hist_browser__run()
457 seq++, browser->b.nr_entries, in hist_browser__run()
458 browser->hists->nr_entries, in hist_browser__run()
459 browser->b.rows, in hist_browser__run()
460 browser->b.index, in hist_browser__run()
461 browser->b.top_idx, in hist_browser__run()
467 hist_browser__set_folding(browser, false); in hist_browser__run()
471 hist_browser__set_folding(browser, true); in hist_browser__run()
474 browser->show_headers = !browser->show_headers; in hist_browser__run()
475 hist_browser__update_rows(browser); in hist_browser__run()
478 if (hist_browser__toggle_fold(browser)) in hist_browser__run()
486 ui_browser__hide(&browser->b); in hist_browser__run()
500 typedef void (*print_callchain_entry_fn)(struct hist_browser *browser,
506 static void hist_browser__show_callchain_entry(struct hist_browser *browser, in hist_browser__show_callchain_entry() argument
514 bool show_annotated = browser->show_dso && chain->ms.sym && symbol__annotation(chain->ms.sym)->src; in hist_browser__show_callchain_entry()
517 width = browser->b.width - (offset + 2); in hist_browser__show_callchain_entry()
518 if (ui_browser__is_current_entry(&browser->b, row)) { in hist_browser__show_callchain_entry()
519 browser->selection = &chain->ms; in hist_browser__show_callchain_entry()
524 ui_browser__set_color(&browser->b, color); in hist_browser__show_callchain_entry()
525 hist_browser__gotorc(browser, row, 0); in hist_browser__show_callchain_entry()
528 ui_browser__write_graph(&browser->b, show_annotated ? SLSMG_RARROW_CHAR : ' '); in hist_browser__show_callchain_entry()
544 typedef bool (*check_output_full_fn)(struct hist_browser *browser,
547 static bool hist_browser__check_output_full(struct hist_browser *browser, in hist_browser__check_output_full() argument
550 return browser->b.rows == row; in hist_browser__check_output_full()
553 static bool hist_browser__check_dump_full(struct hist_browser *browser __maybe_unused, in hist_browser__check_dump_full()
561 static int hist_browser__show_callchain(struct hist_browser *browser, in hist_browser__show_callchain() argument
603 browser->show_dso); in hist_browser__show_callchain()
614 print(browser, chain, str, offset + extra_offset, row, arg); in hist_browser__show_callchain()
618 if (is_output_full(browser, ++row)) in hist_browser__show_callchain()
633 row += hist_browser__show_callchain(browser, &child->rb_root, in hist_browser__show_callchain()
637 if (is_output_full(browser, row)) in hist_browser__show_callchain()
736 static int hist_browser__show_entry(struct hist_browser *browser, in hist_browser__show_entry() argument
742 int width = browser->b.width; in hist_browser__show_entry()
744 bool current_entry = ui_browser__is_current_entry(&browser->b, row); in hist_browser__show_entry()
750 browser->he_selection = entry; in hist_browser__show_entry()
751 browser->selection = &entry->ms; in hist_browser__show_entry()
761 .b = &browser->b, in hist_browser__show_entry()
771 hist_browser__gotorc(browser, row, 0); in hist_browser__show_entry()
777 if (current_entry && browser->b.navkeypressed) { in hist_browser__show_entry()
778 ui_browser__set_color(&browser->b, in hist_browser__show_entry()
781 ui_browser__set_color(&browser->b, in hist_browser__show_entry()
805 if (!browser->b.navkeypressed) in hist_browser__show_entry()
815 if (folded_sign == '-' && row != browser->b.rows) { in hist_browser__show_entry()
829 printed += hist_browser__show_callchain(browser, in hist_browser__show_entry()
835 browser->he_selection = entry; in hist_browser__show_entry()
878 static void hist_browser__show_headers(struct hist_browser *browser) in hist_browser__show_headers() argument
882 hists__scnprintf_headers(headers, sizeof(headers), browser->hists); in hist_browser__show_headers()
883 ui_browser__gotorc(&browser->b, 0, 0); in hist_browser__show_headers()
884 ui_browser__set_color(&browser->b, HE_COLORSET_ROOT); in hist_browser__show_headers()
885 slsmg_write_nstring(headers, browser->b.width + 1); in hist_browser__show_headers()
888 static void ui_browser__hists_init_top(struct ui_browser *browser) in ui_browser__hists_init_top() argument
890 if (browser->top == NULL) { in ui_browser__hists_init_top()
893 hb = container_of(browser, struct hist_browser, b); in ui_browser__hists_init_top()
894 browser->top = rb_first(&hb->hists->entries); in ui_browser__hists_init_top()
898 static unsigned int hist_browser__refresh(struct ui_browser *browser) in hist_browser__refresh() argument
903 struct hist_browser *hb = container_of(browser, struct hist_browser, b); in hist_browser__refresh()
910 ui_browser__hists_init_top(browser); in hist_browser__refresh()
912 for (nd = browser->top; nd; nd = rb_next(nd)) { in hist_browser__refresh()
924 if (row == browser->rows) in hist_browser__refresh()
963 static void ui_browser__hists_seek(struct ui_browser *browser, in ui_browser__hists_seek() argument
971 hb = container_of(browser, struct hist_browser, b); in ui_browser__hists_seek()
973 if (browser->nr_entries == 0) in ui_browser__hists_seek()
976 ui_browser__hists_init_top(browser); in ui_browser__hists_seek()
980 nd = hists__filter_entries(rb_first(browser->entries), in ui_browser__hists_seek()
984 nd = browser->top; in ui_browser__hists_seek()
987 nd = hists__filter_prev_entries(rb_last(browser->entries), in ui_browser__hists_seek()
999 h = rb_entry(browser->top, struct hist_entry, rb_node); in ui_browser__hists_seek()
1027 browser->top = nd; in ui_browser__hists_seek()
1035 browser->top = nd; in ui_browser__hists_seek()
1048 browser->top = nd; in ui_browser__hists_seek()
1058 browser->top = nd; in ui_browser__hists_seek()
1069 browser->top = nd; in ui_browser__hists_seek()
1084 browser->top = nd; in ui_browser__hists_seek()
1090 static int hist_browser__fprintf_callchain(struct hist_browser *browser, in hist_browser__fprintf_callchain() argument
1101 hist_browser__show_callchain(browser, &he->sorted_chain, 1, 0, total, in hist_browser__fprintf_callchain()
1107 static int hist_browser__fprintf_entry(struct hist_browser *browser, in hist_browser__fprintf_entry() argument
1143 printed += hist_browser__fprintf_callchain(browser, he, fp); in hist_browser__fprintf_entry()
1148 static int hist_browser__fprintf(struct hist_browser *browser, FILE *fp) in hist_browser__fprintf() argument
1150 struct rb_node *nd = hists__filter_entries(rb_first(browser->b.entries), in hist_browser__fprintf()
1151 browser->min_pcnt); in hist_browser__fprintf()
1157 printed += hist_browser__fprintf_entry(browser, h, fp); in hist_browser__fprintf()
1158 nd = hists__filter_entries(rb_next(nd), browser->min_pcnt); in hist_browser__fprintf()
1164 static int hist_browser__dump(struct hist_browser *browser) in hist_browser__dump() argument
1170 scnprintf(filename, sizeof(filename), "perf.hist.%d", browser->print_seq); in hist_browser__dump()
1176 if (++browser->print_seq == 8192) { in hist_browser__dump()
1190 ++browser->print_seq; in hist_browser__dump()
1191 hist_browser__fprintf(browser, fp); in hist_browser__dump()
1200 struct hist_browser *browser = zalloc(sizeof(*browser)); in hist_browser__new() local
1202 if (browser) { in hist_browser__new()
1203 browser->hists = hists; in hist_browser__new()
1204 browser->b.refresh = hist_browser__refresh; in hist_browser__new()
1205 browser->b.refresh_dimensions = hist_browser__refresh_dimensions; in hist_browser__new()
1206 browser->b.seek = ui_browser__hists_seek; in hist_browser__new()
1207 browser->b.use_navkeypressed = true; in hist_browser__new()
1208 browser->show_headers = symbol_conf.show_hist_headers; in hist_browser__new()
1211 return browser; in hist_browser__new()
1214 static void hist_browser__delete(struct hist_browser *browser) in hist_browser__delete() argument
1216 free(browser); in hist_browser__delete()
1219 static struct hist_entry *hist_browser__selected_entry(struct hist_browser *browser) in hist_browser__selected_entry() argument
1221 return browser->he_selection; in hist_browser__selected_entry()
1224 static struct thread *hist_browser__selected_thread(struct hist_browser *browser) in hist_browser__selected_thread() argument
1226 return browser->he_selection->thread; in hist_browser__selected_thread()
1424 struct hist_browser *browser = hist_browser__new(hists); in perf_evsel__hists_browse() local
1468 if (browser == NULL) in perf_evsel__hists_browse()
1472 browser->min_pcnt = min_pcnt; in perf_evsel__hists_browse()
1473 hist_browser__update_nr_entries(browser); in perf_evsel__hists_browse()
1501 key = hist_browser__run(browser, hbt); in perf_evsel__hists_browse()
1503 if (browser->he_selection != NULL) { in perf_evsel__hists_browse()
1504 thread = hist_browser__selected_thread(browser); in perf_evsel__hists_browse()
1505 dso = browser->selection->map ? browser->selection->map->dso : NULL; in perf_evsel__hists_browse()
1519 ui_browser__warning(&browser->b, delay_secs * 2, in perf_evsel__hists_browse()
1525 if (browser->selection == NULL || in perf_evsel__hists_browse()
1526 browser->selection->sym == NULL || in perf_evsel__hists_browse()
1527 browser->selection->map->dso->annotate_warned) in perf_evsel__hists_browse()
1531 hist_browser__dump(browser); in perf_evsel__hists_browse()
1536 browser->show_dso = !browser->show_dso; in perf_evsel__hists_browse()
1547 hist_browser__reset(browser); in perf_evsel__hists_browse()
1576 ui_browser__help_window(&browser->b, in perf_evsel__hists_browse()
1595 if (top == &browser->hists->dso_filter) in perf_evsel__hists_browse()
1597 if (top == &browser->hists->thread_filter) in perf_evsel__hists_browse()
1603 !ui_browser__dialog_yesno(&browser->b, in perf_evsel__hists_browse()
1617 if (browser->selection == NULL) in perf_evsel__hists_browse()
1621 bi = browser->he_selection->branch_info; in perf_evsel__hists_browse()
1640 if (browser->selection->sym != NULL && in perf_evsel__hists_browse()
1641 !browser->selection->map->dso->annotate_warned) { in perf_evsel__hists_browse()
1644 notes = symbol__annotation(browser->selection->sym); in perf_evsel__hists_browse()
1648 browser->selection->sym->name) > 0) { in perf_evsel__hists_browse()
1656 (browser->hists->thread_filter ? "out of" : "into"), in perf_evsel__hists_browse()
1663 (browser->hists->dso_filter ? "out of" : "into"), in perf_evsel__hists_browse()
1667 if (browser->selection != NULL && in perf_evsel__hists_browse()
1668 browser->selection->map != NULL && in perf_evsel__hists_browse()
1673 if (browser->he_selection) { in perf_evsel__hists_browse()
1677 thread__comm_str(browser->he_selection->thread)) > 0) in perf_evsel__hists_browse()
1680 sym = browser->he_selection->ms.sym; in perf_evsel__hists_browse()
1715 he = hist_browser__selected_entry(browser); in perf_evsel__hists_browse()
1726 ms = *browser->selection; in perf_evsel__hists_browse()
1742 ui_browser__update_nr_entries(&browser->b, browser->hists->nr_entries); in perf_evsel__hists_browse()
1744 ui_browser__handle_resize(&browser->b); in perf_evsel__hists_browse()
1747 map__browse(browser->selection->map); in perf_evsel__hists_browse()
1750 if (browser->hists->dso_filter) { in perf_evsel__hists_browse()
1751 pstack__remove(fstack, &browser->hists->dso_filter); in perf_evsel__hists_browse()
1754 browser->hists->dso_filter = NULL; in perf_evsel__hists_browse()
1761 browser->hists->dso_filter = dso; in perf_evsel__hists_browse()
1763 pstack__push(fstack, &browser->hists->dso_filter); in perf_evsel__hists_browse()
1766 hist_browser__reset(browser); in perf_evsel__hists_browse()
1769 if (browser->hists->thread_filter) { in perf_evsel__hists_browse()
1770 pstack__remove(fstack, &browser->hists->thread_filter); in perf_evsel__hists_browse()
1773 thread__zput(browser->hists->thread_filter); in perf_evsel__hists_browse()
1779 browser->hists->thread_filter = thread__get(thread); in perf_evsel__hists_browse()
1781 pstack__push(fstack, &browser->hists->thread_filter); in perf_evsel__hists_browse()
1784 hist_browser__reset(browser); in perf_evsel__hists_browse()
1793 sprintf(script_opt, " -c %s ", thread__comm_str(browser->he_selection->thread)); in perf_evsel__hists_browse()
1796 sprintf(script_opt, " -S %s ", browser->he_selection->ms.sym->name); in perf_evsel__hists_browse()
1814 hist_browser__delete(browser); in perf_evsel__hists_browse()
1827 static void perf_evsel_menu__write(struct ui_browser *browser, in perf_evsel_menu__write() argument
1830 struct perf_evsel_menu *menu = container_of(browser, in perf_evsel_menu__write()
1834 bool current_entry = ui_browser__is_current_entry(browser, row); in perf_evsel_menu__write()
1841 ui_browser__set_color(browser, current_entry ? HE_COLORSET_SELECTED : in perf_evsel_menu__write()
1864 ui_browser__set_color(browser, HE_COLORSET_TOP); in perf_evsel_menu__write()
1871 slsmg_write_nstring(warn, browser->width - printed); in perf_evsel_menu__write()
1966 static bool filter_group_entries(struct ui_browser *browser __maybe_unused, in filter_group_entries()