[glib] Fix futex(2) detection and use
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Fix futex(2) detection and use
- Date: Sat, 28 May 2011 21:28:13 +0000 (UTC)
commit 858a32879291ebb5612c7500fc195c30fb6e8496
Author: Ryan Lortie <desrt desrt ca>
Date: Sat May 28 17:27:12 2011 -0400
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 bb0a795..ee56df3 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 <linux/futex.h>
-#include <syscall.h>
+#include <sys/syscall.h>
#include <unistd.h>
],[
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 1b8c417..72e0d6e 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 <linux/futex.h>
-#include <syscall.h>
+#include <sys/syscall.h>
#include <unistd.h>
/* < 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]