sem_init.c raw

   1  #include <semaphore.h>
   2  #include <limits.h>
   3  #include <errno.h>
   4  
   5  int 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