cc3a3e63217fd7e9ee3eb556b80c4322ab7f02da
[musl] / include / sys / sem.h
1 #ifndef _SYS_SEM_H
2 #define _SYS_SEM_H
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6
7 #include <features.h>
8
9 #define __NEED_size_t
10 #define __NEED_pid_t
11 #define __NEED_time_t
12 #ifdef _GNU_SOURCE
13 #define __NEED_struct_timespec
14 #endif
15 #include <bits/alltypes.h>
16
17 #include <sys/ipc.h>
18
19 #define SEM_UNDO        0x1000
20 #define GETPID          11
21 #define GETVAL          12
22 #define GETALL          13
23 #define GETNCNT         14
24 #define GETZCNT         15
25 #define SETVAL          16
26 #define SETALL          17
27
28 struct semid_ds {
29         struct ipc_perm sem_perm;
30         long sem_otime;
31         unsigned long __unused1;
32         long sem_ctime;
33         unsigned long __unused2;
34         unsigned long sem_nsems;
35         unsigned long __unused3;
36         unsigned long __unused4;
37 };
38
39 #define _SEM_SEMUN_UNDEFINED 1
40
41 #define SEM_STAT 18
42 #define SEM_INFO 19
43
44 struct  seminfo {
45         int semmap;
46         int semmni;
47         int semmns;
48         int semmnu;
49         int semmsl;
50         int semopm;
51         int semume;
52         int semusz;
53         int semvmx;
54         int semaem;
55 };
56
57 struct sembuf {
58         unsigned short sem_num;
59         short sem_op;
60         short sem_flg;
61 };
62
63 int semctl(int, int, int, ...);
64 int semget(key_t, int, int);
65 int semop(int, struct sembuf *, size_t);
66
67 #ifdef _GNU_SOURCE
68 int semtimedop(int, struct sembuf *, size_t, const struct timespec *);
69 #endif
70
71 #ifdef __cplusplus
72 }
73 #endif
74 #endif