about summary refs log tree commit diff
path: root/sysdeps/pthread
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-08-23 23:24:01 -0700
committerDavid S. Miller <davem@davemloft.net>2011-08-23 23:24:01 -0700
commit22044b48baa8a3c3fe67ab912e9f34a80c97880b (patch)
treee35a8dd5b866063298301da86b7396bf29723a4b /sysdeps/pthread
parent2c0b250ae4bc8f14a7c5a5e733d57de6c6745d9c (diff)
downloadglibc-22044b48baa8a3c3fe67ab912e9f34a80c97880b.tar.gz
glibc-22044b48baa8a3c3fe67ab912e9f34a80c97880b.tar.xz
glibc-22044b48baa8a3c3fe67ab912e9f34a80c97880b.zip
Fix nptl/tst-cancel17 and nptl/tst-cancelx17 with recent gcc.
Diffstat (limited to 'sysdeps/pthread')
-rw-r--r--sysdeps/pthread/aio_suspend.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sysdeps/pthread/aio_suspend.c b/sysdeps/pthread/aio_suspend.c
index b85b16d10e..99f3a80c52 100644
--- a/sysdeps/pthread/aio_suspend.c
+++ b/sysdeps/pthread/aio_suspend.c
@@ -92,6 +92,18 @@ cleanup (void *arg)
   pthread_mutex_unlock (&__aio_requests_mutex);
 }
 
+#ifdef DONT_NEED_AIO_MISC_COND
+static int
+__attribute__ ((noinline))
+do_aio_misc_wait(int *cntr, const struct timespec *timeout)
+{
+	int result = 0;
+
+	AIO_MISC_WAIT(result, *cntr, timeout, 1);
+
+	return result;
+}
+#endif
 
 int
 aio_suspend (list, nent, timeout)
@@ -169,7 +181,7 @@ aio_suspend (list, nent, timeout)
       pthread_cleanup_push (cleanup, &clparam);
 
 #ifdef DONT_NEED_AIO_MISC_COND
-      AIO_MISC_WAIT (result, cntr, timeout, 1);
+      result = do_aio_misc_wait(&cntr, timeout);
 #else
       if (timeout == NULL)
 	result = pthread_cond_wait (&cond, &__aio_requests_mutex);