aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/libitm/config/linux/futex_bits.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/libitm/config/linux/futex_bits.h')
-rw-r--r--gcc-4.8/libitm/config/linux/futex_bits.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc-4.8/libitm/config/linux/futex_bits.h b/gcc-4.8/libitm/config/linux/futex_bits.h
index 44f89aae2..fd79652e3 100644
--- a/gcc-4.8/libitm/config/linux/futex_bits.h
+++ b/gcc-4.8/libitm/config/linux/futex_bits.h
@@ -31,9 +31,13 @@
#include <unistd.h>
#include <sys/syscall.h>
+#include <errno.h>
static inline long
sys_futex0 (std::atomic<int> *addr, long op, long val)
{
- return syscall (SYS_futex, (int*) addr, op, val, 0);
+ long res = syscall (SYS_futex, (int*) addr, op, val, 0);
+ if (__builtin_expect (res == -1, 0))
+ return -errno;
+ return res;
}