diff options
Diffstat (limited to 'linuxthreads/wrapsyscall.c')
-rw-r--r-- | linuxthreads/wrapsyscall.c | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/linuxthreads/wrapsyscall.c b/linuxthreads/wrapsyscall.c index c5180355b2..a475c4392d 100644 --- a/linuxthreads/wrapsyscall.c +++ b/linuxthreads/wrapsyscall.c @@ -26,7 +26,10 @@ #include <stddef.h> #include <stdlib.h> #include <termios.h> +#include <sys/poll.h> #include <sys/resource.h> +#include <sys/select.h> +#include <sys/uio.h> #include <sys/wait.h> #include <sys/socket.h> @@ -39,7 +42,7 @@ const int __pthread_provide_wrappers = 0; #define CANCELABLE_SYSCALL(res_type, name, param_list, params) \ -res_type __libc_##name param_list; \ +extern res_type __libc_##name param_list; \ res_type \ __attribute__ ((weak)) \ name param_list \ @@ -77,6 +80,11 @@ CANCELABLE_SYSCALL (int, close, (int fd), (fd)) strong_alias (close, __close) +/* creat(2). */ +CANCELABLE_SYSCALL (int, creat, (const char *pathname, mode_t mode), + (pathname, mode)) + + /* fcntl(2). */ CANCELABLE_SYSCALL_VA (int, fcntl, (int fd, int cmd, ...), (fd, cmd, va_arg (ap, long int)), cmd) @@ -130,6 +138,12 @@ strong_alias (open64, __open64) CANCELABLE_SYSCALL (int, pause, (void), ()) +/* poll(2). */ +CANCELABLE_SYSCALL (int, poll, + (struct pollfd *ufds, nfds_t nfds, int timeout), + (ufds, nfds, timeout)) + + /* pread(3). */ CANCELABLE_SYSCALL (ssize_t, pread, (int fd, void *buf, size_t count, off_t offset), @@ -143,6 +157,14 @@ CANCELABLE_SYSCALL (ssize_t, pread64, (int fd, void *buf, size_t count, strong_alias (pread64, __pread64) +/* pselect(3). */ +CANCELABLE_SYSCALL (int, pselect, (int n, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, + const struct timespec *timeout, + const sigset_t *sigmask), + (n, readfds, writefds, exceptfds, timeout, sigmask)) + + /* pwrite(3). */ CANCELABLE_SYSCALL (ssize_t, pwrite, (int fd, const void *buf, size_t n, off_t offset), @@ -162,6 +184,38 @@ CANCELABLE_SYSCALL (ssize_t, read, (int fd, void *buf, size_t count), strong_alias (read, __read) +/* readv(2). */ +CANCELABLE_SYSCALL (ssize_t, readv, + (int fd, const struct iovec *vector, int count), + (fd, vector, count)) + + +/* select(2). */ +CANCELABLE_SYSCALL (int, select, (int n, fd_set *readfds, + fd_set *writefds, + fd_set *exceptfds, + struct timeval *timeout), + (n, readfds, writefds, exceptfds, timeout)) + + +/* sigpause(3). */ +#undef sigpause +CANCELABLE_SYSCALL (int, sigpause, (int sigmask), (sigmask)) + + +/* __xpg_sigpause(3). */ +CANCELABLE_SYSCALL (int, __xpg_sigpause, (int sigmask), (sigmask)) + + +/* sigsuspend(2). */ +CANCELABLE_SYSCALL (int, sigsuspend, (const sigset_t *mask), (mask)) + + +/* sigwaitinfo(3). */ +CANCELABLE_SYSCALL (int, sigwaitinfo, (const sigset_t *set, siginfo_t *info), + (set, info)) + + /* system(3). */ CANCELABLE_SYSCALL (int, system, (const char *line), (line)) @@ -175,6 +229,12 @@ CANCELABLE_SYSCALL (__pid_t, wait, (__WAIT_STATUS_DEFN stat_loc), (stat_loc)) strong_alias (wait, __wait) +/* waitid(3). */ +CANCELABLE_SYSCALL (int, waitid, + (idtype_t idtype, id_t id, siginfo_t *info, int options), + (idtype, id, info, options)) + + /* waitpid(2). */ CANCELABLE_SYSCALL (__pid_t, waitpid, (__pid_t pid, int *stat_loc, int options), @@ -187,6 +247,12 @@ CANCELABLE_SYSCALL (ssize_t, write, (int fd, const void *buf, size_t n), strong_alias (write, __write) +/* writev(2). */ +CANCELABLE_SYSCALL (ssize_t, writev, + (int fd, const struct iovec *vector, int count), + (fd, vector, count)) + + /* The following system calls are thread cancellation points specified in XNS. */ |