aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/generic
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/generic')
-rw-r--r--sysdeps/unix/sysv/linux/generic/open.c11
-rw-r--r--sysdeps/unix/sysv/linux/generic/open64.c13
-rw-r--r--sysdeps/unix/sysv/linux/generic/pause.c32
-rw-r--r--sysdeps/unix/sysv/linux/generic/poll.c11
-rw-r--r--sysdeps/unix/sysv/linux/generic/recv.c18
-rw-r--r--sysdeps/unix/sysv/linux/generic/select.c16
-rw-r--r--sysdeps/unix/sysv/linux/generic/send.c15
-rw-r--r--sysdeps/unix/sysv/linux/generic/sysdep.h1
-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
16 files changed, 38 insertions, 262 deletions
diff --git a/sysdeps/unix/sysv/linux/generic/open.c b/sysdeps/unix/sysv/linux/generic/open.c
index 289f57aada..66cc2edf4b 100644
--- a/sysdeps/unix/sysv/linux/generic/open.c
+++ b/sysdeps/unix/sysv/linux/generic/open.c
@@ -37,16 +37,7 @@ __libc_open (const char *file, int oflag, ...)
va_end (arg);
}
- if (SINGLE_THREAD_P)
- return INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ return SYSCALL_CANCEL (openat, AT_FDCWD, file, oflag, mode);
}
libc_hidden_def (__libc_open)
diff --git a/sysdeps/unix/sysv/linux/generic/open64.c b/sysdeps/unix/sysv/linux/generic/open64.c
index 374e41cf3a..402bc7cd7f 100644
--- a/sysdeps/unix/sysv/linux/generic/open64.c
+++ b/sysdeps/unix/sysv/linux/generic/open64.c
@@ -37,18 +37,7 @@ __libc_open64 (const char *file, int oflag, ...)
va_end (arg);
}
- if (SINGLE_THREAD_P)
- return INLINE_SYSCALL (openat, 4, AT_FDCWD, file,
- oflag | O_LARGEFILE, mode);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = INLINE_SYSCALL (openat, 4, AT_FDCWD, file,
- oflag | O_LARGEFILE, mode);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ return SYSCALL_CANCEL (openat, AT_FDCWD, file, oflag | O_LARGEFILE, mode);
}
weak_alias (__libc_open64, __open64)
libc_hidden_weak (__open64)
diff --git a/sysdeps/unix/sysv/linux/generic/pause.c b/sysdeps/unix/sysv/linux/generic/pause.c
index 7966df2499..45d3a0eb21 100644
--- a/sysdeps/unix/sysv/linux/generic/pause.c
+++ b/sysdeps/unix/sysv/linux/generic/pause.c
@@ -23,41 +23,17 @@
/* Suspend the process until a signal arrives.
This always returns -1 and sets errno to EINTR. */
-static int
-__syscall_pause (void)
+int
+__libc_pause (void)
{
sigset_t set;
int rc =
- INLINE_SYSCALL (rt_sigprocmask, 4, SIG_BLOCK, NULL, &set, _NSIG / 8);
+ SYSCALL_CANCEL (rt_sigprocmask, SIG_BLOCK, NULL, &set, _NSIG / 8);
if (rc == 0)
- rc = INLINE_SYSCALL (rt_sigsuspend, 2, &set, _NSIG / 8);
+ rc = SYSCALL_CANCEL (rt_sigsuspend, &set, _NSIG / 8);
return rc;
}
-int
-__libc_pause (void)
-{
- if (SINGLE_THREAD_P)
- return __syscall_pause ();
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = __syscall_pause ();
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
weak_alias (__libc_pause, pause)
-
-#ifndef NO_CANCELLATION
-# include <not-cancel.h>
-
-int
-__pause_nocancel (void)
-{
- return __syscall_pause ();
-}
-#endif
diff --git a/sysdeps/unix/sysv/linux/generic/poll.c b/sysdeps/unix/sysv/linux/generic/poll.c
index 7ef42f37ea..2a95796d68 100644
--- a/sysdeps/unix/sysv/linux/generic/poll.c
+++ b/sysdeps/unix/sysv/linux/generic/poll.c
@@ -35,16 +35,7 @@ __poll (struct pollfd *fds, nfds_t nfds, int timeout)
timeout_ts_p = &timeout_ts;
}
- if (SINGLE_THREAD_P)
- return INLINE_SYSCALL (ppoll, 5, fds, nfds, timeout_ts_p, NULL, 0);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = INLINE_SYSCALL (ppoll, 5, fds, nfds, timeout_ts_p, NULL, 0);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
+ return SYSCALL_CANCEL (ppoll, fds, nfds, timeout_ts_p, NULL, 0);
}
libc_hidden_def (__poll)
weak_alias (__poll, poll)
diff --git a/sysdeps/unix/sysv/linux/generic/recv.c b/sysdeps/unix/sysv/linux/generic/recv.c
index d827b3ea21..37861721e7 100644
--- a/sysdeps/unix/sysv/linux/generic/recv.c
+++ b/sysdeps/unix/sysv/linux/generic/recv.c
@@ -24,22 +24,8 @@
ssize_t
__libc_recv (int sockfd, void *buffer, size_t len, int flags)
{
- ssize_t result;
-
- if (SINGLE_THREAD_P)
- result = INLINE_SYSCALL (recvfrom, 6, sockfd, buffer, len, flags,
- NULL, NULL);
- else
- {
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- result = INLINE_SYSCALL (recvfrom, 6, sockfd, buffer, len, flags,
- NULL, NULL);
-
- LIBC_CANCEL_RESET (oldtype);
- }
-
- return result;
+ return SYSCALL_CANCEL (recvfrom, sockfd, buffer, len, flags,
+ NULL, NULL);
}
strong_alias (__libc_recv, __recv)
weak_alias (__libc_recv, recv)
diff --git a/sysdeps/unix/sysv/linux/generic/select.c b/sysdeps/unix/sysv/linux/generic/select.c
index 455c308f13..f7f1e18d4d 100644
--- a/sysdeps/unix/sysv/linux/generic/select.c
+++ b/sysdeps/unix/sysv/linux/generic/select.c
@@ -42,20 +42,8 @@ __select(int nfds, fd_set *readfds,
tsp = &ts;
}
- if (SINGLE_THREAD_P)
- {
- result = INLINE_SYSCALL (pselect6, 6, nfds, readfds, writefds, exceptfds,
- tsp, NULL);
- }
- else
- {
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- result = INLINE_SYSCALL (pselect6, 6, nfds, readfds, writefds, exceptfds,
- tsp, NULL);
-
- LIBC_CANCEL_RESET (oldtype);
- }
+ result = SYSCALL_CANCEL (pselect6, nfds, readfds, writefds, exceptfds, tsp,
+ NULL);
if (timeout)
{
diff --git a/sysdeps/unix/sysv/linux/generic/send.c b/sysdeps/unix/sysv/linux/generic/send.c
index dfbdc091ff..fed69613e1 100644
--- a/sysdeps/unix/sysv/linux/generic/send.c
+++ b/sysdeps/unix/sysv/linux/generic/send.c
@@ -24,20 +24,7 @@
ssize_t
__libc_send (int sockfd, const void *buffer, size_t len, int flags)
{
- ssize_t result;
-
- if (SINGLE_THREAD_P)
- result = INLINE_SYSCALL (sendto, 6, sockfd, buffer, len, flags, NULL, 0);
- else
- {
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- result = INLINE_SYSCALL (sendto, 6, sockfd, buffer, len, flags, NULL, 0);
-
- LIBC_CANCEL_RESET (oldtype);
- }
-
- return result;
+ return SYSCALL_CANCEL (sendto, sockfd, buffer, len, flags, NULL, 0);
}
strong_alias (__libc_send, __send)
weak_alias (__libc_send, send)
diff --git a/sysdeps/unix/sysv/linux/generic/sysdep.h b/sysdeps/unix/sysv/linux/generic/sysdep.h
index 160804cd9e..11da9d21df 100644
--- a/sysdeps/unix/sysv/linux/generic/sysdep.h
+++ b/sysdeps/unix/sysv/linux/generic/sysdep.h
@@ -18,6 +18,7 @@
#include <bits/wordsize.h>
#include <kernel-features.h>
+#include <sysdeps/unix/sysdep.h>
/* Provide the common name to allow more code reuse. */
#define __NR__llseek __NR_llseek
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)