xref: /linux-6.15/include/uapi/linux/ntsync.h (revision bbb97975)
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;
375bc2479aSElizabeth Figura 	__u32 pad[2];
38b4a7b5feSElizabeth Figura };
39b4a7b5feSElizabeth Figura 
40b4a7b5feSElizabeth Figura #define NTSYNC_MAX_WAIT_COUNT 64
41b4a7b5feSElizabeth Figura 
42d75abf2fSElizabeth Figura #define NTSYNC_IOC_CREATE_SEM		_IOW ('N', 0x80, struct ntsync_sem_args)
43b4a7b5feSElizabeth Figura #define NTSYNC_IOC_WAIT_ANY		_IOWR('N', 0x82, struct ntsync_wait_args)
44cdbb9978SElizabeth Figura #define NTSYNC_IOC_WAIT_ALL		_IOWR('N', 0x83, struct ntsync_wait_args)
455bc2479aSElizabeth Figura #define NTSYNC_IOC_CREATE_MUTEX		_IOW ('N', 0x84, struct ntsync_mutex_args)
464c7404b9SElizabeth Figura #define NTSYNC_IOC_CREATE_EVENT		_IOW ('N', 0x87, struct ntsync_event_args)
47b46271ecSElizabeth Figura 
485ec43d6bSElizabeth Figura #define NTSYNC_IOC_SEM_RELEASE		_IOWR('N', 0x81, __u32)
4931ca7bb8SElizabeth Figura #define NTSYNC_IOC_MUTEX_UNLOCK		_IOWR('N', 0x85, struct ntsync_mutex_args)
50ecc2ee36SElizabeth Figura #define NTSYNC_IOC_MUTEX_KILL		_IOW ('N', 0x86, __u32)
512dcba6fcSElizabeth Figura #define NTSYNC_IOC_EVENT_SET		_IOR ('N', 0x88, __u32)
52*bbb97975SElizabeth Figura #define NTSYNC_IOC_EVENT_RESET		_IOR ('N', 0x89, __u32)
53dc806bd4SElizabeth Figura 
54b46271ecSElizabeth Figura #endif
55