Lines Matching refs:index
97 uint32 index = fFirstFree;
98 while (index != 0 && fBase[index].size < size)
99 index = ((free_entry*)&fBase[index])->next_free;
101 if (index == 0)
104 _RemoveFreeEntry(index);
107 if (fBase[index].size - size >= 2) {
108 uint32 next = index + 1 + size;
109 uint32 nextNext = index + 1 + fBase[index].size;
110 fBase[next].size = fBase[index].size - size - 1;
111 fBase[next].previous = index;
112 fBase[index].size = size;
119 return &fBase[index + 1];
133 uint32 index = header - fBase;
139 uint32 next = index + 1 + header->size;
142 if (index > 1 && fBase[header->previous].free) {
149 index = previous;
150 header = fBase + index;
159 uint32 nextNext = index + 1 + header->size;
161 fBase[nextNext].previous = index;
164 _InsertFreeEntry(index);
168 void _InsertFreeEntry(uint32 index)
171 uint32 size = fBase[index].size;
180 ((free_entry*)&fBase[next])->previous_free = index;
183 fLastFree = index;
187 ((free_entry*)&fBase[previous])->next_free = index;
189 fFirstFree = index;
191 ((free_entry*)&fBase[index])->previous_free = previous;
192 ((free_entry*)&fBase[index])->next_free = next;
194 fBase[index].free = true;
197 void _RemoveFreeEntry(uint32 index)
199 uint32 previous = ((free_entry*)&fBase[index])->previous_free;
200 uint32 next = ((free_entry*)&fBase[index])->next_free;
212 fBase[index].free = false;
218 allocation_header* fBase; // actually base - 1, so that index 0 is