X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=compat_futex.c;h=bb928e61d6849fc90f63ab5b07fcf82718f28990;hp=9dfcfeb43026639696875cc36367f05a554e0888;hb=976720e446de1d3831bc7847b920c397a7ee26b1;hpb=5481ddb381061bda64aebc039900d21cac6a6caf diff --git a/compat_futex.c b/compat_futex.c index 9dfcfeb..bb928e6 100644 --- a/compat_futex.c +++ b/compat_futex.c @@ -26,9 +26,10 @@ #include #include #include +#include #include -#include +#include static pthread_mutex_t compat_futex_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t compat_futex_cond = PTHREAD_COND_INITIALIZER; @@ -39,10 +40,10 @@ static pthread_cond_t compat_futex_cond = PTHREAD_COND_INITIALIZER; * Waiter will relinquish the CPU until woken up. */ -int compat_futex_noasync(int *uaddr, int op, int val, - const struct timespec *timeout, int *uaddr2, int val3) +int compat_futex_noasync(int32_t *uaddr, int op, int32_t val, + const struct timespec *timeout, int32_t *uaddr2, int32_t val3) { - int ret, i, gret = 0; + int ret, gret = 0; /* * Check if NULL. Don't let users expect that they are taken into @@ -66,8 +67,7 @@ int compat_futex_noasync(int *uaddr, int op, int val, pthread_cond_wait(&compat_futex_cond, &compat_futex_lock); break; case FUTEX_WAKE: - for (i = 0; i < val; i++) - pthread_cond_signal(&compat_futex_cond); + pthread_cond_broadcast(&compat_futex_cond); break; default: gret = -EINVAL; @@ -84,11 +84,9 @@ end: * Waiter will busy-loop trying to read the condition. */ -int compat_futex_async(int *uaddr, int op, int val, - const struct timespec *timeout, int *uaddr2, int val3) +int compat_futex_async(int32_t *uaddr, int op, int32_t val, + const struct timespec *timeout, int32_t *uaddr2, int32_t val3) { - int ret, i; - /* * Check if NULL. Don't let users expect that they are taken into * account. @@ -112,4 +110,5 @@ int compat_futex_async(int *uaddr, int op, int val, default: return -EINVAL; } + return 0; }