1 #pragma once 2 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 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 semvzx; 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 int semtimedop(int, struct sembuf*, size_t, const struct timespec*); 62 #endif 63 64 #ifdef __cplusplus 65 } 66 #endif 67