xref: /linux-6.15/include/uapi/linux/ntsync.h (revision ecc2ee36)
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 
23b4a7b5feSElizabeth Figura #define NTSYNC_WAIT_REALTIME	0x1
24b4a7b5feSElizabeth Figura 
25b4a7b5feSElizabeth Figura struct ntsync_wait_args {
26b4a7b5feSElizabeth Figura 	__u64 timeout;
27b4a7b5feSElizabeth Figura 	__u64 objs;
28b4a7b5feSElizabeth Figura 	__u32 count;
29b4a7b5feSElizabeth Figura 	__u32 index;
30b4a7b5feSElizabeth Figura 	__u32 flags;
315bc2479aSElizabeth Figura 	__u32 owner;
325bc2479aSElizabeth Figura 	__u32 pad[2];
33b4a7b5feSElizabeth Figura };
34b4a7b5feSElizabeth Figura 
35b4a7b5feSElizabeth Figura #define NTSYNC_MAX_WAIT_COUNT 64
36b4a7b5feSElizabeth Figura 
37d75abf2fSElizabeth Figura #define NTSYNC_IOC_CREATE_SEM		_IOW ('N', 0x80, struct ntsync_sem_args)
38b4a7b5feSElizabeth Figura #define NTSYNC_IOC_WAIT_ANY		_IOWR('N', 0x82, struct ntsync_wait_args)
39cdbb9978SElizabeth Figura #define NTSYNC_IOC_WAIT_ALL		_IOWR('N', 0x83, struct ntsync_wait_args)
405bc2479aSElizabeth Figura #define NTSYNC_IOC_CREATE_MUTEX		_IOW ('N', 0x84, struct ntsync_mutex_args)
41b46271ecSElizabeth Figura 
425ec43d6bSElizabeth Figura #define NTSYNC_IOC_SEM_RELEASE		_IOWR('N', 0x81, __u32)
4331ca7bb8SElizabeth Figura #define NTSYNC_IOC_MUTEX_UNLOCK		_IOWR('N', 0x85, struct ntsync_mutex_args)
44*ecc2ee36SElizabeth Figura #define NTSYNC_IOC_MUTEX_KILL		_IOW ('N', 0x86, __u32)
45dc806bd4SElizabeth Figura 
46b46271ecSElizabeth Figura #endif
47