1 #include <semaphore.h> 2 #include <limits.h> 3 #include <errno.h> 4 sem_init(sem_t * sem,int pshared,unsigned value)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