1*510ee669SKonstantin Belousov /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*510ee669SKonstantin Belousov /* 3*510ee669SKonstantin Belousov * Kernel support for NT synchronization primitive emulation 4*510ee669SKonstantin Belousov * 5*510ee669SKonstantin Belousov * Copyright (C) 2021-2022 Elizabeth Figura <zfigura@codeweavers.com> 6*510ee669SKonstantin Belousov */ 7*510ee669SKonstantin Belousov 8*510ee669SKonstantin Belousov #ifndef __LINUX_NTSYNC_H 9*510ee669SKonstantin Belousov #define __LINUX_NTSYNC_H 10*510ee669SKonstantin Belousov 11*510ee669SKonstantin Belousov #include <sys/types.h> 12*510ee669SKonstantin Belousov 13*510ee669SKonstantin Belousov typedef uint32_t __u32; 14*510ee669SKonstantin Belousov typedef uint64_t __u64; 15*510ee669SKonstantin Belousov 16*510ee669SKonstantin Belousov struct linux_ntsync_sem_args { 17*510ee669SKonstantin Belousov __u32 count; 18*510ee669SKonstantin Belousov __u32 max; 19*510ee669SKonstantin Belousov }; 20*510ee669SKonstantin Belousov 21*510ee669SKonstantin Belousov struct linux_ntsync_mutex_args { 22*510ee669SKonstantin Belousov __u32 owner; 23*510ee669SKonstantin Belousov __u32 count; 24*510ee669SKonstantin Belousov }; 25*510ee669SKonstantin Belousov 26*510ee669SKonstantin Belousov struct linux_ntsync_event_args { 27*510ee669SKonstantin Belousov __u32 manual; 28*510ee669SKonstantin Belousov __u32 signaled; 29*510ee669SKonstantin Belousov }; 30*510ee669SKonstantin Belousov 31*510ee669SKonstantin Belousov #define LINUX_NTSYNC_WAIT_REALTIME 0x1 32*510ee669SKonstantin Belousov 33*510ee669SKonstantin Belousov struct linux_ntsync_wait_args { 34*510ee669SKonstantin Belousov __u64 timeout; 35*510ee669SKonstantin Belousov __u64 objs; 36*510ee669SKonstantin Belousov __u32 count; 37*510ee669SKonstantin Belousov __u32 index; 38*510ee669SKonstantin Belousov __u32 flags; 39*510ee669SKonstantin Belousov __u32 owner; 40*510ee669SKonstantin Belousov __u32 alert; 41*510ee669SKonstantin Belousov __u32 pad; 42*510ee669SKonstantin Belousov }; 43*510ee669SKonstantin Belousov 44*510ee669SKonstantin Belousov #define LNTSYNC_IOC_CREATE_SEM 0x40084e80 45*510ee669SKonstantin Belousov #define LNTSYNC_IOC_WAIT_ANY 0xc0284e82 46*510ee669SKonstantin Belousov #define LNTSYNC_IOC_WAIT_ALL 0xc0284e83 47*510ee669SKonstantin Belousov #define LNTSYNC_IOC_CREATE_MUTEX 0x40084e84 48*510ee669SKonstantin Belousov #define LNTSYNC_IOC_CREATE_EVENT 0x40084e87 49*510ee669SKonstantin Belousov #define LNTSYNC_IOC_SEM_RELEASE 0xc0044e81 50*510ee669SKonstantin Belousov #define LNTSYNC_IOC_MUTEX_UNLOCK 0xc0084e85 51*510ee669SKonstantin Belousov #define LNTSYNC_IOC_MUTEX_KILL 0x40044e86 52*510ee669SKonstantin Belousov #define LNTSYNC_IOC_EVENT_SET 0x80044e88 53*510ee669SKonstantin Belousov #define LNTSYNC_IOC_EVENT_RESET 0x80044e89 54*510ee669SKonstantin Belousov #define LNTSYNC_IOC_EVENT_PULSE 0x80044e8a 55*510ee669SKonstantin Belousov #define LNTSYNC_IOC_SEM_READ 0x80084e8b 56*510ee669SKonstantin Belousov #define LNTSYNC_IOC_MUTEX_READ 0x80084e8c 57*510ee669SKonstantin Belousov #define LNTSYNC_IOC_EVENT_READ 0x80084e8d 58*510ee669SKonstantin Belousov 59*510ee669SKonstantin Belousov #define LNTSYNC_IOCTL_MIN 0x4e80 60*510ee669SKonstantin Belousov #define LNTSYNC_IOCTL_MAX 0x4eff 61*510ee669SKonstantin Belousov 62*510ee669SKonstantin Belousov #endif 63