xref: /linux-6.15/include/uapi/linux/ntsync.h (revision a138179a)
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