| # Copyright 2017 syzkaller project authors. All rights reserved. |
| # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| include <asm/ioctl.h> |
| include <uapi/linux/fcntl.h> |
| include <uapi/linux/dma-buf.h> |
| include <drivers/staging/android/uapi/ion.h> |
| |
| resource fd_ion[fd] |
| resource fd_dma_buf[fd] |
| |
| openat$ion(fd const[AT_FDCWD], file ptr[in, string["/dev/ion"]], flags flags[open_flags], mode const[0]) fd_ion |
| |
| ioctl$ION_IOC_ALLOC(fd fd_ion, cmd const[ION_IOC_ALLOC], arg ptr[inout, ion_allocation_data]) |
| ioctl$ION_IOC_HEAP_QUERY(fd fd_ion, cmd const[ION_IOC_HEAP_QUERY], arg ptr[inout, ion_heap_query]) |
| |
| ioctl$DMA_BUF_IOCTL_SYNC(fd fd_dma_buf, cmd const[DMA_BUF_IOCTL_SYNC], arg ptr[in, flags[dma_buf_sync_flags, int64]]) |
| |
| ion_allocation_data { |
| len int64 |
| heap_id_mask flags[ion_heap_mask, int32] |
| flags flags[ion_alloc_flags, int32] |
| fd fd_dma_buf[opt] |
| unused const[0, int32] |
| } |
| |
| ion_heap_query { |
| cnt len[heaps, int32] |
| reserved0 const[0, int32] |
| heaps ptr64[out, ion_heap_data] |
| reserved1 const[0, int32] |
| reserved2 const[0, int32] |
| } |
| |
| ion_heap_data { |
| name string["name", MAX_HEAP_NAME] |
| type int32 |
| heap_id int32 |
| reserved0 int32 |
| reserved1 int32 |
| reserved2 int32 |
| } |
| |
| ion_alloc_flags = ION_FLAG_CACHED |
| ion_heap_mask = ION_HEAP_TYPE_SYSTEM_BIT, ION_HEAP_TYPE_SYSTEM_CONTIG_BIT, ION_HEAP_TYPE_CARVEOUT_BIT, ION_HEAP_TYPE_CHUNK_BIT, ION_HEAP_TYPE_DMA_BIT, ION_HEAP_TYPE_CUSTOM_BIT |
| dma_buf_sync_flags = DMA_BUF_SYNC_READ, DMA_BUF_SYNC_WRITE, DMA_BUF_SYNC_END |
| |
| define ION_HEAP_TYPE_SYSTEM_BIT 1 << ION_HEAP_TYPE_SYSTEM |
| define ION_HEAP_TYPE_SYSTEM_CONTIG_BIT 1 << ION_HEAP_TYPE_SYSTEM_CONTIG |
| define ION_HEAP_TYPE_CARVEOUT_BIT 1 << ION_HEAP_TYPE_CARVEOUT |
| define ION_HEAP_TYPE_CHUNK_BIT 1 << ION_HEAP_TYPE_CHUNK |
| define ION_HEAP_TYPE_DMA_BIT 1 << ION_HEAP_TYPE_DMA |
| define ION_HEAP_TYPE_CUSTOM_BIT 1 << ION_HEAP_TYPE_CUSTOM |