From 858a32879291ebb5612c7500fc195c30fb6e8496 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Sat, 28 May 2011 17:27:12 -0400 Subject: [PATCH] Fix futex(2) detection and use Commit 22e7fc34c44c5ef95abf4fed429f2345410cc82c introduced a regression: futexes were always disabled and the emulated codepath was always being used. That commit was in response to an originally buggy implementationt hat wrote junk into config.h (but happened to be working properly). Fix up the mess and while we're at it, close bug #631231 by including syscall.h from the correct location and using __NR_futex instead of SYS_futex. Closes #631231. --- configure.ac | 8 +++----- glib/gbitlock.c | 6 +++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index bb0a795f1..ee56df370 100644 --- a/configure.ac +++ b/configure.ac @@ -2580,22 +2580,20 @@ dnl ************************ AC_MSG_CHECKING([for futex(2) system call]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include -#include +#include #include ],[ int main (void) { /* it is not like this actually runs or anything... */ - syscall (SYS_futex, NULL, FUTEX_WAKE, FUTEX_WAIT); + syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT); return 0; } ])], [ AC_MSG_RESULT(yes) - if test "$have_futex" = "yes"; then - AC_DEFINE(HAVE_FUTEX, 1, [we have the futex(2) system call]) - fi + AC_DEFINE(HAVE_FUTEX, 1, [we have the futex(2) system call]) ], [ AC_MSG_RESULT(no) diff --git a/glib/gbitlock.c b/glib/gbitlock.c index 1b8c41733..72e0d6eb2 100644 --- a/glib/gbitlock.c +++ b/glib/gbitlock.c @@ -56,7 +56,7 @@ _g_futex_thread_init (void) { * If anyone actually gets bit by this, please file a bug. :) */ #include -#include +#include #include /* < private > @@ -80,7 +80,7 @@ static void g_futex_wait (const volatile gint *address, gint value) { - syscall (SYS_futex, address, (gsize) FUTEX_WAIT, (gsize) value, NULL); + syscall (__NR_futex, address, (gsize) FUTEX_WAIT, (gsize) value, NULL); } /* < private > @@ -97,7 +97,7 @@ g_futex_wait (const volatile gint *address, static void g_futex_wake (const volatile gint *address) { - syscall (SYS_futex, address, (gsize) FUTEX_WAKE, (gsize) 1, NULL); + syscall (__NR_futex, address, (gsize) FUTEX_WAKE, (gsize) 1, NULL); } #else