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