re PR libgomp/47731 (futex_wait broken on Linux)

PR libgomp/47731
	* config/linux/futex.h (futex_wait): Pass NULL as timeout argument
	to FUTEX_WAIT futex syscall.
	* config/linux/wait.h: Include <futex.h> instead of "futex.h".

From-SVN: r170133
This commit is contained in:
Jakub Jelinek 2011-02-14 16:08:23 +01:00 committed by Jakub Jelinek
parent fa0a5acc1e
commit 53b4d41df8
3 changed files with 12 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2011-02-14 Jakub Jelinek <jakub@redhat.com>
PR libgomp/47731
* config/linux/futex.h (futex_wait): Pass NULL as timeout argument
to FUTEX_WAIT futex syscall.
* config/linux/wait.h: Include <futex.h> instead of "futex.h".
2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> 2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure: Regenerate. * configure: Regenerate.

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2010 Free Software Foundation, Inc. /* Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by ARM Ltd. Contributed by ARM Ltd.
This file is part of the GNU OpenMP Library (libgomp). This file is part of the GNU OpenMP Library (libgomp).
@ -41,12 +41,12 @@
static inline void static inline void
futex_wait (int *addr, int val) futex_wait (int *addr, int val)
{ {
long err = syscall (SYS_futex, addr, gomp_futex_wait, val); long err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL);
if (__builtin_expect (err == -ENOSYS, 0)) if (__builtin_expect (err == -ENOSYS, 0))
{ {
gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
syscall (SYS_futex, addr, gomp_futex_wait, val); syscall (SYS_futex, addr, gomp_futex_wait, val, NULL);
} }
} }

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. /* Copyright (C) 2008, 2009, 2011 Free Software Foundation, Inc.
Contributed by Jakub Jelinek <jakub@redhat.com>. Contributed by Jakub Jelinek <jakub@redhat.com>.
This file is part of the GNU OpenMP Library (libgomp). This file is part of the GNU OpenMP Library (libgomp).
@ -42,7 +42,7 @@
extern long int gomp_futex_wait, gomp_futex_wake; extern long int gomp_futex_wait, gomp_futex_wake;
#include "futex.h" #include <futex.h>
static inline void do_wait (int *addr, int val) static inline void do_wait (int *addr, int val)
{ {