• Home
  • Raw
  • Download

Lines Matching refs:node

420 __sort_chain_flat(struct rb_root *rb_root, struct callchain_node *node,  in __sort_chain_flat()  argument
426 n = rb_first(&node->rb_root_in); in __sort_chain_flat()
434 if (node->hit && node->hit >= min_hit) in __sort_chain_flat()
435 rb_insert_callchain(rb_root, node, CHAIN_FLAT); in __sort_chain_flat()
447 __sort_chain_flat(rb_root, &root->node, min_hit); in sort_chain_flat()
450 static void __sort_chain_graph_abs(struct callchain_node *node, in __sort_chain_graph_abs() argument
456 node->rb_root = RB_ROOT; in __sort_chain_graph_abs()
457 n = rb_first(&node->rb_root_in); in __sort_chain_graph_abs()
465 rb_insert_callchain(&node->rb_root, child, in __sort_chain_graph_abs()
474 __sort_chain_graph_abs(&chain_root->node, min_hit); in sort_chain_graph_abs()
475 rb_root->rb_node = chain_root->node.rb_root.rb_node; in sort_chain_graph_abs()
478 static void __sort_chain_graph_rel(struct callchain_node *node, in __sort_chain_graph_rel() argument
485 node->rb_root = RB_ROOT; in __sort_chain_graph_rel()
486 min_hit = ceil(node->children_hit * min_percent); in __sort_chain_graph_rel()
488 n = rb_first(&node->rb_root_in); in __sort_chain_graph_rel()
495 rb_insert_callchain(&node->rb_root, child, in __sort_chain_graph_rel()
504 __sort_chain_graph_rel(&chain_root->node, param->min_percent / 100.0); in sort_chain_graph_rel()
505 rb_root->rb_node = chain_root->node.rb_root.rb_node; in sort_chain_graph_rel()
573 fill_node(struct callchain_node *node, struct callchain_cursor *cursor) in fill_node() argument
577 node->val_nr = cursor->nr - cursor->pos; in fill_node()
578 if (!node->val_nr) in fill_node()
638 list_add_tail(&call->list, &node->val); in fill_node()
728 static enum match_result match_chain(struct callchain_cursor_node *node, in match_chain() argument
735 match = match_chain_strings(cnode->srcline, node->srcline); in match_chain()
741 if (node->ms.sym && cnode->ms.sym) { in match_chain()
748 if (cnode->ms.sym->inlined || node->ms.sym->inlined) { in match_chain()
750 node->ms.sym->name); in match_chain()
755 node->ms.map, node->ms.sym->start); in match_chain()
763 match = match_chain_dso_addresses(cnode->ms.map, cnode->ip, node->ms.map, node->ip); in match_chain()
767 if (match == MATCH_EQ && node->branch) { in match_chain()
770 if (node->branch_from) { in match_chain()
783 if (node->branch_flags.predicted) in match_chain()
786 if (node->branch_flags.abort) in match_chain()
790 &node->branch_flags, in match_chain()
791 node->branch_from, in match_chain()
792 node->ip); in match_chain()
799 cnode->cycles_count += node->branch_flags.cycles; in match_chain()
800 cnode->iter_count += node->nr_loop_iter; in match_chain()
801 cnode->iter_cycles += node->iter_cycles; in match_chain()
851 struct callchain_cursor_node *node; in split_add_child() local
859 node = callchain_cursor_current(cursor); in split_add_child()
873 if (match_chain(node, cnode) == MATCH_LT) in split_add_child()
898 struct callchain_cursor_node *node; in append_chain_children() local
902 node = callchain_cursor_current(cursor); in append_chain_children()
903 if (!node) in append_chain_children()
957 struct callchain_cursor_node *node; in append_chain() local
959 node = callchain_cursor_current(cursor); in append_chain()
960 if (!node) in append_chain()
963 cmp = match_chain(node, cnode); in append_chain()
1015 if (append_chain_children(&root->node, cursor, period) < 0) in callchain_append()
1076 return merge_chain_branch(cursor, &dst->node, &src->node); in callchain_merge()
1085 struct callchain_cursor_node *node = *cursor->last; in callchain_cursor_append() local
1087 if (!node) { in callchain_cursor_append()
1088 node = calloc(1, sizeof(*node)); in callchain_cursor_append()
1089 if (!node) in callchain_cursor_append()
1092 *cursor->last = node; in callchain_cursor_append()
1095 node->ip = ip; in callchain_cursor_append()
1096 map_symbol__exit(&node->ms); in callchain_cursor_append()
1097 node->ms = *ms; in callchain_cursor_append()
1098 node->ms.maps = maps__get(ms->maps); in callchain_cursor_append()
1099 node->ms.map = map__get(ms->map); in callchain_cursor_append()
1100 node->branch = branch; in callchain_cursor_append()
1101 node->nr_loop_iter = nr_loop_iter; in callchain_cursor_append()
1102 node->iter_cycles = iter_cycles; in callchain_cursor_append()
1103 node->srcline = srcline; in callchain_cursor_append()
1106 memcpy(&node->branch_flags, flags, in callchain_cursor_append()
1109 node->branch_from = branch_from; in callchain_cursor_append()
1112 cursor->last = &node->next; in callchain_cursor_append()
1141 int fill_callchain_info(struct addr_location *al, struct callchain_cursor_node *node, in fill_callchain_info() argument
1144 struct machine *machine = node->ms.maps ? maps__machine(node->ms.maps) : NULL; in fill_callchain_info()
1147 al->maps = maps__get(node->ms.maps); in fill_callchain_info()
1149 al->map = map__get(node->ms.map); in fill_callchain_info()
1150 al->sym = node->ms.sym; in fill_callchain_info()
1151 al->srcline = node->srcline; in fill_callchain_info()
1152 al->addr = node->ip; in fill_callchain_info()
1214 char *callchain_node__scnprintf_value(struct callchain_node *node, in callchain_node__scnprintf_value() argument
1218 u64 period = callchain_cumul_hits(node); in callchain_node__scnprintf_value()
1219 unsigned count = callchain_cumul_counts(node); in callchain_node__scnprintf_value()
1222 period = node->hit; in callchain_node__scnprintf_value()
1223 count = node->count; in callchain_node__scnprintf_value()
1243 int callchain_node__fprintf_value(struct callchain_node *node, in callchain_node__fprintf_value() argument
1247 u64 period = callchain_cumul_hits(node); in callchain_node__fprintf_value()
1248 unsigned count = callchain_cumul_counts(node); in callchain_node__fprintf_value()
1251 period = node->hit; in callchain_node__fprintf_value()
1252 count = node->count; in callchain_node__fprintf_value()
1269 static void callchain_counts_value(struct callchain_node *node, in callchain_counts_value() argument
1275 list_for_each_entry(clist, &node->val, list) { in callchain_counts_value()
1290 static int callchain_node_branch_counts_cumul(struct callchain_node *node, in callchain_node_branch_counts_cumul() argument
1299 n = rb_first(&node->rb_root_in); in callchain_node_branch_counts_cumul()
1333 return callchain_node_branch_counts_cumul(&root->node, in callchain_branch_counts()
1487 static void free_callchain_node(struct callchain_node *node) in free_callchain_node() argument
1493 list_for_each_entry_safe(list, tmp, &node->parent_val, list) { in free_callchain_node()
1500 list_for_each_entry_safe(list, tmp, &node->val, list) { in free_callchain_node()
1507 n = rb_first(&node->rb_root_in); in free_callchain_node()
1511 rb_erase(&child->rb_node_in, &node->rb_root_in); in free_callchain_node()
1523 free_callchain_node(&root->node); in free_callchain()
1526 static u64 decay_callchain_node(struct callchain_node *node) in decay_callchain_node() argument
1532 n = rb_first(&node->rb_root_in); in decay_callchain_node()
1540 node->hit = (node->hit * 7) / 8; in decay_callchain_node()
1541 node->children_hit = child_hits; in decay_callchain_node()
1543 return node->hit; in decay_callchain_node()
1551 decay_callchain_node(&root->node); in decay_callchain()
1554 int callchain_node__make_parent_list(struct callchain_node *node) in callchain_node__make_parent_list() argument
1556 struct callchain_node *parent = node->parent; in callchain_node__make_parent_list()
1574 list_move_tail(&chain->list, &node->parent_val); in callchain_node__make_parent_list()
1576 if (!list_empty(&node->parent_val)) { in callchain_node__make_parent_list()
1577 chain = list_first_entry(&node->parent_val, struct callchain_list, list); in callchain_node__make_parent_list()
1578 chain->has_children = rb_prev(&node->rb_node) || rb_next(&node->rb_node); in callchain_node__make_parent_list()
1580 chain = list_first_entry(&node->val, struct callchain_list, list); in callchain_node__make_parent_list()
1598 struct callchain_cursor_node *node, *next; in callchain_cursor__delete() local
1601 for (node = cursor->first; node != NULL; node = next) { in callchain_cursor__delete()
1602 next = node->next; in callchain_cursor__delete()
1603 free(node); in callchain_cursor__delete()
1641 struct callchain_cursor_node *node; in callchain_cursor__copy() local
1643 node = callchain_cursor_current(src); in callchain_cursor__copy()
1644 if (node == NULL) in callchain_cursor__copy()
1647 rc = callchain_cursor_append(dst, node->ip, &node->ms, in callchain_cursor__copy()
1648 node->branch, &node->branch_flags, in callchain_cursor__copy()
1649 node->nr_loop_iter, in callchain_cursor__copy()
1650 node->iter_cycles, in callchain_cursor__copy()
1651 node->branch_from, node->srcline); in callchain_cursor__copy()
1667 struct callchain_cursor_node *node; in callchain_cursor_reset() local
1672 for (node = cursor->first; node != NULL; node = node->next) in callchain_cursor_reset()
1673 map_symbol__exit(&node->ms); in callchain_cursor_reset()
1760 struct callchain_node *node; in count_callchain_hits() local
1764 node = rb_entry(rb_node, struct callchain_node, rb_node); in count_callchain_hits()
1765 chain_hits += node->hit; in count_callchain_hits()
1822 struct callchain_cursor_node *node = callchain_cursor_current(cursor); in sample__for_each_callchain_node() local
1824 if (!node) in sample__for_each_callchain_node()
1827 ret = cb(node, data); in sample__for_each_callchain_node()