| #ifndef ONESHOT_SYNC_H |
| #define ONESHOT_SYNC_H |
| |
| /** |
| * DOC: Oneshot sync Userspace API |
| * |
| * Opening a file descriptor from /dev/oneshot_sync creates a * sync timeline |
| * for userspace signaled fences. Userspace may create new fences from a |
| * /dev/oneshot_sync file descriptor and then signal them by passing the fence |
| * file descriptor in an ioctl() call on the fd used to create the fence. |
| * Unlike most sync timelines, there is no ordering on a oneshot timeline. |
| * Each fence may be signaled in any order without affecting the state of other |
| * fences on the timeline. |
| */ |
| |
| #define ONESHOT_SYNC_IOC_MAGIC '1' |
| |
| /** |
| * struct oneshot_sync_create_fence - argument to create fence ioctl |
| * @name: name of the new fence, to aid debugging. |
| * @fence_fd: returned sync_fence file descriptor |
| */ |
| struct oneshot_sync_create_fence { |
| char name[32]; |
| int fence_fd; |
| }; |
| |
| /** |
| * DOC: ONESHOT_SYNC_IOC_CREATE_FENCE - create a userspace signaled fence |
| * |
| * Create a fence that may be signaled by userspace by calling |
| * ONESHOT_SYNC_IOC_SIGNAL_FENCE. There are no order dependencies between |
| * these fences, but otherwise they behave like normal sync fences. |
| * Argument is struct oneshot_sync_create_fence. |
| */ |
| #define ONESHOT_SYNC_IOC_CREATE_FENCE _IOWR(ONESHOT_SYNC_IOC_MAGIC, 1,\ |
| struct oneshot_sync_create_fence) |
| |
| /** |
| * DOC: ONESHOT_SYNC_IOC_SIGNAL_FENCE - signal a fence |
| * |
| * Signal a fence that was created by a ONESHOT_SYNC_IOC_CREATE_FENCE |
| * call on the same file descriptor. This allows a fence to be shared |
| * to other processes but only signaled by the process owning the fd |
| * used to create the fence. Argument is the fence file descriptor. |
| */ |
| #define ONESHOT_SYNC_IOC_SIGNAL_FENCE _IOWR(ONESHOT_SYNC_IOC_MAGIC, 2,\ |
| int) |
| #endif |