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