1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _UAPI_LINUX_DMABUF_POOL_H
20#define _UAPI_LINUX_DMABUF_POOL_H
21#include <linux/ioctl.h>
22#include <linux/types.h>
23#include <stddef.h>
24#define DMA_HEAP_VALID_FD_FLAGS (O_CLOEXEC | O_ACCMODE)
25#define DMA_HEAP_VALID_HEAP_FLAGS (0)
26struct dma_heap_allocation_data {
27  __u64 len;
28  __u32 fd;
29  __u32 fd_flags;
30  __u64 heap_flags;
31};
32#define DMA_HEAP_IOC_MAGIC 'H'
33
34enum dma_heap_flag_owner_id {
35	OWNER_DEFAULT = 0,
36	OWNER_GPU,
37	OWNER_MEDIA_CODEC,
38	COUNT_DMA_HEAP_FLAG_OWNER,
39};
40
41#define OWNER_OFFSET_BIT 27 /* 27 bit */
42#define OWNER_MASK (0xfUL << OWNER_OFFSET_BIT)
43
44/* Use the 27-30 bits of heap flags as owner_id flag */
45static inline void set_owner_id_for_heap_flags(__u64 *heap_flags, __u64 owner_id)
46{
47    if (heap_flags == NULL || owner_id >= COUNT_DMA_HEAP_FLAG_OWNER) {
48        return;
49    }
50    *heap_flags |= owner_id << OWNER_OFFSET_BIT;
51}
52
53/* To get the binary number of owner_id */
54static inline __u64 get_owner_id_from_heap_flags(__u64 heap_flags)
55{
56    return (heap_flags & OWNER_MASK) >> OWNER_OFFSET_BIT;
57}
58
59#define DMA_HEAP_IOCTL_ALLOC _IOWR(DMA_HEAP_IOC_MAGIC, 0x0, struct dma_heap_allocation_data)
60#endif
61