1#include <semaphore.h> 2#include <limits.h> 3#include <errno.h> 4 5int sem_init(sem_t *sem, int pshared, unsigned value) 6{ 7 if (value > SEM_VALUE_MAX) { 8 errno = EINVAL; 9 return -1; 10 } 11 sem->__val[0] = value; 12 sem->__val[1] = 0; 13 sem->__val[2] = pshared ? 0 : 128; 14 return 0; 15} 16