3 #include "pthread_impl.h"
5 int sem_post(sem_t *sem)
7 int val, new, waiters, priv = sem->__val[2];
10 waiters = sem->__val[1];
11 if ((val & SEM_VALUE_MAX) == SEM_VALUE_MAX) {
18 } while (a_cas(sem->__val, val, new) != val);
19 if (val<0) __wake(sem->__val, waiters>1 ? 1 : -1, priv);