summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/generic/wordsize-32
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-09-28 08:46:23 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2015-06-04 18:58:36 -0300
commitc6bb095eb544aa32d3f4b8e9aa434d686915446e (patch)
tree3b7d6f14949912396eb394827b75ae131e53d937 /sysdeps/unix/sysv/linux/generic/wordsize-32
parentb65d3e5f0f452e86f81d21d59b065feeb31357be (diff)
downloadglibc-c6bb095eb544aa32d3f4b8e9aa434d686915446e.tar.gz
nptl: Rewrite cancellation macros
This patch changes the way cancellation entrypoints are defined to instead call the macro SYSCALL_CANCEL. An usual cnacellation definition is defined as: if (SINGLE_THREAD_P) return INLINE_SYSCALL (syscall, NARGS, args...) int oldtype = LIBC_CANCEL_ASYNC (); return INLINE_SYSCALL (syscall, NARGS, args...) LIBC_CANCEL_RESET (oldtype); And it is rewrited as just: SYSCALL_CANCEL (syscall, args...) The idea is to remove LIBC_CANCEL_ASYNC/LIBC_CANCEL_RESET explicit usage. Tested on i386, x86_64, powerpc32, powerpc64le, arm, and aarch64. * sysdeps/unix/sysdep.h [SYSCALL_CANCEL]: New macro: define cancellable syscalls. (SYS_ify): Add guard to no redefine it. (INLINE_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/accept4.c (accept4): Remove LIBC_CANCEL_ASYNC/INLINE_SYSCALL/LIBC_CANCEL_RESET and use SYSCALL_CANCEL instead. * sysdeps/unix/sysv/linux/alpha/fdatasync.c (__fdatasync): Likewise. * sysdeps/unix/sysv/linux/arm/pread.c (__libc_pread): Likewise. * sysdeps/unix/sysv/linux/arm/pread64.c (__libc_pread64): Likewise. * sysdeps/unix/sysv/linux/arm/pwrite.c (__libc_pwrite): Likewise. * sysdeps/unix/sysv/linux/arm/pwrite64.c (__libc_pwrite64): Likewise. * sysdeps/unix/sysv/linux/epoll_pwait.c (epoll_pwait): Likewise. * sysdeps/unix/sysv/linux/fallocate.c (fallocate): Likewise. * sysdeps/unix/sysv/linux/fallocate64.c (fallocate64): Likewise. * sysdeps/unix/sysv/linux/generic/open.c (__libc_open): Likewise. * sysdeps/unix/sysv/linux/generic/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/generic/pause.c (__libc_pause): Likewise. * sysdeps/unix/sysv/linux/generic/poll.c (__poll): Likewise. * sysdeps/unix/sysv/linux/generic/recv.c (__libc_recv): Likewise. * sysdeps/unix/sysv/linux/generic/select.c (__select): Likewise. * sysdeps/unix/sysv/linux/generic/send.c (__libc_send): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c (__libc_pread): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c (__libc_pread64): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c (__libc_preadv): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c (__libc_readv64): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c (__libc_pwrite): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c (__libc_pwrite64): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c (__libc_pwritev): Likewise. * sysdeps/sysv/linux/generic/wordsize-32/pwritev64.c (__libc_pwritev64): Likewise. * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Likewise. * sysdeps/unix/sysv/linux/mips/mips32/sync_file_range.c (sync_file_range): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/fallocate.c (fallocate): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/fallocate64.c (fallocate64): Likewise. * sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise. * sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Likewise. * sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise. * sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise. * sysdeps/unix/sysv/linux/msgrcv.c (__libc_msgrcv): Likewise. * sysdeps/unix/sysv/linux/msgsnd.c (__libc_msgsnd): Likewise. * sysdeps/unix/sysv/linux/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/openat.c (__libc_openat): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c (__libc_pread): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c (__libc_read64): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c (__libc_write): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c (__libc_write64): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c (__libc_fcntl): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c (__libc_pread): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c (__libc_pread64): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c (__libc_pwrite): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c (__libc_pwrite64): Likewise. * sysdeps/sysv/linux/powerpc/powerpc64/sync_file_range.c (sync_file_range): Likewise. * sysdeps/unix/sysv/linux/ppoll.c (ppoll): Likewise. * sysdeps/unix/sysv/linux/pread.c (__libc_pread): Likewise. * sysdeps/unix/sysv/linux/pread64.c (__libc_pread64): Likewise. * sysdeps/unix/sysv/linux/preadv.c (__libc_preadv): Likewise. * sysdeps/unix/sysv/linux/pselect.c (__pselect): Likewise. * sysdeps/unix/sysv/linux/pwrite.c (__libc_pwrite): Likewise. * sysdeps/unix/sysv/linux/pwrite64.c (__libc_pwrite64): Likewise. * sysdeps/unix/sysv/linux/pwritev.c (PWRITEV): Likewise. * sysdeps/unix/sysv/linux/readv.c (__libc_readv): Likewise. * sysdeps/unix/sysv/linux/recvmmsg.c (recvmmsg): Likewise. * sysdeps/unix/sysv/linux/sendmmsg.c (sendmmsg): Likewise. * sysdeps/unix/sysv/linux/sh/pread.c (__libc_pread): Likewise. * sysdeps/unix/sysv/linux/sh/pread64.c (__libc_pread64): Likewise. * sysdeps/unix/sysv/linux/sh/pwrite.c (__libc_pwrite): Likewise. * sysdeps/unix/sysv/linux/sh/pwrite64.c (__libc_pwrite64): Likewise. * sysdeps/unix/sysv/linux/sigsuspend.c (__sigsuspend): Likewise. * sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Likewise. * sysdeps/unix/sysv/linux/sigwaitinfo.c (__sigwaitinfo): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c (__libc_msgrcv): Likewise. * sysdeps/unix/sysv/linux/sync_file_range.c (sync_file_range): Likewise. * sysdeps/unix/sysv/linux/tcdrain.c (__libc_tcdrain): Likewise. * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread): Likewise. * sysdeps/unix/sysv/linux/wait.c (__libc_wait): Likewise. * sysdeps/unix/sysv/linux/waitid.c (__waitid): Likewise. * sysdeps/unix/sysv/linux/waitpid.c (__libc_waitpid): Likewise. * sysdeps/unix/sysv/linux/wordsize-64/fallocate.c (fallocate): Likewise. * sysdeps/unix/sysv/linux/wordsize-64/preadv.c (preadv): Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pwritev.c (pwritev): Likewise. * sysdeps/unix/sysv/linux/writev.c (__libc_writev): Likewise. * sysdeps/unix/sysv/linux/x86_64/recv.c (__libc_recv): Likewise. * sysdeps/unix/sysv/linux/x86_64/send.c (__libc_send): Likewise.
Diffstat (limited to 'sysdeps/unix/sysv/linux/generic/wordsize-32')
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c21
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c24
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c21
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c22
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c23
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c24
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c23
-rw-r--r--sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c25
8 files changed, 25 insertions, 158 deletions
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c
index ad97e97135..6f9703cc21 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c
@@ -25,28 +25,13 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_pread (int fd, void *buf, size_t count, off_t offset)
+ssize_t
+__libc_pread (int fd, void *buf, size_t count, off_t offset)
{
assert (sizeof (offset) == 4);
- return INLINE_SYSCALL (pread64, __ALIGNMENT_COUNT (5, 6), fd,
+ return SYSCALL_CANCEL (pread64, fd,
buf, count, __ALIGNMENT_ARG
__LONG_LONG_PAIR (offset >> 31, offset));
}
-
-ssize_t
-__libc_pread (int fd, void *buf, size_t count, off_t offset)
-{
- if (SINGLE_THREAD_P)
- return do_pread (fd, buf, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_pread (fd, buf, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
strong_alias (__libc_pread, __pread)
weak_alias (__libc_pread, pread)
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c
index 7250893297..a3f8ec1caa 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c
@@ -24,29 +24,11 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_pread64 (int fd, void *buf, size_t count, off64_t offset)
-{
- return INLINE_SYSCALL (pread64, __ALIGNMENT_COUNT (5, 6), fd,
- buf, count, __ALIGNMENT_ARG
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-}
-
-
ssize_t
__libc_pread64 (int fd, void *buf, size_t count, off64_t offset)
{
- if (SINGLE_THREAD_P)
- return do_pread64 (fd, buf, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_pread64 (fd, buf, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ return SYSCALL_CANCEL (pread64, fd, buf, count, __ALIGNMENT_ARG
+ __LONG_LONG_PAIR ((off_t) (offset >> 32),
+ (off_t) (offset & 0xffffffff)));
}
-
weak_alias (__libc_pread64, __pread64) weak_alias (__libc_pread64, pread64)
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c
index 9a1832a854..d127fee927 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c
@@ -26,28 +26,13 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_preadv (int fd, const struct iovec *vector, int count, off_t offset)
+ssize_t
+__libc_preadv (int fd, const struct iovec *vector, int count, off_t offset)
{
assert (sizeof (offset) == 4);
- return INLINE_SYSCALL (preadv, __ALIGNMENT_COUNT (5, 6), fd,
+ return SYSCALL_CANCEL (preadv, fd,
vector, count, __ALIGNMENT_ARG
__LONG_LONG_PAIR (offset >> 31, offset));
}
-
-ssize_t
-__libc_preadv (int fd, const struct iovec *vector, int count, off_t offset)
-{
- if (SINGLE_THREAD_P)
- return do_preadv (fd, vector, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_preadv (fd, vector, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
strong_alias (__libc_preadv, __preadv)
weak_alias (__libc_preadv, preadv)
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c
index df1c010a70..7e7ebf740f 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c
@@ -25,30 +25,14 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_preadv64 (int fd, const struct iovec *vector, int count, off64_t offset)
+ssize_t
+__libc_preadv64 (int fd, const struct iovec *vector, int count, off64_t offset)
{
- return INLINE_SYSCALL (preadv, __ALIGNMENT_COUNT (5, 6), fd,
+ return SYSCALL_CANCEL (preadv, fd,
vector, count, __ALIGNMENT_ARG
__LONG_LONG_PAIR ((off_t) (offset >> 32),
(off_t) (offset & 0xffffffff)));
}
-
-ssize_t
-__libc_preadv64 (int fd, const struct iovec *vector, int count, off64_t offset)
-{
- if (SINGLE_THREAD_P)
- return do_preadv64 (fd, vector, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_preadv64 (fd, vector, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
-
strong_alias (__libc_preadv64, __preadv64)
weak_alias (__libc_preadv64, preadv64)
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c
index e897c7d6ad..2f0f7a1747 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c
@@ -25,29 +25,12 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_pwrite (int fd, const void *buf, size_t count, off_t offset)
-{
- assert (sizeof (offset) == 4);
- return INLINE_SYSCALL (pwrite64, __ALIGNMENT_COUNT (5, 6), fd,
- buf, count, __ALIGNMENT_ARG
- __LONG_LONG_PAIR (offset >> 31, offset));
-}
-
-
ssize_t
__libc_pwrite (int fd, const void *buf, size_t count, off_t offset)
{
- if (SINGLE_THREAD_P)
- return do_pwrite (fd, buf, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_pwrite (fd, buf, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ assert (sizeof (offset) == 4);
+ return SYSCALL_CANCEL (pwrite64, fd, buf, count, __ALIGNMENT_ARG
+ __LONG_LONG_PAIR (offset >> 31, offset));
}
strong_alias (__libc_pwrite, __pwrite)
weak_alias (__libc_pwrite, pwrite)
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c
index 3ac1339b9a..f222016e0f 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c
@@ -24,30 +24,12 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_pwrite64 (int fd, const void *buf, size_t count, off64_t offset)
-{
- return INLINE_SYSCALL (pwrite64, __ALIGNMENT_COUNT (5, 6), fd,
- buf, count, __ALIGNMENT_ARG
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-}
-
-
ssize_t
__libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset)
{
- if (SINGLE_THREAD_P)
- return do_pwrite64 (fd, buf, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_pwrite64 (fd, buf, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ return SYSCALL_CANCEL (pwrite64, fd, buf, count, __ALIGNMENT_ARG
+ __LONG_LONG_PAIR ((off_t) (offset >> 32),
+ (off_t) (offset & 0xffffffff)));
}
-
weak_alias (__libc_pwrite64, __pwrite64)
libc_hidden_weak (__pwrite64) weak_alias (__libc_pwrite64, pwrite64)
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c
index db1e4cb5d2..273b0ffb47 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c
@@ -26,29 +26,12 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_pwritev (int fd, const struct iovec *vector, int count, off_t offset)
-{
- assert (sizeof (offset) == 4);
- return INLINE_SYSCALL (pwritev, __ALIGNMENT_COUNT (5, 6), fd,
- vector, count, __ALIGNMENT_ARG
- __LONG_LONG_PAIR (offset >> 31, offset));
-}
-
-
ssize_t
__libc_pwritev (int fd, const struct iovec *vector, int count, off_t offset)
{
- if (SINGLE_THREAD_P)
- return do_pwritev (fd, vector, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_pwritev (fd, vector, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ assert (sizeof (offset) == 4);
+ return SYSCALL_CANCEL (pwritev, fd, vector, count, __ALIGNMENT_ARG
+ __LONG_LONG_PAIR (offset >> 31, offset));
}
strong_alias (__libc_pwritev, __pwritev)
weak_alias (__libc_pwritev, pwritev)
diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c
index eb85e079d7..9d3fa75c7a 100644
--- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c
+++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c
@@ -25,31 +25,14 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
-static ssize_t
-do_pwritev64 (int fd, const struct iovec *vector, int count, off64_t offset)
-{
- return INLINE_SYSCALL (pwritev, __ALIGNMENT_COUNT (5, 6), fd,
- vector, count, __ALIGNMENT_ARG
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-}
-
-
ssize_t
__libc_pwritev64 (int fd, const struct iovec *vector, int count,
off64_t offset)
{
- if (SINGLE_THREAD_P)
- return do_pwritev64 (fd, vector, count, offset);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- ssize_t result = do_pwritev64 (fd, vector, count, offset);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ return SYSCALL_CANCEL (pwritev, fd,
+ vector, count, __ALIGNMENT_ARG
+ __LONG_LONG_PAIR ((off_t) (offset >> 32),
+ (off_t) (offset & 0xffffffff)));
}
-
strong_alias (__libc_pwritev64, pwritev64)
weak_alias (__libc_pwritev64, __pwritev64)