From: Markos Chandras <[email protected]>
Signed-off-by: Markos Chandras <[email protected]>
---
libc/sysdeps/linux/common/not-cancel.h | 7 +++++++
.../linuxthreads.old/sysdeps/pthread/not-cancel.h | 9 +++++++++
.../linuxthreads/sysdeps/pthread/not-cancel.h | 9 +++++++++
.../nptl/sysdeps/unix/sysv/linux/not-cancel.h | 9 +++++++++
4 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/libc/sysdeps/linux/common/not-cancel.h
b/libc/sysdeps/linux/common/not-cancel.h
index 9418417..c5ef988 100644
--- a/libc/sysdeps/linux/common/not-cancel.h
+++ b/libc/sysdeps/linux/common/not-cancel.h
@@ -21,10 +21,17 @@
#include <sysdep.h>
/* Uncancelable open. */
+#if defined(__NR_openat) && ! defined(__NR_open)
+#define open_not_cancel(name, flags, mode) \
+ INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), (flags), (mode))
+#define open_not_cancel_2(name, flags) \
+ INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), (flags))
+#else
#define open_not_cancel(name, flags, mode) \
INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
#define open_not_cancel_2(name, flags) \
INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
+#endif
/* Uncancelable close. */
#define close_not_cancel(fd) \
diff --git a/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h
b/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h
index 80d33be..4931a5d 100644
--- a/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h
+++ b/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h
@@ -22,10 +22,19 @@
#include <sysdep.h>
/* Uncancelable open. */
+#if defined(__NR_openat) && ! defined(__NR_open)
+#define open_not_cancel(name, flags, mode) \
+ INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), \
+ (flags), (mode))
+#define open_not_cancel_2(name, flags) \
+ INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), \
+ (flags))
+#else
#define open_not_cancel(name, flags, mode) \
INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
#define open_not_cancel_2(name, flags) \
INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
+#endif
/* Uncancelable openat. */
#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
diff --git a/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h
b/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h
index 80d33be..3e1d101 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h
+++ b/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h
@@ -22,10 +22,19 @@
#include <sysdep.h>
/* Uncancelable open. */
+#if defined(__NR_openat) && ! defined(__NR_open)
+#define open_not_cancel(name, flags, mode) \
+ INLINE_SYSCALL (openat, 4, (int) (AT_FDCWD), (const char *) (name), \
+ (flags), (mode))
+#define open_not_cancel_2(name, flags) \
+ INLINE_SYSCALL (openat, 3, (int) (AT_FDCWD), (const char *) (name), \
+ (flags))
+#else
#define open_not_cancel(name, flags, mode) \
INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
#define open_not_cancel_2(name, flags) \
INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
+#endif
/* Uncancelable openat. */
#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h
b/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h
index 80d33be..4931a5d 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h
@@ -22,10 +22,19 @@
#include <sysdep.h>
/* Uncancelable open. */
+#if defined(__NR_openat) && ! defined(__NR_open)
+#define open_not_cancel(name, flags, mode) \
+ INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), \
+ (flags), (mode))
+#define open_not_cancel_2(name, flags) \
+ INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), \
+ (flags))
+#else
#define open_not_cancel(name, flags, mode) \
INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
#define open_not_cancel_2(name, flags) \
INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
+#endif
/* Uncancelable openat. */
#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
--
1.7.1
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc