xref: /aosp_15_r20/external/musl/src/thread/sem_init.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <semaphore.h>
2*c9945492SAndroid Build Coastguard Worker #include <limits.h>
3*c9945492SAndroid Build Coastguard Worker #include <errno.h>
4*c9945492SAndroid Build Coastguard Worker 
sem_init(sem_t * sem,int pshared,unsigned value)5*c9945492SAndroid Build Coastguard Worker int sem_init(sem_t *sem, int pshared, unsigned value)
6*c9945492SAndroid Build Coastguard Worker {
7*c9945492SAndroid Build Coastguard Worker 	if (value > SEM_VALUE_MAX) {
8*c9945492SAndroid Build Coastguard Worker 		errno = EINVAL;
9*c9945492SAndroid Build Coastguard Worker 		return -1;
10*c9945492SAndroid Build Coastguard Worker 	}
11*c9945492SAndroid Build Coastguard Worker 	sem->__val[0] = value;
12*c9945492SAndroid Build Coastguard Worker 	sem->__val[1] = 0;
13*c9945492SAndroid Build Coastguard Worker 	sem->__val[2] = pshared ? 0 : 128;
14*c9945492SAndroid Build Coastguard Worker 	return 0;
15*c9945492SAndroid Build Coastguard Worker }
16