Lines Matching defs: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);
631 callchain_cursor_advance(cursor);
632 cursor_node = callchain_cursor_current(cursor);
639 struct callchain_cursor *cursor,
648 if (fill_node(new, cursor) < 0) {
799 struct callchain_cursor *cursor,
831 if (idx_total < cursor->nr) {
842 node = callchain_cursor_current(cursor);
843 new = add_child(parent, cursor, period);
872 struct callchain_cursor *cursor,
877 struct callchain_cursor *cursor,
885 node = callchain_cursor_current(cursor);
897 ret = append_chain(rnode, cursor, period);
909 rnode = add_child(root, cursor, period);
924 struct callchain_cursor *cursor,
928 u64 start = cursor->pos;
942 node = callchain_cursor_current(cursor);
952 callchain_cursor_advance(cursor);
961 matches = cursor->pos - start;
965 if (split_add_child(root, cursor, cnode, start, matches,
973 if (matches == root->val_nr && cursor->pos == cursor->nr) {
980 if (append_chain_children(root, cursor, period) < 0)
987 struct callchain_cursor *cursor,
990 if (cursor == NULL)
993 if (!cursor->nr)
996 callchain_cursor_commit(cursor);
998 if (append_chain_children(&root->node, cursor, period) < 0)
1001 if (cursor->nr > root->max_depth)
1002 root->max_depth = cursor->nr;
1008 merge_chain_branch(struct callchain_cursor *cursor,
1011 struct callchain_cursor_node **old_last = cursor->last;
1015 int old_pos = cursor->nr;
1023 callchain_cursor_append(cursor, list->ip, &ms, false, NULL, 0, 0, 0, list->srcline);
1033 callchain_cursor_commit(cursor);
1034 if (append_chain_children(dst, cursor, src->hit) < 0)
1044 err = merge_chain_branch(cursor, dst, child);
1051 cursor->nr = old_pos;
1052 cursor->last = old_last;
1057 int callchain_merge(struct callchain_cursor *cursor,
1060 return merge_chain_branch(cursor, &dst->node, &src->node);
1063 int callchain_cursor_append(struct callchain_cursor *cursor,
1069 struct callchain_cursor_node *node = *cursor->last;
1076 *cursor->last = node;
1095 cursor->nr++;
1097 cursor->last = &node->next;
1103 struct callchain_cursor *cursor, struct symbol **parent,
1112 return thread__resolve_callchain(al->thread, cursor, evsel, sample,
1579 struct callchain_cursor *cursor = vcursor;
1582 callchain_cursor_reset(cursor);
1583 for (node = cursor->first; node != NULL; node = next) {
1587 free(cursor);
1593 pr_err("callchain cursor creation failed");
1601 struct callchain_cursor *cursor;
1604 cursor = pthread_getspecific(callchain_cursor);
1605 if (!cursor) {
1606 cursor = zalloc(sizeof(*cursor));
1607 if (!cursor)
1609 pthread_setspecific(callchain_cursor, cursor);
1611 return cursor;
1644 * Initialize a cursor before adding entries inside, but keep
1647 void callchain_cursor_reset(struct callchain_cursor *cursor)
1651 cursor->nr = 0;
1652 cursor->last = &cursor->first;
1654 for (node = cursor->first; node != NULL; node = node->next) {