1b46271ecSElizabeth Figura /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2b46271ecSElizabeth Figura /* 3b46271ecSElizabeth Figura * Kernel support for NT synchronization primitive emulation 4b46271ecSElizabeth Figura * 5b46271ecSElizabeth Figura * Copyright (C) 2021-2022 Elizabeth Figura <[email protected]> 6b46271ecSElizabeth Figura */ 7b46271ecSElizabeth Figura 8b46271ecSElizabeth Figura #ifndef __LINUX_NTSYNC_H 9b46271ecSElizabeth Figura #define __LINUX_NTSYNC_H 10b46271ecSElizabeth Figura 11b46271ecSElizabeth Figura #include <linux/types.h> 12b46271ecSElizabeth Figura 13b46271ecSElizabeth Figura struct ntsync_sem_args { 14b46271ecSElizabeth Figura __u32 count; 15b46271ecSElizabeth Figura __u32 max; 16b46271ecSElizabeth Figura }; 17b46271ecSElizabeth Figura 185bc2479aSElizabeth Figura struct ntsync_mutex_args { 195bc2479aSElizabeth Figura __u32 owner; 205bc2479aSElizabeth Figura __u32 count; 215bc2479aSElizabeth Figura }; 225bc2479aSElizabeth Figura 234c7404b9SElizabeth Figura struct ntsync_event_args { 244c7404b9SElizabeth Figura __u32 manual; 254c7404b9SElizabeth Figura __u32 signaled; 264c7404b9SElizabeth Figura }; 274c7404b9SElizabeth Figura 28b4a7b5feSElizabeth Figura #define NTSYNC_WAIT_REALTIME 0x1 29b4a7b5feSElizabeth Figura 30b4a7b5feSElizabeth Figura struct ntsync_wait_args { 31b4a7b5feSElizabeth Figura __u64 timeout; 32b4a7b5feSElizabeth Figura __u64 objs; 33b4a7b5feSElizabeth Figura __u32 count; 34b4a7b5feSElizabeth Figura __u32 index; 35b4a7b5feSElizabeth Figura __u32 flags; 365bc2479aSElizabeth Figura __u32 owner; 37*a138179aSElizabeth Figura __u32 alert; 38*a138179aSElizabeth Figura __u32 pad; 39b4a7b5feSElizabeth Figura }; 40b4a7b5feSElizabeth Figura 41b4a7b5feSElizabeth Figura #define NTSYNC_MAX_WAIT_COUNT 64 42b4a7b5feSElizabeth Figura 43d75abf2fSElizabeth Figura #define NTSYNC_IOC_CREATE_SEM _IOW ('N', 0x80, struct ntsync_sem_args) 44b4a7b5feSElizabeth Figura #define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args) 45cdbb9978SElizabeth Figura #define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args) 465bc2479aSElizabeth Figura #define NTSYNC_IOC_CREATE_MUTEX _IOW ('N', 0x84, struct ntsync_mutex_args) 474c7404b9SElizabeth Figura #define NTSYNC_IOC_CREATE_EVENT _IOW ('N', 0x87, struct ntsync_event_args) 48b46271ecSElizabeth Figura 495ec43d6bSElizabeth Figura #define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32) 5031ca7bb8SElizabeth Figura #define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args) 51ecc2ee36SElizabeth Figura #define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32) 522dcba6fcSElizabeth Figura #define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32) 53bbb97975SElizabeth Figura #define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32) 5412b29d30SElizabeth Figura #define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32) 55a948f417SElizabeth Figura #define NTSYNC_IOC_SEM_READ _IOR ('N', 0x8b, struct ntsync_sem_args) 560b3c3144SElizabeth Figura #define NTSYNC_IOC_MUTEX_READ _IOR ('N', 0x8c, struct ntsync_mutex_args) 57e864071aSElizabeth Figura #define NTSYNC_IOC_EVENT_READ _IOR ('N', 0x8d, struct ntsync_event_args) 58dc806bd4SElizabeth Figura 59b46271ecSElizabeth Figura #endif 60