Lines Matching refs:heap

86 static struct mem_block *alloc_block(struct mem_block *heap, int size,
92 list_for_each(p, heap) {
101 static struct mem_block *find_block(struct mem_block *heap, int start)
105 list_for_each(p, heap)
117 * 'heap' to stop it being subsumed.
136 /* Initialize. How to check for an uninitialized heap?
138 static int init_heap(struct mem_block **heap, int start, int size)
145 *heap = drm_alloc(sizeof(**heap), DRM_MEM_BUFS);
146 if (!*heap) {
154 blocks->next = blocks->prev = *heap;
156 memset(*heap, 0, sizeof(**heap));
157 (*heap)->file_priv = (struct drm_file *) - 1;
158 (*heap)->next = (*heap)->prev = blocks;
164 void radeon_mem_release(struct drm_file *file_priv, struct mem_block *heap)
168 if (!heap || !heap->next)
171 list_for_each(p, heap) {
177 * 'heap' to stop it being subsumed.
179 list_for_each(p, heap) {
192 void radeon_mem_takedown(struct mem_block **heap)
196 if (!*heap)
199 for (p = (*heap)->next; p != *heap;) {
205 drm_free(*heap, sizeof(**heap), DRM_MEM_DRIVER);
206 *heap = NULL;
227 struct mem_block *block, **heap;
234 heap = get_heap(dev_priv, alloc->region);
235 if (!heap || !*heap)
244 block = alloc_block(*heap, alloc->size, alloc->alignment, file_priv);
262 struct mem_block *block, **heap;
269 heap = get_heap(dev_priv, memfree->region);
270 if (!heap || !*heap)
273 block = find_block(*heap, memfree->region_offset);
288 struct mem_block **heap;
295 heap = get_heap(dev_priv, initheap->region);
296 if (!heap)
299 if (*heap) {
300 DRM_ERROR("heap already initialized?");
304 return init_heap(heap, initheap->start, initheap->size);