github.com/afumu/libc@v0.0.6/musl/src/thread/sem_init.c (about)

     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  }