Lines Matching refs:cursor
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()
581 cursor_node = callchain_cursor_current(cursor); in fill_node()
638 callchain_cursor_advance(cursor); in fill_node()
639 cursor_node = callchain_cursor_current(cursor); in fill_node()
646 struct callchain_cursor *cursor, in add_child() argument
655 if (fill_node(new, cursor) < 0) { in add_child()
814 struct callchain_cursor *cursor, in split_add_child() argument
846 if (idx_total < cursor->nr) { in split_add_child()
857 node = callchain_cursor_current(cursor); in split_add_child()
858 new = add_child(parent, cursor, period); in split_add_child()
887 struct callchain_cursor *cursor,
892 struct callchain_cursor *cursor, in append_chain_children() argument
900 node = callchain_cursor_current(cursor); in append_chain_children()
912 ret = append_chain(rnode, cursor, period); in append_chain_children()
924 rnode = add_child(root, cursor, period); in append_chain_children()
939 struct callchain_cursor *cursor, in append_chain() argument
943 u64 start = cursor->pos; in append_chain()
957 node = callchain_cursor_current(cursor); in append_chain()
967 callchain_cursor_advance(cursor); in append_chain()
976 matches = cursor->pos - start; in append_chain()
980 if (split_add_child(root, cursor, cnode, start, matches, in append_chain()
988 if (matches == root->val_nr && cursor->pos == cursor->nr) { in append_chain()
995 if (append_chain_children(root, cursor, period) < 0) in append_chain()
1002 struct callchain_cursor *cursor, in callchain_append() argument
1005 if (cursor == NULL) in callchain_append()
1008 if (!cursor->nr) in callchain_append()
1011 callchain_cursor_commit(cursor); in callchain_append()
1013 if (append_chain_children(&root->node, cursor, period) < 0) in callchain_append()
1016 if (cursor->nr > root->max_depth) in callchain_append()
1017 root->max_depth = cursor->nr; in callchain_append()
1023 merge_chain_branch(struct callchain_cursor *cursor, in merge_chain_branch() argument
1026 struct callchain_cursor_node **old_last = cursor->last; in merge_chain_branch()
1030 int old_pos = cursor->nr; in merge_chain_branch()
1038 callchain_cursor_append(cursor, list->ip, &ms, false, NULL, 0, 0, 0, list->srcline); in merge_chain_branch()
1047 callchain_cursor_commit(cursor); in merge_chain_branch()
1048 if (append_chain_children(dst, cursor, src->hit) < 0) in merge_chain_branch()
1058 err = merge_chain_branch(cursor, dst, child); in merge_chain_branch()
1065 cursor->nr = old_pos; in merge_chain_branch()
1066 cursor->last = old_last; in merge_chain_branch()
1071 int callchain_merge(struct callchain_cursor *cursor, in callchain_merge() argument
1074 return merge_chain_branch(cursor, &dst->node, &src->node); in callchain_merge()
1077 int callchain_cursor_append(struct callchain_cursor *cursor, in callchain_cursor_append() argument
1083 struct callchain_cursor_node *node = *cursor->last; in callchain_cursor_append()
1090 *cursor->last = node; in callchain_cursor_append()
1106 cursor->nr++; in callchain_cursor_append()
1108 cursor->last = &node->next; in callchain_cursor_append()
1114 struct callchain_cursor *cursor, struct symbol **parent, in sample__resolve_callchain() argument
1123 return thread__resolve_callchain(al->thread, cursor, evsel, sample, in sample__resolve_callchain()
1593 struct callchain_cursor *cursor = vcursor; in callchain_cursor__delete() local
1596 callchain_cursor_reset(cursor); in callchain_cursor__delete()
1597 for (node = cursor->first; node != NULL; node = next) { in callchain_cursor__delete()
1601 free(cursor); in callchain_cursor__delete()
1615 struct callchain_cursor *cursor; in get_tls_callchain_cursor() local
1618 cursor = pthread_getspecific(callchain_cursor); in get_tls_callchain_cursor()
1619 if (!cursor) { in get_tls_callchain_cursor()
1620 cursor = zalloc(sizeof(*cursor)); in get_tls_callchain_cursor()
1621 if (!cursor) in get_tls_callchain_cursor()
1623 pthread_setspecific(callchain_cursor, cursor); in get_tls_callchain_cursor()
1625 return cursor; in get_tls_callchain_cursor()
1661 void callchain_cursor_reset(struct callchain_cursor *cursor) in callchain_cursor_reset() argument
1665 cursor->nr = 0; in callchain_cursor_reset()
1666 cursor->last = &cursor->first; in callchain_cursor_reset()
1668 for (node = cursor->first; node != NULL; node = node->next) in callchain_cursor_reset()
1801 struct callchain_cursor *cursor = get_tls_callchain_cursor(); in sample__for_each_callchain_node() local
1804 if (!cursor) in sample__for_each_callchain_node()
1808 ret = __thread__resolve_callchain(thread, cursor, evsel, sample, in sample__for_each_callchain_node()
1815 callchain_cursor_commit(cursor); in sample__for_each_callchain_node()
1818 struct callchain_cursor_node *node = callchain_cursor_current(cursor); in sample__for_each_callchain_node()
1827 callchain_cursor_advance(cursor); in sample__for_each_callchain_node()