From facc6acbfd20accea435d10fdd070b23877e40db Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 1 Feb 2013 16:41:53 -0500 Subject: replace __wake function with macro that performs direct syscall this should generate faster and smaller code, especially with inline syscalls. the conditional with cnt is ugly, but thankfully cnt is always a constant anyway so it gets evaluated at compile time. it may be preferable to make separate __wake and __wakeall macros without a count argument. priv flag is not used yet; private futex support still needs to be done at some point in the future. --- src/internal/pthread_impl.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/internal') diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 4215e67a..544da9ce 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -106,7 +106,8 @@ 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); -void __wake(volatile int *, int, int); +#define __wake(addr, cnt, priv) \ + __syscall(SYS_futex, addr, FUTEX_WAKE, (cnt)<0?INT_MAX:(cnt)) void __acquire_ptc(); void __release_ptc(); -- cgit v1.2.1