Lines Matching refs:node
67 static inline struct HeapNode* heapPrvGetNext(struct HeapNode* node)
69 return (gHeapTail == node) ? NULL : (struct HeapNode*)(node->data + node->size);
75 struct HeapNode* node;
77 node = gHeapHead = (struct HeapNode*)ALIGNED_HEAP_START;
82 gHeapTail = node;
84 node->used = 0;
85 node->prev = NULL;
86 node->size = size - sizeof(struct HeapNode);
95 struct HeapNode *node = gHeapHead, *next;
97 while (node) {
98 next = heapPrvGetNext(node);
100 if (!node->used && next && !next->used) { /* merged */
101 node->size += sizeof(struct HeapNode) + next->size;
103 next = heapPrvGetNext(node);
105 next->prev = node;
107 gHeapTail = node;
110 node = next;
117 struct HeapNode *node, *best = NULL;
127 node = gHeapHead;
129 while (node) {
130 if (!node->used && node->size >= sz && (!best || best->size > node->size)) {
131 best = node;
136 node = heapPrvGetNext(node);
144 node = (struct HeapNode*)(best->data + sz);
146 node->used = 0;
147 node->tidx = 0;
148 node->size = best->size - sz - sizeof(struct HeapNode);
149 node->prev = best;
152 heapPrvGetNext(node)->prev = node;
154 gHeapTail = node;
170 struct HeapNode *node, *t;
181 node = ((struct HeapNode*)ptr) - 1;
182 node->used = 0;
183 node->tidx = 0;
187 while (node->prev && !node->prev->used)
188 node = node->prev;
190 while ((t = heapPrvGetNext(node)) && !t->used) {
191 node->size += sizeof(struct HeapNode) + t->size;
193 gHeapTail = node;
196 if ((t = heapPrvGetNext(node)))
197 t->prev = node;
207 struct HeapNode *node;
219 node = gHeapHead;
222 if (node->tidx == tid) {
223 node->used = 0;
224 node->tidx = 0;
227 } while ((node = heapPrvGetNext(node)) != NULL);