#include "pthread_impl.h" void __wait_priv(volatile int *addr, volatile int *waiters, int val) { int spins=10000; while (spins--) { if (*addr==val) a_spin(); else return; } if (waiters) a_inc(waiters); while (*addr==val) __syscall(SYS_futex, addr, FUTEX_WAIT|THRD_PRIVATE, val, 0); if (waiters) a_dec(waiters); }