summaryrefslogtreecommitdiffhomepage
path: root/include/ntapi/nt_sem.h
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2017-07-30 21:21:21 +0000
committermidipix <writeonce@midipix.org>2017-07-31 08:43:34 -0400
commit4a2e495c3aae5ba119844ba689c1eb282c1f49a8 (patch)
tree36fffb95ccc91f4360d701fee852c5f1af924e80 /include/ntapi/nt_sem.h
parent7e3ebda55a15849f5cc1e7ab53edfeedd9fae635 (diff)
downloadntapi-4a2e495c3aae5ba119844ba689c1eb282c1f49a8.tar.bz2
ntapi-4a2e495c3aae5ba119844ba689c1eb282c1f49a8.tar.xz
subsystem interfaces: integrated sysv semaphore definitions.
Diffstat (limited to 'include/ntapi/nt_sem.h')
-rw-r--r--include/ntapi/nt_sem.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/include/ntapi/nt_sem.h b/include/ntapi/nt_sem.h
new file mode 100644
index 0000000..768007d
--- /dev/null
+++ b/include/ntapi/nt_sem.h
@@ -0,0 +1,66 @@
+#ifndef _NT_SEM_H_
+#define _NT_SEM_H_
+
+#include "nt_abi.h"
+#include "nt_object.h"
+
+/* semaphore commands */
+#define NT_SEM_CMD_GETPID (11)
+#define NT_SEM_CMD_GETVAL (12)
+#define NT_SEM_CMD_GETALL (13)
+#define NT_SEM_CMD_GETNCNT (14)
+#define NT_SEM_CMD_GETZCNT (15)
+#define NT_SEM_CMD_SETVAL (16)
+#define NT_SEM_CMD_SETALL (17)
+
+
+/* semaphore command flags */
+#define NT_SEM_FLAG_NOWAIT (0x0800)
+#define NT_SEM_FLAG_UNDO (0x1000)
+
+
+/* semaphore info */
+typedef struct __attr_ptr_size_aligned__ _nt_sem_info {
+ void * hport;
+ void * hprocess;
+ void * hthread;
+ void * section;
+ void * section_addr;
+ size_t section_size;
+ void * apc_routine;
+ void * apc_context;
+ int32_t semkey;
+ int32_t semslots;
+ int32_t semid;
+ int32_t semnum;
+ int32_t semcmd;
+ int32_t sempid;
+ int32_t semncnt;
+ int32_t semzcnt;
+ int32_t semval;
+ int32_t semadj;
+ nt_filetime semotime;
+ nt_filetime semctime;
+ uint32_t ipcuid;
+ uint32_t ipcgid;
+ uint32_t ipccuid;
+ uint32_t ipccgid;
+ uint32_t ipcmode;
+ int32_t ipcseq;
+ uint32_t ntaccess;
+ uint32_t ntattr;
+ uint32_t ntshare;
+ uint32_t ntoptions;
+ nt_iosb * riosb;
+ void * hevent[2];
+} nt_sem_info;
+
+
+/* semaphore operation */
+typedef struct _nt_sem_op {
+ uint16_t semnum;
+ int16_t semop;
+ int16_t semflag;
+} nt_sem_op;
+
+#endif