1 #include "pthread_impl.h"
3 void __wait(volatile int *addr
, volatile int *waiters
, int val
, int priv
)
6 if (priv
) priv
= FUTEX_PRIVATE
;
7 while (spins
-- && (!waiters
|| !*waiters
)) {
8 if (*addr
==val
) a_spin();
11 if (waiters
) a_inc(waiters
);
13 __syscall(SYS_futex
, addr
, FUTEX_WAIT
|priv
, val
, 0) != -ENOSYS
14 || __syscall(SYS_futex
, addr
, FUTEX_WAIT
, val
, 0);
16 if (waiters
) a_dec(waiters
);