Lines Matching refs:heap
20 #include <linux/dma-heap.h>
21 #include <uapi/linux/dma-heap.h>
28 * struct dma_heap - represents a dmabuf heap in the system
30 * @ops: ops struct for this heap
31 * @heap_devt heap device node
33 * @heap_cdev heap char device
35 * Represents a heap of memory from which buffers can be made.
52 static int dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
67 dmabuf = heap->ops->allocate(heap, len, fd_flags, heap_flags);
81 struct dma_heap *heap;
83 heap = xa_load(&dma_heap_minors, iminor(inode));
84 if (!heap) {
90 file->private_data = heap;
99 struct dma_heap *heap = file->private_data;
111 fd = dma_heap_buffer_alloc(heap, heap_allocation->len,
196 * dma_heap_get_drvdata() - get per-subdriver data for the heap
197 * @heap: DMA-Heap to retrieve private data for
200 * The per-subdriver data for the heap.
202 void *dma_heap_get_drvdata(struct dma_heap *heap)
204 return heap->priv;
208 * dma_heap_get_name() - get heap name
209 * @heap: DMA-Heap to retrieve private data for
212 * The char* for the heap name.
214 const char *dma_heap_get_name(struct dma_heap *heap)
216 return heap->name;
221 struct dma_heap *heap, *h, *err_ret;
227 pr_err("dma_heap: Cannot add heap without a name\n");
232 pr_err("dma_heap: Cannot add heap with invalid ops struct\n");
236 heap = kzalloc(sizeof(*heap), GFP_KERNEL);
237 if (!heap)
240 heap->name = exp_info->name;
241 heap->ops = exp_info->ops;
242 heap->priv = exp_info->priv;
245 ret = xa_alloc(&dma_heap_minors, &minor, heap,
248 pr_err("dma_heap: Unable to get minor number for heap\n");
254 heap->heap_devt = MKDEV(MAJOR(dma_heap_devt), minor);
256 cdev_init(&heap->heap_cdev, &dma_heap_fops);
257 ret = cdev_add(&heap->heap_cdev, heap->heap_devt, 1);
266 heap->heap_devt,
268 heap->name);
280 pr_err("dma_heap: Already registered heap named %s\n",
287 /* Add heap to the list */
288 list_add(&heap->list, &heap_list);
291 return heap;
294 device_destroy(dma_heap_class, heap->heap_devt);
296 cdev_del(&heap->heap_cdev);
300 kfree(heap);