|  | #pragma once | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | #include <features.h> | 
|  |  | 
|  | #define __NEED_size_t | 
|  | #define __NEED_pid_t | 
|  | #define __NEED_time_t | 
|  | #ifdef _GNU_SOURCE | 
|  | #define __NEED_struct_timespec | 
|  | #endif | 
|  | #include <bits/alltypes.h> | 
|  |  | 
|  | #include <sys/ipc.h> | 
|  |  | 
|  | #define SEM_UNDO 0x1000 | 
|  | #define GETPID 11 | 
|  | #define GETVAL 12 | 
|  | #define GETALL 13 | 
|  | #define GETNCNT 14 | 
|  | #define GETZCNT 15 | 
|  | #define SETVAL 16 | 
|  | #define SETALL 17 | 
|  |  | 
|  | #include <endian.h> | 
|  |  | 
|  | #include <bits/sem.h> | 
|  |  | 
|  | #define _SEM_SEMUN_UNDEFINED 1 | 
|  |  | 
|  | #define SEM_STAT 18 | 
|  | #define SEM_INFO 19 | 
|  |  | 
|  | struct seminfo { | 
|  | int semmap; | 
|  | int semmni; | 
|  | int semmns; | 
|  | int semmnu; | 
|  | int semmsl; | 
|  | int semopm; | 
|  | int semume; | 
|  | int semusz; | 
|  | int semvzx; | 
|  | int semaem; | 
|  | }; | 
|  |  | 
|  | struct sembuf { | 
|  | unsigned short sem_num; | 
|  | short sem_op; | 
|  | short sem_flg; | 
|  | }; | 
|  |  | 
|  | int semctl(int, int, int, ...); | 
|  | int semget(key_t, int, int); | 
|  | int semop(int, struct sembuf*, size_t); | 
|  |  | 
|  | #ifdef _GNU_SOURCE | 
|  | int semtimedop(int, struct sembuf*, size_t, const struct timespec*); | 
|  | #endif | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif |