410c877446b929b6b1c4f0eaaccfe71a7c0a036e
[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 #include <endian.h>
29
30 #include <bits/sem.h>
31
32 #define _SEM_SEMUN_UNDEFINED 1
33
34 #define SEM_STAT (18 | (IPC_STAT & 0x100))
35 #define SEM_INFO 19
36 #define SEM_STAT_ANY (20 | (IPC_STAT & 0x100))
37
38 struct  seminfo {
39         int semmap;
40         int semmni;
41         int semmns;
42         int semmnu;
43         int semmsl;
44         int semopm;
45         int semume;
46         int semusz;
47         int semvmx;
48         int semaem;
49 };
50
51 struct sembuf {
52         unsigned short sem_num;
53         short sem_op;
54         short sem_flg;
55 };
56
57 int semctl(int, int, int, ...);
58 int semget(key_t, int, int);
59 int semop(int, struct sembuf *, size_t);
60
61 #ifdef _GNU_SOURCE
62 int semtimedop(int, struct sembuf *, size_t, const struct timespec *);
63 #endif
64
65 #ifdef __cplusplus
66 }
67 #endif
68 #endif