diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/generic/not-cancel.h | 34 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/nptl/not-cancel.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/not-cancel.h | 54 |
4 files changed, 27 insertions, 63 deletions
diff --git a/sysdeps/unix/sysv/linux/generic/not-cancel.h b/sysdeps/unix/sysv/linux/generic/not-cancel.h deleted file mode 100644 index b8df253..0000000 --- a/sysdeps/unix/sysv/linux/generic/not-cancel.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Uncancelable versions of cancelable interfaces. Linux asm-generic version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2012. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _LINUX_GENERIC_NOT_CANCEL_H -#define _LINUX_GENERIC_NOT_CANCEL_H - -#include <sysdeps/unix/sysv/linux/not-cancel.h> -#include <fcntl.h> - -/* Uncancelable open with openat. */ -#undef open_not_cancel -#define open_not_cancel(name, flags, mode) \ - INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), (flags), (mode)) -#undef open_not_cancel_2 -#define open_not_cancel_2(name, flags) \ - INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), (flags)) - -#endif diff --git a/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h b/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h deleted file mode 100644 index e6a0d13..0000000 --- a/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h +++ /dev/null @@ -1 +0,0 @@ -#include <nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h> diff --git a/sysdeps/unix/sysv/linux/m68k/nptl/not-cancel.h b/sysdeps/unix/sysv/linux/m68k/nptl/not-cancel.h deleted file mode 100644 index e6a0d13..0000000 --- a/sysdeps/unix/sysv/linux/m68k/nptl/not-cancel.h +++ /dev/null @@ -1 +0,0 @@ -#include <nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h> diff --git a/sysdeps/unix/sysv/linux/not-cancel.h b/sysdeps/unix/sysv/linux/not-cancel.h index d23eeba..bc17107 100644 --- a/sysdeps/unix/sysv/linux/not-cancel.h +++ b/sysdeps/unix/sysv/linux/not-cancel.h @@ -1,4 +1,4 @@ -/* Uncancelable versions of cancelable interfaces. Linux version. +/* Uncancelable versions of cancelable interfaces. Linux/NPTL version. Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2003. @@ -17,28 +17,38 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <sys/types.h> #include <sysdep.h> -/* Uncancelable open. */ -#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)) - -/* Uncancelable openat. */ #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt +extern int __open_nocancel (const char *, int, ...) attribute_hidden; +extern int __close_nocancel (int) attribute_hidden; +extern int __read_nocancel (int, void *, size_t) attribute_hidden; +extern int __write_nocancel (int, const void *, size_t) attribute_hidden; +extern pid_t __waitpid_nocancel (pid_t, int *, int) attribute_hidden; extern int __openat_nocancel (int fd, const char *fname, int oflag, - mode_t mode) attribute_hidden; -extern int __openat64_nocancel (int fd, const char *fname, int oflag, mode_t mode) attribute_hidden; +extern int __openat64_nocancel (int fd, const char *fname, int oflag, + mode_t mode) attribute_hidden; #else +# define __open_nocancel(name, ...) __open (name, __VA_ARGS__) +# define __close_nocancel(fd) __close (fd) +# define __read_nocancel(fd, buf, len) __read (fd, buf, len) +# define __write_nocancel(fd, buf, len) __write (fd, buf, len) +# define __waitpid_nocancel(pid, stat_loc, options) \ + __waitpid (pid, stat_loc, options) # define __openat_nocancel(fd, fname, oflag, mode) \ openat (fd, fname, oflag, mode) # define __openat64_nocancel(fd, fname, oflag, mode) \ openat64 (fd, fname, oflag, mode) #endif +/* Uncancelable open. */ +#define open_not_cancel(name, flags, mode) \ + __open_nocancel (name, flags, mode) +#define open_not_cancel_2(name, flags) \ + __open_nocancel (name, flags) + +/* Uncancelable openat. */ #define openat_not_cancel(fd, fname, oflag, mode) \ __openat_nocancel (fd, fname, oflag, mode) #define openat_not_cancel_3(fd, fname, oflag) \ @@ -50,18 +60,18 @@ extern int __openat64_nocancel (int fd, const char *fname, int oflag, /* Uncancelable close. */ #define close_not_cancel(fd) \ - INLINE_SYSCALL (close, 1, fd) + __close_nocancel (fd) #define close_not_cancel_no_status(fd) \ (void) ({ INTERNAL_SYSCALL_DECL (err); \ INTERNAL_SYSCALL (close, err, 1, (fd)); }) /* Uncancelable read. */ #define read_not_cancel(fd, buf, n) \ - INLINE_SYSCALL (read, 3, (fd), (buf), (n)) + __read_nocancel (fd, buf, n) /* Uncancelable write. */ #define write_not_cancel(fd, buf, n) \ - INLINE_SYSCALL (write, 3, (fd), (buf), (n)) + __write_nocancel (fd, buf, n) /* Uncancelable writev. */ #define writev_not_cancel_no_status(fd, iov, n) \ @@ -75,29 +85,19 @@ extern int __openat64_nocancel (int fd, const char *fname, int oflag, /* Uncancelable waitpid. */ #ifdef __NR_waitpid # define waitpid_not_cancel(pid, stat_loc, options) \ - INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options) + __waitpid_nocancel (pid, stat_loc, options) #else # define waitpid_not_cancel(pid, stat_loc, options) \ INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL) #endif /* Uncancelable pause. */ -#ifdef __NR_pause -# define pause_not_cancel() \ - INLINE_SYSCALL (pause, 0) -#else -# define pause_not_cancel() \ +#define pause_not_cancel() \ __pause_nocancel () -#endif /* Uncancelable nanosleep. */ -#ifdef __NR_nanosleep -# define nanosleep_not_cancel(requested_time, remaining) \ - INLINE_SYSCALL (nanosleep, 2, requested_time, remaining) -#else -# define nanosleep_not_cancel(requested_time, remaining) \ +#define nanosleep_not_cancel(requested_time, remaining) \ __nanosleep_nocancel (requested_time, remaining) -#endif /* Uncancelable sigsuspend. */ #define sigsuspend_not_cancel(set) \ |