diff options
Diffstat (limited to 'src/internal/pthread_impl.h')
| -rw-r--r-- | src/internal/pthread_impl.h | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 650e8115..826191c2 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -76,6 +76,7 @@ struct __timer {  #define _c_destroy __u.__i[8]  #define _rw_lock __u.__i[0]  #define _rw_waiters __u.__i[1] +#define _rw_shared __u.__i[2]  #define _b_lock __u.__i[0]  #define _b_waiters __u.__i[1]  #define _b_limit __u.__i[2] @@ -108,8 +109,13 @@ void __unmapself(void *, size_t);  int __timedwait(volatile int *, int, clockid_t, const struct timespec *, void (*)(void *), void *, int);  void __wait(volatile int *, volatile int *, int, int); -#define __wake(addr, cnt, priv) \ -	__syscall(SYS_futex, addr, FUTEX_WAKE, (cnt)<0?INT_MAX:(cnt)) +static inline void __wake(volatile void *addr, int cnt, int priv) +{ +	if (priv) priv = 128; +	if (cnt<0) cnt = INT_MAX; +	__syscall(SYS_futex, addr, FUTEX_WAKE|priv, cnt) != -EINVAL || +	__syscall(SYS_futex, addr, FUTEX_WAKE, cnt); +}  void __acquire_ptc();  void __release_ptc(); | 
