Index: fusl/src/thread/__wait.c |
diff --git a/fusl/src/thread/__wait.c b/fusl/src/thread/__wait.c |
index dc33c1a30992e6c04e4482cef8a2f8279d18262a..4eb13dde7aee8baac8bf4b9a37f07812a11cada1 100644 |
--- a/fusl/src/thread/__wait.c |
+++ b/fusl/src/thread/__wait.c |
@@ -1,17 +1,21 @@ |
#include "pthread_impl.h" |
-void __wait(volatile int *addr, volatile int *waiters, int val, int priv) |
-{ |
- int spins=100; |
- if (priv) priv = FUTEX_PRIVATE; |
- while (spins-- && (!waiters || !*waiters)) { |
- if (*addr==val) a_spin(); |
- else return; |
- } |
- if (waiters) a_inc(waiters); |
- while (*addr==val) { |
- __syscall(SYS_futex, addr, FUTEX_WAIT|priv, val, 0) != -ENOSYS |
- || __syscall(SYS_futex, addr, FUTEX_WAIT, val, 0); |
- } |
- if (waiters) a_dec(waiters); |
+void __wait(volatile int* addr, volatile int* waiters, int val, int priv) { |
+ int spins = 100; |
+ if (priv) |
+ priv = FUTEX_PRIVATE; |
+ while (spins-- && (!waiters || !*waiters)) { |
+ if (*addr == val) |
+ a_spin(); |
+ else |
+ return; |
+ } |
+ if (waiters) |
+ a_inc(waiters); |
+ while (*addr == val) { |
+ __syscall(SYS_futex, addr, FUTEX_WAIT | priv, val, 0) != -ENOSYS || |
+ __syscall(SYS_futex, addr, FUTEX_WAIT, val, 0); |
+ } |
+ if (waiters) |
+ a_dec(waiters); |
} |