1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 3 * DMABUF Heaps Userspace API 4 * 5 * Copyright (C) 2011 Google, Inc. 6 * Copyright (C) 2019 Linaro Ltd. 7 */ 8 #ifndef _UAPI_LINUX_DMABUF_POOL_H 9 #define _UAPI_LINUX_DMABUF_POOL_H 10 11 #include <linux/ioctl.h> 12 #include <linux/types.h> 13 14 /** 15 * DOC: DMABUF Heaps Userspace API 16 */ 17 18 /* Valid FD_FLAGS are O_CLOEXEC, O_RDONLY, O_WRONLY, O_RDWR */ 19 #define DMA_HEAP_VALID_FD_FLAGS (O_CLOEXEC | O_ACCMODE) 20 21 /* Currently no heap flags */ 22 #define DMA_HEAP_VALID_HEAP_FLAGS (0ULL) 23 24 /** 25 * struct dma_heap_allocation_data - metadata passed from userspace for 26 * allocations 27 * @len: size of the allocation 28 * @fd: will be populated with a fd which provides the 29 * handle to the allocated dma-buf 30 * @fd_flags: file descriptor flags used when allocating 31 * @heap_flags: flags passed to heap 32 * 33 * Provided by userspace as an argument to the ioctl 34 */ 35 struct dma_heap_allocation_data { 36 __u64 len; 37 __u32 fd; 38 __u32 fd_flags; 39 __u64 heap_flags; 40 }; 41 42 #define DMA_HEAP_IOC_MAGIC 'H' 43 44 /** 45 * DOC: DMA_HEAP_IOCTL_ALLOC - allocate memory from pool 46 * 47 * Takes a dma_heap_allocation_data struct and returns it with the fd field 48 * populated with the dmabuf handle of the allocation. 49 */ 50 #define DMA_HEAP_IOCTL_ALLOC _IOWR(DMA_HEAP_IOC_MAGIC, 0x0,\ 51 struct dma_heap_allocation_data) 52 53 #endif /* _UAPI_LINUX_DMABUF_POOL_H */ 54