/linux-4.4.14/tools/perf/ui/ |
H A D | browser.c | 12 #include "browser.h" 17 static int ui_browser__percent_color(struct ui_browser *browser, ui_browser__percent_color() argument 20 if (current && (!browser->use_navkeypressed || browser->navkeypressed)) ui_browser__percent_color() 29 int ui_browser__set_color(struct ui_browser *browser, int color) ui_browser__set_color() argument 31 int ret = browser->current_color; ui_browser__set_color() 32 browser->current_color = color; ui_browser__set_color() 37 void ui_browser__set_percent_color(struct ui_browser *browser, ui_browser__set_percent_color() argument 40 int color = ui_browser__percent_color(browser, percent, current); ui_browser__set_percent_color() 41 ui_browser__set_color(browser, color); ui_browser__set_percent_color() 44 void ui_browser__gotorc(struct ui_browser *browser, int y, int x) ui_browser__gotorc() argument 46 SLsmg_gotorc(browser->y + y, browser->x + x); ui_browser__gotorc() 49 void ui_browser__write_nstring(struct ui_browser *browser __maybe_unused, const char *msg, ui_browser__write_nstring() 55 void ui_browser__printf(struct ui_browser *browser __maybe_unused, const char *fmt, ...) ui_browser__printf() 65 ui_browser__list_head_filter_entries(struct ui_browser *browser, ui_browser__list_head_filter_entries() argument 69 if (!browser->filter || !browser->filter(browser, pos)) ui_browser__list_head_filter_entries() 72 } while (pos != browser->entries); ui_browser__list_head_filter_entries() 78 ui_browser__list_head_filter_prev_entries(struct ui_browser *browser, ui_browser__list_head_filter_prev_entries() argument 82 if (!browser->filter || !browser->filter(browser, pos)) ui_browser__list_head_filter_prev_entries() 85 } while (pos != browser->entries); ui_browser__list_head_filter_prev_entries() 90 void ui_browser__list_head_seek(struct ui_browser *browser, off_t offset, int whence) ui_browser__list_head_seek() argument 92 struct list_head *head = browser->entries; ui_browser__list_head_seek() 95 if (browser->nr_entries == 0) ui_browser__list_head_seek() 100 pos = ui_browser__list_head_filter_entries(browser, head->next); ui_browser__list_head_seek() 103 pos = browser->top; ui_browser__list_head_seek() 106 pos = ui_browser__list_head_filter_prev_entries(browser, head->prev); ui_browser__list_head_seek() 116 pos = ui_browser__list_head_filter_entries(browser, pos->next); ui_browser__list_head_seek() 119 pos = ui_browser__list_head_filter_prev_entries(browser, pos->prev); ui_browser__list_head_seek() 122 browser->top = pos; ui_browser__list_head_seek() 125 void ui_browser__rb_tree_seek(struct ui_browser *browser, off_t offset, int whence) ui_browser__rb_tree_seek() argument 127 struct rb_root *root = browser->entries; ui_browser__rb_tree_seek() 135 nd = browser->top; ui_browser__rb_tree_seek() 152 browser->top = nd; ui_browser__rb_tree_seek() 155 unsigned int ui_browser__rb_tree_refresh(struct ui_browser *browser) ui_browser__rb_tree_refresh() argument 160 if (browser->top == NULL) ui_browser__rb_tree_refresh() 161 browser->top = rb_first(browser->entries); ui_browser__rb_tree_refresh() 163 nd = browser->top; ui_browser__rb_tree_refresh() 166 ui_browser__gotorc(browser, row, 0); ui_browser__rb_tree_refresh() 167 browser->write(browser, nd, row); ui_browser__rb_tree_refresh() 168 if (++row == browser->rows) ui_browser__rb_tree_refresh() 176 bool ui_browser__is_current_entry(struct ui_browser *browser, unsigned row) ui_browser__is_current_entry() argument 178 return browser->top_idx + row == browser->index; ui_browser__is_current_entry() 181 void ui_browser__refresh_dimensions(struct ui_browser *browser) ui_browser__refresh_dimensions() argument 183 browser->width = SLtt_Screen_Cols - 1; ui_browser__refresh_dimensions() 184 browser->height = browser->rows = SLtt_Screen_Rows - 2; ui_browser__refresh_dimensions() 185 browser->y = 1; ui_browser__refresh_dimensions() 186 browser->x = 0; ui_browser__refresh_dimensions() 189 void ui_browser__handle_resize(struct ui_browser *browser) ui_browser__handle_resize() argument 192 ui_browser__show(browser, browser->title, ui_helpline__current); ui_browser__handle_resize() 193 ui_browser__refresh(browser); ui_browser__handle_resize() 196 int ui_browser__warning(struct ui_browser *browser, int timeout, ui_browser__warning() argument 215 ui_browser__handle_resize(browser); ui_browser__warning() 222 int ui_browser__help_window(struct ui_browser *browser, const char *text) ui_browser__help_window() argument 227 ui_browser__handle_resize(browser); ui_browser__help_window() 232 bool ui_browser__dialog_yesno(struct ui_browser *browser, const char *text) ui_browser__dialog_yesno() argument 237 ui_browser__handle_resize(browser); ui_browser__dialog_yesno() 242 void ui_browser__reset_index(struct ui_browser *browser) ui_browser__reset_index() argument 244 browser->index = browser->top_idx = 0; ui_browser__reset_index() 245 browser->seek(browser, 0, SEEK_SET); ui_browser__reset_index() 248 void __ui_browser__show_title(struct ui_browser *browser, const char *title) __ui_browser__show_title() argument 251 ui_browser__set_color(browser, HE_COLORSET_ROOT); __ui_browser__show_title() 252 ui_browser__write_nstring(browser, title, browser->width + 1); __ui_browser__show_title() 255 void ui_browser__show_title(struct ui_browser *browser, const char *title) ui_browser__show_title() argument 258 __ui_browser__show_title(browser, title); ui_browser__show_title() 262 int ui_browser__show(struct ui_browser *browser, const char *title, ui_browser__show() argument 268 if (browser->refresh_dimensions == NULL) ui_browser__show() 269 browser->refresh_dimensions = ui_browser__refresh_dimensions; ui_browser__show() 271 browser->refresh_dimensions(browser); ui_browser__show() 274 __ui_browser__show_title(browser, title); ui_browser__show() 276 browser->title = title; ui_browser__show() 277 zfree(&browser->helpline); ui_browser__show() 280 err = vasprintf(&browser->helpline, helpline, ap); ui_browser__show() 283 ui_helpline__push(browser->helpline); ui_browser__show() 288 void ui_browser__hide(struct ui_browser *browser) ui_browser__hide() argument 292 zfree(&browser->helpline); ui_browser__hide() 296 static void ui_browser__scrollbar_set(struct ui_browser *browser) ui_browser__scrollbar_set() argument 298 int height = browser->height, h = 0, pct = 0, ui_browser__scrollbar_set() 299 col = browser->width, ui_browser__scrollbar_set() 302 if (browser->nr_entries > 1) { ui_browser__scrollbar_set() 303 pct = ((browser->index * (browser->height - 1)) / ui_browser__scrollbar_set() 304 (browser->nr_entries - 1)); ui_browser__scrollbar_set() 310 ui_browser__gotorc(browser, row++, col); ui_browser__scrollbar_set() 318 static int __ui_browser__refresh(struct ui_browser *browser) __ui_browser__refresh() argument 321 int width = browser->width; __ui_browser__refresh() 323 row = browser->refresh(browser); __ui_browser__refresh() 324 ui_browser__set_color(browser, HE_COLORSET_NORMAL); __ui_browser__refresh() 326 if (!browser->use_navkeypressed || browser->navkeypressed) __ui_browser__refresh() 327 ui_browser__scrollbar_set(browser); __ui_browser__refresh() 331 SLsmg_fill_region(browser->y + row, browser->x, __ui_browser__refresh() 332 browser->height - row, width, ' '); __ui_browser__refresh() 337 int ui_browser__refresh(struct ui_browser *browser) ui_browser__refresh() argument 340 __ui_browser__refresh(browser); ui_browser__refresh() 349 * that is why we do a SEEK_SET. Think about 'perf top' in the hists browser 352 void ui_browser__update_nr_entries(struct ui_browser *browser, u32 nr_entries) ui_browser__update_nr_entries() argument 354 off_t offset = nr_entries - browser->nr_entries; ui_browser__update_nr_entries() 356 browser->nr_entries = nr_entries; ui_browser__update_nr_entries() 359 if (browser->top_idx < (u64)-offset) ui_browser__update_nr_entries() 360 offset = -browser->top_idx; ui_browser__update_nr_entries() 362 browser->index += offset; ui_browser__update_nr_entries() 363 browser->top_idx += offset; ui_browser__update_nr_entries() 366 browser->top = NULL; ui_browser__update_nr_entries() 367 browser->seek(browser, browser->top_idx, SEEK_SET); ui_browser__update_nr_entries() 370 int ui_browser__run(struct ui_browser *browser, int delay_secs) ui_browser__run() argument 378 err = __ui_browser__refresh(browser); ui_browser__run() 388 browser->refresh_dimensions(browser); ui_browser__run() 389 __ui_browser__show_title(browser, browser->title); ui_browser__run() 390 ui_helpline__puts(browser->helpline); ui_browser__run() 394 if (browser->use_navkeypressed && !browser->navkeypressed) { ui_browser__run() 396 (browser->columns && (key == K_LEFT || key == K_RIGHT)) || ui_browser__run() 400 browser->navkeypressed = true; ui_browser__run() 408 if (browser->index == browser->nr_entries - 1) ui_browser__run() 410 ++browser->index; ui_browser__run() 411 if (browser->index == browser->top_idx + browser->rows) { ui_browser__run() 412 ++browser->top_idx; ui_browser__run() 413 browser->seek(browser, +1, SEEK_CUR); ui_browser__run() 417 if (browser->index == 0) ui_browser__run() 419 --browser->index; ui_browser__run() 420 if (browser->index < browser->top_idx) { ui_browser__run() 421 --browser->top_idx; ui_browser__run() 422 browser->seek(browser, -1, SEEK_CUR); ui_browser__run() 426 if (!browser->columns) ui_browser__run() 428 if (browser->horiz_scroll < browser->columns - 1) ui_browser__run() 429 ++browser->horiz_scroll; ui_browser__run() 432 if (!browser->columns) ui_browser__run() 434 if (browser->horiz_scroll != 0) ui_browser__run() 435 --browser->horiz_scroll; ui_browser__run() 439 if (browser->top_idx + browser->rows > browser->nr_entries - 1) ui_browser__run() 442 offset = browser->rows; ui_browser__run() 443 if (browser->index + offset > browser->nr_entries - 1) ui_browser__run() 444 offset = browser->nr_entries - 1 - browser->index; ui_browser__run() 445 browser->index += offset; ui_browser__run() 446 browser->top_idx += offset; ui_browser__run() 447 browser->seek(browser, +offset, SEEK_CUR); ui_browser__run() 450 if (browser->top_idx == 0) ui_browser__run() 453 if (browser->top_idx < browser->rows) ui_browser__run() 454 offset = browser->top_idx; ui_browser__run() 456 offset = browser->rows; ui_browser__run() 458 browser->index -= offset; ui_browser__run() 459 browser->top_idx -= offset; ui_browser__run() 460 browser->seek(browser, -offset, SEEK_CUR); ui_browser__run() 463 ui_browser__reset_index(browser); ui_browser__run() 466 offset = browser->rows - 1; ui_browser__run() 467 if (offset >= browser->nr_entries) ui_browser__run() 468 offset = browser->nr_entries - 1; ui_browser__run() 470 browser->index = browser->nr_entries - 1; ui_browser__run() 471 browser->top_idx = browser->index - offset; ui_browser__run() 472 browser->seek(browser, -offset, SEEK_END); ui_browser__run() 482 unsigned int ui_browser__list_head_refresh(struct ui_browser *browser) ui_browser__list_head_refresh() argument 485 struct list_head *head = browser->entries; ui_browser__list_head_refresh() 488 if (browser->top == NULL || browser->top == browser->entries) ui_browser__list_head_refresh() 489 browser->top = ui_browser__list_head_filter_entries(browser, head->next); ui_browser__list_head_refresh() 491 pos = browser->top; ui_browser__list_head_refresh() 494 if (!browser->filter || !browser->filter(browser, pos)) { list_for_each_from() 495 ui_browser__gotorc(browser, row, 0); list_for_each_from() 496 browser->write(browser, pos, row); list_for_each_from() 497 if (++row == browser->rows) list_for_each_from() 592 void ui_browser__argv_seek(struct ui_browser *browser, off_t offset, int whence) ui_browser__argv_seek() argument 596 browser->top = browser->entries; ui_browser__argv_seek() 599 browser->top = browser->top + browser->top_idx + offset; ui_browser__argv_seek() 602 browser->top = browser->top + browser->nr_entries - 1 + offset; ui_browser__argv_seek() 609 unsigned int ui_browser__argv_refresh(struct ui_browser *browser) ui_browser__argv_refresh() argument 611 unsigned int row = 0, idx = browser->top_idx; ui_browser__argv_refresh() 614 if (browser->top == NULL) ui_browser__argv_refresh() 615 browser->top = browser->entries; ui_browser__argv_refresh() 617 pos = (char **)browser->top; ui_browser__argv_refresh() 618 while (idx < browser->nr_entries) { ui_browser__argv_refresh() 619 if (!browser->filter || !browser->filter(browser, *pos)) { ui_browser__argv_refresh() 620 ui_browser__gotorc(browser, row, 0); ui_browser__argv_refresh() 621 browser->write(browser, pos, row); ui_browser__argv_refresh() 622 if (++row == browser->rows) ui_browser__argv_refresh() 633 void __ui_browser__vline(struct ui_browser *browser, unsigned int column, __ui_browser__vline() argument 637 ui_browser__gotorc(browser, start, column); __ui_browser__vline() 642 void ui_browser__write_graph(struct ui_browser *browser __maybe_unused, ui_browser__write_graph() 650 static void __ui_browser__line_arrow_up(struct ui_browser *browser, __ui_browser__line_arrow_up() argument 658 if (start < browser->top_idx + browser->rows) { __ui_browser__line_arrow_up() 659 row = start - browser->top_idx; __ui_browser__line_arrow_up() 660 ui_browser__gotorc(browser, row, column); __ui_browser__line_arrow_up() 662 ui_browser__gotorc(browser, row, column + 1); __ui_browser__line_arrow_up() 668 row = browser->rows - 1; __ui_browser__line_arrow_up() 670 if (end > browser->top_idx) __ui_browser__line_arrow_up() 671 end_row = end - browser->top_idx; __ui_browser__line_arrow_up() 675 ui_browser__gotorc(browser, end_row, column); __ui_browser__line_arrow_up() 678 ui_browser__gotorc(browser, end_row, column); __ui_browser__line_arrow_up() 679 if (end >= browser->top_idx) { __ui_browser__line_arrow_up() 681 ui_browser__gotorc(browser, end_row, column + 1); __ui_browser__line_arrow_up() 683 ui_browser__gotorc(browser, end_row, column + 2); __ui_browser__line_arrow_up() 690 static void __ui_browser__line_arrow_down(struct ui_browser *browser, __ui_browser__line_arrow_down() argument 698 if (start >= browser->top_idx) { __ui_browser__line_arrow_down() 699 row = start - browser->top_idx; __ui_browser__line_arrow_down() 700 ui_browser__gotorc(browser, row, column); __ui_browser__line_arrow_down() 702 ui_browser__gotorc(browser, row, column + 1); __ui_browser__line_arrow_down() 710 if (end >= browser->top_idx + browser->rows) __ui_browser__line_arrow_down() 711 end_row = browser->rows - 1; __ui_browser__line_arrow_down() 713 end_row = end - browser->top_idx; __ui_browser__line_arrow_down() 715 ui_browser__gotorc(browser, row, column); __ui_browser__line_arrow_down() 718 ui_browser__gotorc(browser, end_row, column); __ui_browser__line_arrow_down() 719 if (end < browser->top_idx + browser->rows) { __ui_browser__line_arrow_down() 721 ui_browser__gotorc(browser, end_row, column + 1); __ui_browser__line_arrow_down() 723 ui_browser__gotorc(browser, end_row, column + 2); __ui_browser__line_arrow_down() 730 void __ui_browser__line_arrow(struct ui_browser *browser, unsigned int column, __ui_browser__line_arrow() argument 734 __ui_browser__line_arrow_up(browser, column, start, end); __ui_browser__line_arrow() 736 __ui_browser__line_arrow_down(browser, column, start, end); __ui_browser__line_arrow()
|
H A D | browser.h | 22 void (*refresh_dimensions)(struct ui_browser *browser); 23 unsigned int (*refresh)(struct ui_browser *browser); 24 void (*write)(struct ui_browser *browser, void *entry, int row); 25 void (*seek)(struct ui_browser *browser, off_t offset, int whence); 26 bool (*filter)(struct ui_browser *browser, void *entry); 32 int ui_browser__set_color(struct ui_browser *browser, int color); 33 void ui_browser__set_percent_color(struct ui_browser *browser, 35 bool ui_browser__is_current_entry(struct ui_browser *browser, unsigned row); 36 void ui_browser__refresh_dimensions(struct ui_browser *browser); 37 void ui_browser__reset_index(struct ui_browser *browser); 39 void ui_browser__gotorc(struct ui_browser *browser, int y, int x); 40 void ui_browser__write_nstring(struct ui_browser *browser, const char *msg, 42 void ui_browser__printf(struct ui_browser *browser, const char *fmt, ...); 43 void ui_browser__write_graph(struct ui_browser *browser, int graph); 44 void __ui_browser__line_arrow(struct ui_browser *browser, unsigned int column, 46 void __ui_browser__show_title(struct ui_browser *browser, const char *title); 47 void ui_browser__show_title(struct ui_browser *browser, const char *title); 48 int ui_browser__show(struct ui_browser *browser, const char *title, 50 void ui_browser__hide(struct ui_browser *browser); 51 int ui_browser__refresh(struct ui_browser *browser); 52 int ui_browser__run(struct ui_browser *browser, int delay_secs); 53 void ui_browser__update_nr_entries(struct ui_browser *browser, u32 nr_entries); 54 void ui_browser__handle_resize(struct ui_browser *browser); 55 void __ui_browser__vline(struct ui_browser *browser, unsigned int column, 58 int ui_browser__warning(struct ui_browser *browser, int timeout, 60 int ui_browser__help_window(struct ui_browser *browser, const char *text); 61 bool ui_browser__dialog_yesno(struct ui_browser *browser, const char *text); 67 void ui_browser__argv_seek(struct ui_browser *browser, off_t offset, int whence); 68 unsigned int ui_browser__argv_refresh(struct ui_browser *browser); 70 void ui_browser__rb_tree_seek(struct ui_browser *browser, off_t offset, int whence); 71 unsigned int ui_browser__rb_tree_refresh(struct ui_browser *browser); 73 void ui_browser__list_head_seek(struct ui_browser *browser, off_t offset, int whence); 74 unsigned int ui_browser__list_head_refresh(struct ui_browser *browser);
|
H A D | setup.c | 76 printf("GTK browser requested but could not find %s\n", setup_browser()
|
/linux-4.4.14/tools/perf/ui/browsers/ |
H A D | map.c | 9 #include "../browser.h" 20 static void map_browser__write(struct ui_browser *browser, void *nd, int row) map_browser__write() argument 23 struct map_browser *mb = container_of(browser, struct map_browser, b); map_browser__write() 24 bool current_entry = ui_browser__is_current_entry(browser, row); map_browser__write() 27 ui_browser__set_percent_color(browser, 0, current_entry); map_browser__write() 28 ui_browser__printf(browser, "%*" PRIx64 " %*" PRIx64 " %c ", map_browser__write() 32 width = browser->width - ((mb->addrlen * 2) + 4); map_browser__write() 34 ui_browser__write_nstring(browser, sym->name, width); map_browser__write() 38 static u32 *symbol__browser_index(struct symbol *browser) symbol__browser_index() argument 40 return ((void *)browser) - sizeof(struct rb_node) - sizeof(u32); symbol__browser_index() 43 static int map_browser__search(struct map_browser *browser) map_browser__search() argument 55 sym = map__find_symbol(browser->map, addr, NULL); map_browser__search() 57 sym = map__find_symbol_by_name(browser->map, target, NULL); map_browser__search() 62 browser->b.top = &sym->rb_node; map_browser__search() 63 browser->b.index = browser->b.top_idx = *idx; map_browser__search() 70 static int map_browser__run(struct map_browser *browser) map_browser__run() argument 74 if (ui_browser__show(&browser->b, browser->map->dso->long_name, map_browser__run() 80 key = ui_browser__run(&browser->b, 0); map_browser__run() 85 map_browser__search(browser); map_browser__run() 96 ui_browser__hide(&browser->b); map_browser__run()
|
H A D | annotate.c | 2 #include "../browser.h" 72 static bool disasm_line__filter(struct ui_browser *browser __maybe_unused, disasm_line__filter() 83 static int annotate_browser__jumps_percent_color(struct annotate_browser *browser, annotate_browser__jumps_percent_color() argument 86 if (current && (!browser->b.use_navkeypressed || browser->b.navkeypressed)) annotate_browser__jumps_percent_color() 88 if (nr == browser->max_jump_sources) annotate_browser__jumps_percent_color() 95 static int annotate_browser__set_jumps_percent_color(struct annotate_browser *browser, annotate_browser__set_jumps_percent_color() argument 98 int color = annotate_browser__jumps_percent_color(browser, nr, current); annotate_browser__set_jumps_percent_color() 99 return ui_browser__set_color(&browser->b, color); annotate_browser__set_jumps_percent_color() 111 static void annotate_browser__write(struct ui_browser *browser, void *entry, int row) annotate_browser__write() argument 113 struct annotate_browser *ab = container_of(browser, struct annotate_browser, b); annotate_browser__write() 116 bool current_entry = ui_browser__is_current_entry(browser, row); annotate_browser__write() 118 (!current_entry || (browser->use_navkeypressed && annotate_browser__write() 119 !browser->navkeypressed))); annotate_browser__write() 120 int width = browser->width, printed; annotate_browser__write() 133 ui_browser__set_percent_color(browser, annotate_browser__write() 137 ui_browser__printf(browser, "%6" PRIu64 " ", annotate_browser__write() 140 ui_browser__printf(browser, "%6.2f ", annotate_browser__write() 145 ui_browser__write_nstring(browser, " ", 7 * ab->nr_events); annotate_browser__write() 148 ui_browser__set_percent_color(browser, 0, current_entry); annotate_browser__write() 149 ui_browser__write_nstring(browser, " ", 7 * ab->nr_events); annotate_browser__write() 153 ui_browser__printf(browser, "%*.2f ", IPC_WIDTH - 1, dl->ipc); annotate_browser__write() 155 ui_browser__write_nstring(browser, " ", IPC_WIDTH); annotate_browser__write() 157 ui_browser__printf(browser, "%*" PRIu64 " ", annotate_browser__write() 160 ui_browser__write_nstring(browser, " ", CYCLES_WIDTH); annotate_browser__write() 166 if (!browser->navkeypressed) annotate_browser__write() 170 ui_browser__write_nstring(browser, " ", width - pcnt_width); annotate_browser__write() 178 ui_browser__write_nstring(browser, bf, printed); annotate_browser__write() 179 ui_browser__write_nstring(browser, dl->line, width - printed - pcnt_width + 1); annotate_browser__write() 198 ui_browser__write_nstring(browser, bf, printed); annotate_browser__write() 199 ui_browser__set_color(browser, prev); annotate_browser__write() 211 color = ui_browser__set_color(browser, HE_COLORSET_ADDR); annotate_browser__write() 212 ui_browser__write_nstring(browser, bf, printed); annotate_browser__write() 214 ui_browser__set_color(browser, color); annotate_browser__write() 219 ui_browser__write_graph(browser, fwd ? SLSMG_DARROW_CHAR : annotate_browser__write() 223 ui_browser__write_graph(browser, SLSMG_RARROW_CHAR); annotate_browser__write() 226 ui_browser__write_nstring(browser, " ", 2); annotate_browser__write() 230 ui_browser__write_nstring(browser, " ", 2); annotate_browser__write() 232 ui_browser__write_graph(browser, SLSMG_LARROW_CHAR); annotate_browser__write() 238 ui_browser__write_nstring(browser, bf, width - pcnt_width - 3 - printed); annotate_browser__write() 255 static void annotate_browser__draw_current_jump(struct ui_browser *browser) annotate_browser__draw_current_jump() argument 257 struct annotate_browser *ab = container_of(browser, struct annotate_browser, b); annotate_browser__draw_current_jump() 287 ui_browser__set_color(browser, HE_COLORSET_CODE); annotate_browser__draw_current_jump() 288 __ui_browser__line_arrow(browser, pcnt_width + 2 + ab->addr_width, annotate_browser__draw_current_jump() 292 static unsigned int annotate_browser__refresh(struct ui_browser *browser) annotate_browser__refresh() argument 294 struct annotate_browser *ab = container_of(browser, struct annotate_browser, b); annotate_browser__refresh() 295 int ret = ui_browser__list_head_refresh(browser); annotate_browser__refresh() 299 annotate_browser__draw_current_jump(browser); annotate_browser__refresh() 301 ui_browser__set_color(browser, HE_COLORSET_NORMAL); annotate_browser__refresh() 302 __ui_browser__vline(browser, pcnt_width, 0, browser->height - 1); annotate_browser__refresh() 339 static void annotate_browser__set_top(struct annotate_browser *browser, annotate_browser__set_top() argument 344 ui_browser__refresh_dimensions(&browser->b); annotate_browser__set_top() 345 back = browser->b.height / 2; annotate_browser__set_top() 346 browser->b.top_idx = browser->b.index = idx; annotate_browser__set_top() 348 while (browser->b.top_idx != 0 && back != 0) { annotate_browser__set_top() 351 if (disasm_line__filter(&browser->b, &pos->node)) annotate_browser__set_top() 354 --browser->b.top_idx; annotate_browser__set_top() 358 browser->b.top = pos; annotate_browser__set_top() 359 browser->b.navkeypressed = true; annotate_browser__set_top() 362 static void annotate_browser__set_rb_top(struct annotate_browser *browser, annotate_browser__set_rb_top() argument 374 annotate_browser__set_top(browser, pos, idx); annotate_browser__set_rb_top() 375 browser->curr_hot = nd; annotate_browser__set_rb_top() 378 static void annotate_browser__calc_percent(struct annotate_browser *browser, annotate_browser__calc_percent() argument 381 struct map_symbol *ms = browser->b.priv; annotate_browser__calc_percent() 387 browser->entries = RB_ROOT; annotate_browser__calc_percent() 404 for (i = 0; i < browser->nr_events; i++) { annotate_browser__calc_percent() 422 disasm_rb_tree__insert(&browser->entries, bpos, annotate_browser__calc_percent() 423 browser->nr_events); annotate_browser__calc_percent() 427 browser->curr_hot = rb_last(&browser->entries); annotate_browser__calc_percent() 430 static bool annotate_browser__toggle_source(struct annotate_browser *browser) annotate_browser__toggle_source() argument 434 off_t offset = browser->b.index - browser->b.top_idx; annotate_browser__toggle_source() 436 browser->b.seek(&browser->b, offset, SEEK_CUR); annotate_browser__toggle_source() 437 dl = list_entry(browser->b.top, struct disasm_line, node); annotate_browser__toggle_source() 444 browser->b.nr_entries = browser->nr_entries; annotate_browser__toggle_source() 446 browser->b.seek(&browser->b, -offset, SEEK_CUR); annotate_browser__toggle_source() 447 browser->b.top_idx = bdl->idx - offset; annotate_browser__toggle_source() 448 browser->b.index = bdl->idx; annotate_browser__toggle_source() 452 browser->b.seek(&browser->b, -offset, SEEK_CUR); annotate_browser__toggle_source() 459 browser->b.nr_entries = browser->nr_asm_entries; annotate_browser__toggle_source() 461 browser->b.seek(&browser->b, -offset, SEEK_CUR); annotate_browser__toggle_source() 462 browser->b.top_idx = bdl->idx_asm - offset; annotate_browser__toggle_source() 463 browser->b.index = bdl->idx_asm; annotate_browser__toggle_source() 469 static void annotate_browser__init_asm_mode(struct annotate_browser *browser) annotate_browser__init_asm_mode() argument 471 ui_browser__reset_index(&browser->b); annotate_browser__init_asm_mode() 472 browser->b.nr_entries = browser->nr_asm_entries; annotate_browser__init_asm_mode() 483 static bool annotate_browser__callq(struct annotate_browser *browser, annotate_browser__callq() argument 487 struct map_symbol *ms = browser->b.priv; annotate_browser__callq() 488 struct disasm_line *dl = browser->selection; annotate_browser__callq() 520 ui_browser__show_title(&browser->b, title); annotate_browser__callq() 525 struct disasm_line *annotate_browser__find_offset(struct annotate_browser *browser, annotate_browser__find_offset() argument 528 struct map_symbol *ms = browser->b.priv; annotate_browser__find_offset() 537 if (!disasm_line__filter(&browser->b, &pos->node)) annotate_browser__find_offset() 544 static bool annotate_browser__jump(struct annotate_browser *browser) annotate_browser__jump() argument 546 struct disasm_line *dl = browser->selection; annotate_browser__jump() 552 dl = annotate_browser__find_offset(browser, dl->ops.target.offset, &idx); annotate_browser__jump() 558 annotate_browser__set_top(browser, dl, idx); annotate_browser__jump() 564 struct disasm_line *annotate_browser__find_string(struct annotate_browser *browser, annotate_browser__find_string() argument 567 struct map_symbol *ms = browser->b.priv; annotate_browser__find_string() 570 struct disasm_line *pos = browser->selection; annotate_browser__find_string() 572 *idx = browser->b.index; annotate_browser__find_string() 574 if (disasm_line__filter(&browser->b, &pos->node)) annotate_browser__find_string() 586 static bool __annotate_browser__search(struct annotate_browser *browser) __annotate_browser__search() argument 591 dl = annotate_browser__find_string(browser, browser->search_bf, &idx); __annotate_browser__search() 597 annotate_browser__set_top(browser, dl, idx); __annotate_browser__search() 598 browser->searching_backwards = false; __annotate_browser__search() 603 struct disasm_line *annotate_browser__find_string_reverse(struct annotate_browser *browser, annotate_browser__find_string_reverse() argument 606 struct map_symbol *ms = browser->b.priv; annotate_browser__find_string_reverse() 609 struct disasm_line *pos = browser->selection; annotate_browser__find_string_reverse() 611 *idx = browser->b.index; annotate_browser__find_string_reverse() 613 if (disasm_line__filter(&browser->b, &pos->node)) annotate_browser__find_string_reverse() 625 static bool __annotate_browser__search_reverse(struct annotate_browser *browser) __annotate_browser__search_reverse() argument 630 dl = annotate_browser__find_string_reverse(browser, browser->search_bf, &idx); __annotate_browser__search_reverse() 636 annotate_browser__set_top(browser, dl, idx); __annotate_browser__search_reverse() 637 browser->searching_backwards = true; __annotate_browser__search_reverse() 641 static bool annotate_browser__search_window(struct annotate_browser *browser, annotate_browser__search_window() argument 644 if (ui_browser__input_window("Search", "String: ", browser->search_bf, annotate_browser__search_window() 647 !*browser->search_bf) annotate_browser__search_window() 653 static bool annotate_browser__search(struct annotate_browser *browser, int delay_secs) annotate_browser__search() argument 655 if (annotate_browser__search_window(browser, delay_secs)) annotate_browser__search() 656 return __annotate_browser__search(browser); annotate_browser__search() 661 static bool annotate_browser__continue_search(struct annotate_browser *browser, annotate_browser__continue_search() argument 664 if (!*browser->search_bf) annotate_browser__continue_search() 665 return annotate_browser__search(browser, delay_secs); annotate_browser__continue_search() 667 return __annotate_browser__search(browser); annotate_browser__continue_search() 670 static bool annotate_browser__search_reverse(struct annotate_browser *browser, annotate_browser__search_reverse() argument 673 if (annotate_browser__search_window(browser, delay_secs)) annotate_browser__search_reverse() 674 return __annotate_browser__search_reverse(browser); annotate_browser__search_reverse() 680 bool annotate_browser__continue_search_reverse(struct annotate_browser *browser, annotate_browser__continue_search_reverse() argument 683 if (!*browser->search_bf) annotate_browser__continue_search_reverse() 684 return annotate_browser__search_reverse(browser, delay_secs); annotate_browser__continue_search_reverse() 686 return __annotate_browser__search_reverse(browser); annotate_browser__continue_search_reverse() 689 static void annotate_browser__update_addr_width(struct annotate_browser *browser) annotate_browser__update_addr_width() argument 692 browser->target_width = browser->min_addr_width; annotate_browser__update_addr_width() 694 browser->target_width = browser->max_addr_width; annotate_browser__update_addr_width() 696 browser->addr_width = browser->target_width; annotate_browser__update_addr_width() 699 browser->addr_width += browser->jumps_width + 1; annotate_browser__update_addr_width() 702 static int annotate_browser__run(struct annotate_browser *browser, annotate_browser__run() argument 707 struct map_symbol *ms = browser->b.priv; annotate_browser__run() 715 if (ui_browser__show(&browser->b, title, help) < 0) annotate_browser__run() 718 annotate_browser__calc_percent(browser, evsel); annotate_browser__run() 720 if (browser->curr_hot) { annotate_browser__run() 721 annotate_browser__set_rb_top(browser, browser->curr_hot); annotate_browser__run() 722 browser->b.navkeypressed = false; annotate_browser__run() 725 nd = browser->curr_hot; annotate_browser__run() 728 key = ui_browser__run(&browser->b, delay_secs); annotate_browser__run() 731 annotate_browser__calc_percent(browser, evsel); annotate_browser__run() 753 nd = rb_last(&browser->entries); annotate_browser__run() 755 nd = browser->curr_hot; annotate_browser__run() 761 nd = rb_first(&browser->entries); annotate_browser__run() 763 nd = browser->curr_hot; annotate_browser__run() 767 ui_browser__help_window(&browser->b, annotate_browser__run() 795 nd = browser->curr_hot; annotate_browser__run() 798 if (annotate_browser__toggle_source(browser)) annotate_browser__run() 803 annotate_browser__update_addr_width(browser); annotate_browser__run() 810 annotate_browser__update_addr_width(browser); annotate_browser__run() 813 if (annotate_browser__search(browser, delay_secs)) { annotate_browser__run() 819 if (browser->searching_backwards ? annotate_browser__run() 820 annotate_browser__continue_search_reverse(browser, delay_secs) : annotate_browser__run() 821 annotate_browser__continue_search(browser, delay_secs)) annotate_browser__run() 825 if (annotate_browser__search_reverse(browser, delay_secs)) annotate_browser__run() 832 seq++, browser->b.nr_entries, annotate_browser__run() 833 browser->b.height, annotate_browser__run() 834 browser->b.index, annotate_browser__run() 835 browser->b.top_idx, annotate_browser__run() 836 browser->nr_asm_entries); annotate_browser__run() 841 if (browser->selection == NULL) annotate_browser__run() 843 else if (browser->selection->offset == -1) annotate_browser__run() 845 else if (!browser->selection->ins) { annotate_browser__run() 846 if (strcmp(browser->selection->name, "retq")) annotate_browser__run() 849 } else if (!(annotate_browser__jump(browser) || annotate_browser__run() 850 annotate_browser__callq(browser, evsel, hbt))) { annotate_browser__run() 858 annotate_browser__update_addr_width(browser); annotate_browser__run() 870 annotate_browser__set_rb_top(browser, nd); annotate_browser__run() 873 ui_browser__hide(&browser->b); annotate_browser__run() 898 static unsigned count_insn(struct annotate_browser *browser, u64 start, u64 end) count_insn() argument 904 if (browser->offsets[offset]) count_insn() 910 static void count_and_fill(struct annotate_browser *browser, u64 start, u64 end, count_and_fill() argument 916 n_insn = count_insn(browser, start, end); count_and_fill() 925 struct disasm_line *dl = browser->offsets[offset]; count_and_fill() 938 static void annotate__compute_ipc(struct annotate_browser *browser, size_t size, annotate__compute_ipc() argument 956 count_and_fill(browser, ch->start, offset, ch); annotate__compute_ipc() 957 dl = browser->offsets[offset]; annotate__compute_ipc() 960 browser->have_cycles = true; annotate__compute_ipc() 966 static void annotate_browser__mark_jump_targets(struct annotate_browser *browser, annotate_browser__mark_jump_targets() argument 970 struct map_symbol *ms = browser->b.priv; annotate_browser__mark_jump_targets() 978 struct disasm_line *dl = browser->offsets[offset], *dlt; annotate_browser__mark_jump_targets() 984 dlt = browser->offsets[dl->ops.target.offset]; annotate_browser__mark_jump_targets() 993 if (++bdlt->jump_sources > browser->max_jump_sources) annotate_browser__mark_jump_targets() 994 browser->max_jump_sources = bdlt->jump_sources; annotate_browser__mark_jump_targets() 996 ++browser->nr_jumps; annotate_browser__mark_jump_targets() 1020 struct annotate_browser browser = { symbol__tui_annotate() local 1042 browser.offsets = zalloc(size * sizeof(struct disasm_line *)); symbol__tui_annotate() 1043 if (browser.offsets == NULL) { symbol__tui_annotate() 1062 browser.start = map__rip_2objdump(map, sym->start); symbol__tui_annotate() 1068 if (browser.b.width < line_len) symbol__tui_annotate() 1069 browser.b.width = line_len; symbol__tui_annotate() 1071 bpos->idx = browser.nr_entries++; symbol__tui_annotate() 1073 bpos->idx_asm = browser.nr_asm_entries++; symbol__tui_annotate() 1082 browser.offsets[pos->offset] = pos; symbol__tui_annotate() 1087 annotate_browser__mark_jump_targets(&browser, size); symbol__tui_annotate() 1088 annotate__compute_ipc(&browser, size, sym); symbol__tui_annotate() 1090 browser.addr_width = browser.target_width = browser.min_addr_width = hex_width(size); symbol__tui_annotate() 1091 browser.max_addr_width = hex_width(sym->end); symbol__tui_annotate() 1092 browser.jumps_width = width_jumps(browser.max_jump_sources); symbol__tui_annotate() 1093 browser.nr_events = nr_pcnt; symbol__tui_annotate() 1094 browser.b.nr_entries = browser.nr_entries; symbol__tui_annotate() 1095 browser.b.entries = ¬es->src->source, symbol__tui_annotate() 1096 browser.b.width += 18; /* Percentage */ symbol__tui_annotate() 1099 annotate_browser__init_asm_mode(&browser); symbol__tui_annotate() 1101 annotate_browser__update_addr_width(&browser); symbol__tui_annotate() 1103 ret = annotate_browser__run(&browser, evsel, hbt); symbol__tui_annotate() 1110 free(browser.offsets); symbol__tui_annotate()
|
H A D | hists.c | 15 #include "../browser.h" 53 static int hist_browser__get_folding(struct hist_browser *browser) hist_browser__get_folding() argument 56 struct hists *hists = browser->hists; hist_browser__get_folding() 60 (nd = hists__filter_entries(nd, browser->min_pcnt)) != NULL; hist_browser__get_folding() 86 struct ui_browser *browser = &hb->b; hist_browser__update_rows() local 89 browser->rows = browser->height - header_offset; hist_browser__update_rows() 94 index_row = browser->index - browser->top_idx; hist_browser__update_rows() 95 if (index_row >= browser->rows) hist_browser__update_rows() 96 browser->index -= index_row - browser->rows + 1; hist_browser__update_rows() 99 static void hist_browser__refresh_dimensions(struct ui_browser *browser) hist_browser__refresh_dimensions() argument 101 struct hist_browser *hb = container_of(browser, struct hist_browser, b); hist_browser__refresh_dimensions() 104 browser->width = 3 + (hists__sort_list_width(hb->hists) + sizeof("[k]")); hist_browser__refresh_dimensions() 107 * before updating browser->width, as it will invalidate the hist_browser__refresh_dimensions() 111 ui_browser__refresh_dimensions(browser); hist_browser__refresh_dimensions() 115 static void hist_browser__gotorc(struct hist_browser *browser, int row, int column) hist_browser__gotorc() argument 117 u16 header_offset = browser->show_headers ? 1 : 0; hist_browser__gotorc() 119 ui_browser__gotorc(&browser->b, row + header_offset, column); hist_browser__gotorc() 122 static void hist_browser__reset(struct hist_browser *browser) hist_browser__reset() argument 128 browser->nr_callchain_rows = 0; hist_browser__reset() 130 hist_browser__update_nr_entries(browser); hist_browser__reset() 131 browser->b.nr_entries = hist_browser__nr_entries(browser); hist_browser__reset() 132 hist_browser__refresh_dimensions(&browser->b); hist_browser__reset() 133 ui_browser__reset_index(&browser->b); hist_browser__reset() 294 static bool hist_browser__toggle_fold(struct hist_browser *browser) hist_browser__toggle_fold() argument 296 struct hist_entry *he = browser->he_selection; hist_browser__toggle_fold() 297 struct map_symbol *ms = browser->selection; hist_browser__toggle_fold() 311 browser->b.nr_entries -= he->nr_rows; hist_browser__toggle_fold() 312 browser->nr_callchain_rows -= he->nr_rows; hist_browser__toggle_fold() 319 browser->b.nr_entries += he->nr_rows; hist_browser__toggle_fold() 320 browser->nr_callchain_rows += he->nr_rows; hist_browser__toggle_fold() 396 __hist_browser__set_folding(struct hist_browser *browser, bool unfold) __hist_browser__set_folding() argument 399 struct hists *hists = browser->hists; __hist_browser__set_folding() 402 (nd = hists__filter_entries(nd, browser->min_pcnt)) != NULL; __hist_browser__set_folding() 406 browser->nr_callchain_rows += he->nr_rows; __hist_browser__set_folding() 410 static void hist_browser__set_folding(struct hist_browser *browser, bool unfold) hist_browser__set_folding() argument 412 browser->nr_callchain_rows = 0; hist_browser__set_folding() 413 __hist_browser__set_folding(browser, unfold); hist_browser__set_folding() 415 browser->b.nr_entries = hist_browser__nr_entries(browser); hist_browser__set_folding() 417 ui_browser__reset_index(&browser->b); hist_browser__set_folding() 420 static void ui_browser__warn_lost_events(struct ui_browser *browser) ui_browser__warn_lost_events() argument 422 ui_browser__warning(browser, 4, ui_browser__warn_lost_events() 429 static int hist_browser__run(struct hist_browser *browser, const char *help) hist_browser__run() argument 433 struct hist_browser_timer *hbt = browser->hbt; hist_browser__run() 436 browser->b.entries = &browser->hists->entries; hist_browser__run() 437 browser->b.nr_entries = hist_browser__nr_entries(browser); hist_browser__run() 439 hists__browser_title(browser->hists, hbt, title, sizeof(title)); hist_browser__run() 441 if (ui_browser__show(&browser->b, title, help) < 0) hist_browser__run() 445 key = ui_browser__run(&browser->b, delay_secs); hist_browser__run() 452 if (hist_browser__has_filter(browser)) hist_browser__run() 453 hist_browser__update_nr_entries(browser); hist_browser__run() 455 nr_entries = hist_browser__nr_entries(browser); hist_browser__run() 456 ui_browser__update_nr_entries(&browser->b, nr_entries); hist_browser__run() 458 if (browser->hists->stats.nr_lost_warned != hist_browser__run() 459 browser->hists->stats.nr_events[PERF_RECORD_LOST]) { hist_browser__run() 460 browser->hists->stats.nr_lost_warned = hist_browser__run() 461 browser->hists->stats.nr_events[PERF_RECORD_LOST]; hist_browser__run() 462 ui_browser__warn_lost_events(&browser->b); hist_browser__run() 465 hists__browser_title(browser->hists, hist_browser__run() 467 ui_browser__show_title(&browser->b, title); hist_browser__run() 472 struct hist_entry *h = rb_entry(browser->b.top, hist_browser__run() 476 seq++, browser->b.nr_entries, hist_browser__run() 477 browser->hists->nr_entries, hist_browser__run() 478 browser->b.rows, hist_browser__run() 479 browser->b.index, hist_browser__run() 480 browser->b.top_idx, hist_browser__run() 486 hist_browser__set_folding(browser, false); hist_browser__run() 490 hist_browser__set_folding(browser, true); hist_browser__run() 493 browser->show_headers = !browser->show_headers; hist_browser__run() 494 hist_browser__update_rows(browser); hist_browser__run() 497 if (hist_browser__toggle_fold(browser)) hist_browser__run() 505 ui_browser__hide(&browser->b); hist_browser__run() 510 /* for hists browser */ 519 typedef void (*print_callchain_entry_fn)(struct hist_browser *browser, 525 static void hist_browser__show_callchain_entry(struct hist_browser *browser, hist_browser__show_callchain_entry() argument 533 bool show_annotated = browser->show_dso && chain->ms.sym && symbol__annotation(chain->ms.sym)->src; hist_browser__show_callchain_entry() 536 width = browser->b.width - (offset + 2); hist_browser__show_callchain_entry() 537 if (ui_browser__is_current_entry(&browser->b, row)) { hist_browser__show_callchain_entry() 538 browser->selection = &chain->ms; hist_browser__show_callchain_entry() 543 ui_browser__set_color(&browser->b, color); hist_browser__show_callchain_entry() 544 hist_browser__gotorc(browser, row, 0); hist_browser__show_callchain_entry() 545 ui_browser__write_nstring(&browser->b, " ", offset); hist_browser__show_callchain_entry() 546 ui_browser__printf(&browser->b, "%c", folded_sign); hist_browser__show_callchain_entry() 547 ui_browser__write_graph(&browser->b, show_annotated ? SLSMG_RARROW_CHAR : ' '); hist_browser__show_callchain_entry() 548 ui_browser__write_nstring(&browser->b, str, width); hist_browser__show_callchain_entry() 563 typedef bool (*check_output_full_fn)(struct hist_browser *browser, 566 static bool hist_browser__check_output_full(struct hist_browser *browser, hist_browser__check_output_full() argument 569 return browser->b.rows == row; hist_browser__check_output_full() 572 static bool hist_browser__check_dump_full(struct hist_browser *browser __maybe_unused, hist_browser__check_dump_full() 580 static int hist_browser__show_callchain(struct hist_browser *browser, hist_browser__show_callchain() argument 622 browser->show_dso); hist_browser__show_callchain() 633 print(browser, chain, str, offset + extra_offset, row, arg); hist_browser__show_callchain() 637 if (is_output_full(browser, ++row)) hist_browser__show_callchain() 652 row += hist_browser__show_callchain(browser, &child->rb_root, hist_browser__show_callchain() 656 if (is_output_full(browser, row)) hist_browser__show_callchain() 756 static int hist_browser__show_entry(struct hist_browser *browser, hist_browser__show_entry() argument 762 int width = browser->b.width; hist_browser__show_entry() 764 bool current_entry = ui_browser__is_current_entry(&browser->b, row); hist_browser__show_entry() 770 browser->he_selection = entry; hist_browser__show_entry() 771 browser->selection = &entry->ms; hist_browser__show_entry() 781 .b = &browser->b, hist_browser__show_entry() 792 hist_browser__gotorc(browser, row, 0); hist_browser__show_entry() 795 if (perf_hpp__should_skip(fmt) || column++ < browser->b.horiz_scroll) perf_hpp__for_each_format() 798 if (current_entry && browser->b.navkeypressed) { perf_hpp__for_each_format() 799 ui_browser__set_color(&browser->b, perf_hpp__for_each_format() 802 ui_browser__set_color(&browser->b, perf_hpp__for_each_format() 808 ui_browser__printf(&browser->b, "%c ", folded_sign); perf_hpp__for_each_format() 813 ui_browser__printf(&browser->b, " "); perf_hpp__for_each_format() 821 ui_browser__printf(&browser->b, "%s", s); perf_hpp__for_each_format() 826 if (!browser->b.navkeypressed) 829 ui_browser__write_nstring(&browser->b, "", width); 836 if (folded_sign == '-' && row != browser->b.rows) { 850 printed += hist_browser__show_callchain(browser, 856 browser->he_selection = entry; 868 static int hists_browser__scnprintf_headers(struct hist_browser *browser, char *buf, size_t size) hists_browser__scnprintf_headers() argument 870 struct hists *hists = browser->hists; hists_browser__scnprintf_headers() 886 if (perf_hpp__should_skip(fmt) || column++ < browser->b.horiz_scroll) perf_hpp__for_each_format() 901 static void hist_browser__show_headers(struct hist_browser *browser) hist_browser__show_headers() argument 905 hists_browser__scnprintf_headers(browser, headers, sizeof(headers)); hist_browser__show_headers() 906 ui_browser__gotorc(&browser->b, 0, 0); hist_browser__show_headers() 907 ui_browser__set_color(&browser->b, HE_COLORSET_ROOT); hist_browser__show_headers() 908 ui_browser__write_nstring(&browser->b, headers, browser->b.width + 1); hist_browser__show_headers() 911 static void ui_browser__hists_init_top(struct ui_browser *browser) ui_browser__hists_init_top() argument 913 if (browser->top == NULL) { ui_browser__hists_init_top() 916 hb = container_of(browser, struct hist_browser, b); ui_browser__hists_init_top() 917 browser->top = rb_first(&hb->hists->entries); ui_browser__hists_init_top() 921 static unsigned int hist_browser__refresh(struct ui_browser *browser) hist_browser__refresh() argument 926 struct hist_browser *hb = container_of(browser, struct hist_browser, b); hist_browser__refresh() 933 ui_browser__hists_init_top(browser); hist_browser__refresh() 937 for (nd = browser->top; nd; nd = rb_next(nd)) { hist_browser__refresh() 949 if (row == browser->rows) hist_browser__refresh() 988 static void ui_browser__hists_seek(struct ui_browser *browser, ui_browser__hists_seek() argument 996 hb = container_of(browser, struct hist_browser, b); ui_browser__hists_seek() 998 if (browser->nr_entries == 0) ui_browser__hists_seek() 1001 ui_browser__hists_init_top(browser); ui_browser__hists_seek() 1005 nd = hists__filter_entries(rb_first(browser->entries), ui_browser__hists_seek() 1009 nd = browser->top; ui_browser__hists_seek() 1012 nd = hists__filter_prev_entries(rb_last(browser->entries), ui_browser__hists_seek() 1024 h = rb_entry(browser->top, struct hist_entry, rb_node); ui_browser__hists_seek() 1055 browser->top = nd; ui_browser__hists_seek() 1063 browser->top = nd; ui_browser__hists_seek() 1076 browser->top = nd; ui_browser__hists_seek() 1086 browser->top = nd; ui_browser__hists_seek() 1097 browser->top = nd; ui_browser__hists_seek() 1112 browser->top = nd; ui_browser__hists_seek() 1118 static int hist_browser__fprintf_callchain(struct hist_browser *browser, hist_browser__fprintf_callchain() argument 1129 hist_browser__show_callchain(browser, &he->sorted_chain, 1, 0, total, hist_browser__fprintf_callchain() 1135 static int hist_browser__fprintf_entry(struct hist_browser *browser, hist_browser__fprintf_entry() argument 1171 printed += hist_browser__fprintf_callchain(browser, he, fp); 1176 static int hist_browser__fprintf(struct hist_browser *browser, FILE *fp) hist_browser__fprintf() argument 1178 struct rb_node *nd = hists__filter_entries(rb_first(browser->b.entries), hist_browser__fprintf() 1179 browser->min_pcnt); hist_browser__fprintf() 1185 printed += hist_browser__fprintf_entry(browser, h, fp); hist_browser__fprintf() 1186 nd = hists__filter_entries(rb_next(nd), browser->min_pcnt); hist_browser__fprintf() 1192 static int hist_browser__dump(struct hist_browser *browser) hist_browser__dump() argument 1198 scnprintf(filename, sizeof(filename), "perf.hist.%d", browser->print_seq); hist_browser__dump() 1204 if (++browser->print_seq == 8192) { hist_browser__dump() 1218 ++browser->print_seq; hist_browser__dump() 1219 hist_browser__fprintf(browser, fp); hist_browser__dump() 1230 struct hist_browser *browser = zalloc(sizeof(*browser)); hist_browser__new() local 1232 if (browser) { hist_browser__new() 1233 browser->hists = hists; hist_browser__new() 1234 browser->b.refresh = hist_browser__refresh; hist_browser__new() 1235 browser->b.refresh_dimensions = hist_browser__refresh_dimensions; hist_browser__new() 1236 browser->b.seek = ui_browser__hists_seek; hist_browser__new() 1237 browser->b.use_navkeypressed = true; hist_browser__new() 1238 browser->show_headers = symbol_conf.show_hist_headers; hist_browser__new() 1239 browser->hbt = hbt; hist_browser__new() 1240 browser->env = env; hist_browser__new() 1243 return browser; hist_browser__new() 1246 static void hist_browser__delete(struct hist_browser *browser) hist_browser__delete() argument 1248 free(browser); hist_browser__delete() 1251 static struct hist_entry *hist_browser__selected_entry(struct hist_browser *browser) hist_browser__selected_entry() argument 1253 return browser->he_selection; hist_browser__selected_entry() 1256 static struct thread *hist_browser__selected_thread(struct hist_browser *browser) hist_browser__selected_thread() argument 1258 return browser->he_selection->thread; hist_browser__selected_thread() 1261 /* Check whether the browser is for 'top' or 'report' */ is_report_browser() 1444 int (*fn)(struct hist_browser *browser, struct popup_action *act); 1448 do_annotate(struct hist_browser *browser, struct popup_action *act) do_annotate() argument 1455 if (!objdump_path && perf_env__lookup_objdump(browser->env)) do_annotate() 1462 evsel = hists_to_evsel(browser->hists); do_annotate() 1463 err = map_symbol__tui_annotate(&act->ms, evsel, browser->hbt); do_annotate() 1464 he = hist_browser__selected_entry(browser); do_annotate() 1472 ui_browser__update_nr_entries(&browser->b, browser->hists->nr_entries); do_annotate() 1474 ui_browser__handle_resize(&browser->b); do_annotate() 1479 add_annotate_opt(struct hist_browser *browser __maybe_unused, add_annotate_opt() 1496 do_zoom_thread(struct hist_browser *browser, struct popup_action *act) do_zoom_thread() argument 1500 if (browser->hists->thread_filter) { do_zoom_thread() 1501 pstack__remove(browser->pstack, &browser->hists->thread_filter); do_zoom_thread() 1503 thread__zput(browser->hists->thread_filter); do_zoom_thread() 1509 browser->hists->thread_filter = thread__get(thread); do_zoom_thread() 1511 pstack__push(browser->pstack, &browser->hists->thread_filter); do_zoom_thread() 1514 hists__filter_by_thread(browser->hists); do_zoom_thread() 1515 hist_browser__reset(browser); do_zoom_thread() 1520 add_thread_opt(struct hist_browser *browser, struct popup_action *act, add_thread_opt() argument 1527 browser->hists->thread_filter ? "out of" : "into", add_thread_opt() 1538 do_zoom_dso(struct hist_browser *browser, struct popup_action *act) do_zoom_dso() argument 1542 if (browser->hists->dso_filter) { do_zoom_dso() 1543 pstack__remove(browser->pstack, &browser->hists->dso_filter); do_zoom_dso() 1545 browser->hists->dso_filter = NULL; do_zoom_dso() 1552 browser->hists->dso_filter = map->dso; do_zoom_dso() 1554 pstack__push(browser->pstack, &browser->hists->dso_filter); do_zoom_dso() 1557 hists__filter_by_dso(browser->hists); do_zoom_dso() 1558 hist_browser__reset(browser); do_zoom_dso() 1563 add_dso_opt(struct hist_browser *browser, struct popup_action *act, add_dso_opt() argument 1570 browser->hists->dso_filter ? "out of" : "into", add_dso_opt() 1580 do_browse_map(struct hist_browser *browser __maybe_unused, do_browse_map() 1588 add_map_opt(struct hist_browser *browser __maybe_unused, add_map_opt() 1603 do_run_script(struct hist_browser *browser __maybe_unused, do_run_script() 1622 add_script_opt(struct hist_browser *browser __maybe_unused, add_script_opt() 1646 do_switch_data(struct hist_browser *browser __maybe_unused, do_switch_data() 1659 add_switch_opt(struct hist_browser *browser, add_switch_opt() argument 1662 if (!is_report_browser(browser->hbt)) add_switch_opt() 1673 do_exit_browser(struct hist_browser *browser __maybe_unused, do_exit_browser() 1680 add_exit_opt(struct hist_browser *browser __maybe_unused, add_exit_opt() 1691 do_zoom_socket(struct hist_browser *browser, struct popup_action *act) do_zoom_socket() argument 1693 if (browser->hists->socket_filter > -1) { do_zoom_socket() 1694 pstack__remove(browser->pstack, &browser->hists->socket_filter); do_zoom_socket() 1695 browser->hists->socket_filter = -1; do_zoom_socket() 1698 browser->hists->socket_filter = act->socket; do_zoom_socket() 1700 pstack__push(browser->pstack, &browser->hists->socket_filter); do_zoom_socket() 1703 hists__filter_by_socket(browser->hists); do_zoom_socket() 1704 hist_browser__reset(browser); do_zoom_socket() 1709 add_socket_opt(struct hist_browser *browser, struct popup_action *act, add_socket_opt() argument 1716 (browser->hists->socket_filter > -1) ? "out of" : "into", add_socket_opt() 1751 struct hist_browser *browser = hist_browser__new(hists, hbt, env); perf_evsel__hists_browse() local 1766 "q/ESC/CTRL+C Exit browser\n\n" \ perf_evsel__hists_browse() 1798 if (browser == NULL) perf_evsel__hists_browse() 1806 browser->min_pcnt = min_pcnt; perf_evsel__hists_browse() 1807 hist_browser__update_nr_entries(browser); perf_evsel__hists_browse() 1810 browser->pstack = pstack__new(3); perf_evsel__hists_browse() 1811 if (browser->pstack == NULL) perf_evsel__hists_browse() 1828 ++browser->b.columns; perf_hpp__for_each_format() 1842 key = hist_browser__run(browser, helpline); 1844 if (browser->he_selection != NULL) { 1845 thread = hist_browser__selected_thread(browser); 1846 map = browser->selection->map; 1847 socked_id = browser->he_selection->socket; 1855 * Exit the browser, let hists__browser_tree 1861 ui_browser__warning(&browser->b, delay_secs * 2, 1867 if (browser->selection == NULL || 1868 browser->selection->sym == NULL || 1869 browser->selection->map->dso->annotate_warned) 1872 actions->ms.map = browser->selection->map; 1873 actions->ms.sym = browser->selection->sym; 1874 do_annotate(browser, actions); 1877 hist_browser__dump(browser); 1881 do_zoom_dso(browser, actions); 1884 browser->show_dso = !browser->show_dso; 1888 do_zoom_thread(browser, actions); 1892 do_zoom_socket(browser, actions); 1902 hist_browser__reset(browser); 1909 do_run_script(browser, actions); 1914 key = do_switch_data(browser, actions); 1937 ui_browser__help_window(&browser->b, 1949 if (pstack__empty(browser->pstack)) { 1957 ui_browser__dialog_yesno(&browser->b, 1963 top = pstack__peek(browser->pstack); 1964 if (top == &browser->hists->dso_filter) { 1970 do_zoom_dso(browser, actions); 1971 } else if (top == &browser->hists->thread_filter) { 1972 do_zoom_thread(browser, actions); 1973 } else if (top == &browser->hists->socket_filter) { 1974 do_zoom_socket(browser, actions); 2008 if (browser->selection == NULL) 2012 bi = browser->he_selection->branch_info; 2017 nr_options += add_annotate_opt(browser, 2023 nr_options += add_annotate_opt(browser, 2029 nr_options += add_annotate_opt(browser, 2032 browser->selection->map, 2033 browser->selection->sym); 2036 nr_options += add_thread_opt(browser, &actions[nr_options], 2038 nr_options += add_dso_opt(browser, &actions[nr_options], 2040 nr_options += add_map_opt(browser, &actions[nr_options], 2042 browser->selection ? 2043 browser->selection->map : NULL); 2044 nr_options += add_socket_opt(browser, &actions[nr_options], 2048 if (browser->he_selection) { 2049 nr_options += add_script_opt(browser, 2054 * Note that browser->selection != NULL 2055 * when browser->he_selection is not NULL, 2056 * so we don't need to check browser->selection 2057 * before fetching browser->selection->sym like what 2058 * we do before fetching browser->selection->map. 2062 if (sort__has_sym && browser->selection->sym) { 2063 nr_options += add_script_opt(browser, 2066 NULL, browser->selection->sym); 2069 nr_options += add_script_opt(browser, &actions[nr_options], 2071 nr_options += add_switch_opt(browser, &actions[nr_options], 2074 nr_options += add_exit_opt(browser, &actions[nr_options], 2085 key = act->fn(browser, act); 2092 pstack__delete(browser->pstack); 2094 hist_browser__delete(browser); 2107 static void perf_evsel_menu__write(struct ui_browser *browser, perf_evsel_menu__write() argument 2110 struct perf_evsel_menu *menu = container_of(browser, perf_evsel_menu__write() 2114 bool current_entry = ui_browser__is_current_entry(browser, row); perf_evsel_menu__write() 2121 ui_browser__set_color(browser, current_entry ? HE_COLORSET_SELECTED : perf_evsel_menu__write() 2138 ui_browser__printf(browser, "%s", bf); 2144 ui_browser__set_color(browser, HE_COLORSET_TOP); 2151 ui_browser__write_nstring(browser, warn, browser->width - printed); 2242 static bool filter_group_entries(struct ui_browser *browser __maybe_unused, filter_group_entries()
|
H A D | scripts.c | 10 #include "../browser.h" 75 static void script_browser__write(struct ui_browser *browser, script_browser__write() argument 79 bool current_entry = ui_browser__is_current_entry(browser, row); script_browser__write() 81 ui_browser__set_color(browser, current_entry ? HE_COLORSET_SELECTED : script_browser__write() 84 ui_browser__write_nstring(browser, sline->line, browser->width); script_browser__write() 87 static int script_browser__run(struct perf_script_browser *browser) script_browser__run() argument 91 if (ui_browser__show(&browser->b, browser->script_name, script_browser__run() 96 key = ui_browser__run(&browser->b, 0); script_browser__run() 102 ui_browser__hide(&browser->b); script_browser__run()
|
H A D | header.c | 3 #include "ui/browser.h" 11 static void ui_browser__argv_write(struct ui_browser *browser, ui_browser__argv_write() argument 17 bool current_entry = ui_browser__is_current_entry(browser, row); ui_browser__argv_write() 18 unsigned long offset = (unsigned long)browser->priv; ui_browser__argv_write() 25 ui_browser__set_color(browser, current_entry ? HE_COLORSET_SELECTED : ui_browser__argv_write() 28 ui_browser__write_nstring(browser, str, browser->width); ui_browser__argv_write() 40 "q/ESC/CTRL+C Exit browser"; list_menu__run()
|
/linux-4.4.14/tools/perf/ui/tui/ |
H A D | util.c | 9 #include "../browser.h" 16 static void ui_browser__argv_write(struct ui_browser *browser, ui_browser__argv_write() argument 20 bool current_entry = ui_browser__is_current_entry(browser, row); ui_browser__argv_write() 22 ui_browser__set_color(browser, current_entry ? HE_COLORSET_SELECTED : ui_browser__argv_write() 24 ui_browser__write_nstring(browser, *arg, browser->width); ui_browser__argv_write()
|
H A D | progress.c | 6 #include "../browser.h"
|
H A D | setup.c | 9 #include "../browser.h"
|
/linux-4.4.14/drivers/staging/media/cxd2099/ |
H A D | cxd2099.h | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | cxd2099.c | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
/linux-4.4.14/drivers/media/dvb-frontends/ |
H A D | drxd.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | isl6421.h | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | lnbp22.h | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | tdhd1.h | 20 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | drxd_firm.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | isl6405.h | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | lnbp21.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | bsbe1-d01a.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | bsbe1.h | 19 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | lnbp22.c | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | bsru6.h | 19 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | isl6405.c | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | isl6421.c | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | lnbp21.c | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | drxd_firm.c | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | drxd_map_firm.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | tda18271c2dd.c | 22 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | drxd_hard.c | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | drxk_hard.c | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
/linux-4.4.14/drivers/media/pci/ddbridge/ |
H A D | ddbridge-regs.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | ddbridge.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | ddbridge-core.c | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
/linux-4.4.14/drivers/media/pci/ngene/ |
H A D | ngene-i2c.c | 27 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | ngene-dvb.c | 27 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | ngene-cards.c | 27 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | ngene.h | 21 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | ngene-core.c | 27 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
/linux-4.4.14/tools/perf/ |
H A D | builtin-annotate.c | 154 ui__error("GTK browser not found!\n"); hists__find_annotations() 266 ui__error("GTK browser not found!\n"); __cmd_annotate()
|
H A D | builtin-help.c | 410 execl_perf_cmd("web--browse", "-c", "help.browser", path, NULL); open_html() 434 OPT_SET_UINT('w', "web", &help_format, "show manual in web browser", cmd_help()
|
H A D | builtin-report.c | 425 ui__error("GTK browser not found!\n"); report__gtk_browse_hists() 916 * Only in the TUI browser we are doing integrated annotation, cmd_report() 933 * the ui browser. cmd_report()
|
H A D | builtin-script.c | 1524 * Currently the only user of this function is the script browser, which 1526 * show the output in a perf browser.
|
/linux-4.4.14/drivers/media/pci/ttpci/ |
H A D | av7110_ca.c | 25 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | av7110_ir.c | 20 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | budget-core.c | 31 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | budget-patch.c | 27 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | budget.c | 31 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | av7110_av.c | 25 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | av7110_hw.c | 23 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | av7110_v4l.c | 23 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | budget-av.c | 30 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | budget-ci.c | 26 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | av7110.c | 26 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
/linux-4.4.14/drivers/media/pci/bt8xx/ |
H A D | bt878.c | 26 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
/linux-4.4.14/drivers/media/dvb-core/ |
H A D | dvb_ca_en50221.c | 28 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | dvb_net.c | 30 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
H A D | dvb_frontend.c | 25 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
/linux-4.4.14/scripts/ |
H A D | analyze_suspend.py | 2477 # add the code which will manipulate the data in the browser
|
/linux-4.4.14/drivers/platform/x86/ |
H A D | thinkpad_acpi.c | 3555 /* Thinkpad X1 Carbon support 5 modes including Home mode, Web browser
|