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,
64 return heap->ops->allocate(heap, len, fd_flags, heap_flags);
69 struct dma_heap *heap;
71 heap = xa_load(&dma_heap_minors, iminor(inode));
72 if (!heap) {
78 file->private_data = heap;
87 struct dma_heap *heap = file->private_data;
99 fd = dma_heap_buffer_alloc(heap, heap_allocation->len,
184 * dma_heap_get_drvdata() - get per-subdriver data for the heap
185 * @heap: DMA-Heap to retrieve private data for
188 * The per-subdriver data for the heap.
190 void *dma_heap_get_drvdata(struct dma_heap *heap)
192 return heap->priv;
196 * dma_heap_get_name() - get heap name
197 * @heap: DMA-Heap to retrieve private data for
200 * The char* for the heap name.
202 const char *dma_heap_get_name(struct dma_heap *heap)
204 return heap->name;
209 struct dma_heap *heap, *h, *err_ret;
215 pr_err("dma_heap: Cannot add heap without a name\n");
220 pr_err("dma_heap: Cannot add heap with invalid ops struct\n");
224 heap = kzalloc(sizeof(*heap), GFP_KERNEL);
225 if (!heap)
228 heap->name = exp_info->name;
229 heap->ops = exp_info->ops;
230 heap->priv = exp_info->priv;
233 ret = xa_alloc(&dma_heap_minors, &minor, heap,
236 pr_err("dma_heap: Unable to get minor number for heap\n");
242 heap->heap_devt = MKDEV(MAJOR(dma_heap_devt), minor);
244 cdev_init(&heap->heap_cdev, &dma_heap_fops);
245 ret = cdev_add(&heap->heap_cdev, heap->heap_devt, 1);
254 heap->heap_devt,
256 heap->name);
268 pr_err("dma_heap: Already registered heap named %s\n",
275 /* Add heap to the list */
276 list_add(&heap->list, &heap_list);
279 return heap;
282 device_destroy(dma_heap_class, heap->heap_devt);
284 cdev_del(&heap->heap_cdev);
288 kfree(heap);