2 #include "pthread_impl.h"
4 int sem_post(sem_t
*sem
)
6 int val
, waiters
, priv
= sem
->__val
[2];
9 waiters
= sem
->__val
[1];
10 if (val
== SEM_VALUE_MAX
) {
14 } while (a_cas(sem
->__val
, val
, val
+1+(val
<0)) != val
);
15 if (val
<0 || waiters
) __wake(sem
->__val
, 1, priv
);