From: Markos Chandras <markos.chand...@imgtec.com> Signed-off-by: Markos Chandras <markos.chand...@imgtec.com> --- libc/sysdeps/linux/common/not-cancel.h | 7 +++++++ libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h | 9 +++++++++ libpthread/linuxthreads/sysdeps/pthread/not-cancel.h | 9 +++++++++ libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h | 9 +++++++++ 4 files changed, 34 insertions(+)
diff --git a/libc/sysdeps/linux/common/not-cancel.h b/libc/sysdeps/linux/common/not-cancel.h index 555ca4f..3ce187f 100644 --- a/libc/sysdeps/linux/common/not-cancel.h +++ b/libc/sysdeps/linux/common/not-cancel.h @@ -23,10 +23,17 @@ #ifdef NOT_IN_libc /* 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 #if 0 /* Uncancelable openat. */ diff --git a/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h b/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h index 01c6916..e2d19b5 100644 --- a/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h +++ b/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h @@ -21,10 +21,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 01c6916..3c88ab0 100644 --- a/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h +++ b/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h @@ -21,10 +21,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 01c6916..e2d19b5 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h @@ -21,10 +21,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.8.1.1 _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc