Lines Matching refs:heap
85 static struct mem_block *alloc_block(struct mem_block *heap, int size,
91 list_for_each(p, heap) {
100 static struct mem_block *find_block(struct mem_block *heap, int start)
104 list_for_each(p, heap)
116 * 'heap' to stop it being subsumed.
135 /* Initialize. How to check for an uninitialized heap?
137 static int init_heap(struct mem_block **heap, int start, int size)
145 *heap = malloc(sizeof(**heap), DRM_MEM_DRIVER, M_NOWAIT | M_ZERO);
146 if (!*heap) {
154 blocks->next = blocks->prev = *heap;
156 (*heap)->file_priv = (struct drm_file *) - 1;
157 (*heap)->next = (*heap)->prev = blocks;
163 void radeon_mem_release(struct drm_file *file_priv, struct mem_block *heap)
167 if (!heap || !heap->next)
170 list_for_each(p, heap) {
176 * 'heap' to stop it being subsumed.
178 list_for_each(p, heap) {
191 void radeon_mem_takedown(struct mem_block **heap)
195 if (!*heap)
198 for (p = (*heap)->next; p != *heap;) {
204 free(*heap, DRM_MEM_DRIVER);
205 *heap = NULL;
226 struct mem_block *block, **heap;
233 heap = get_heap(dev_priv, alloc->region);
234 if (!heap || !*heap)
243 block = alloc_block(*heap, alloc->size, alloc->alignment, file_priv);
261 struct mem_block *block, **heap;
268 heap = get_heap(dev_priv, memfree->region);
269 if (!heap || !*heap)
272 block = find_block(*heap, memfree->region_offset);
287 struct mem_block **heap;
294 heap = get_heap(dev_priv, initheap->region);
295 if (!heap)
298 if (*heap) {
299 DRM_ERROR("heap already initialized?");
303 return init_heap(heap, initheap->start, initheap->size);