Lines Matching refs:cursor

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