diff options
Diffstat (limited to 'linuxthreads')
-rw-r--r-- | linuxthreads/ChangeLog | 8 | ||||
-rw-r--r-- | linuxthreads/Versions | 8 | ||||
-rw-r--r-- | linuxthreads/wrapsyscall.c | 68 |
3 files changed, 83 insertions, 1 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 10e075adfe..989fbb66ea 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,11 @@ +2002-12-09 Ulrich Drepper <drepper@redhat.com> + + * wrapsyscall.c: Add wrappers for creat, poll, pselect, readv, select, + sigpause, __xpg_sigpause, sigsuspend, sigwaitinfo, waitid, and writev. + * Versions: Export creat, poll, pselect, readv, select, sigpause, + __xpg_sigpause, sigsuspend, sigwaitinfo, waitid, and writev from + libpthread in version GLIBC_2.3.2. + 2002-12-06 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/bits/libc-lock.h: Define __rtld_lock_* macros. diff --git a/linuxthreads/Versions b/linuxthreads/Versions index 79169c8b8e..13d008cd65 100644 --- a/linuxthreads/Versions +++ b/linuxthreads/Versions @@ -21,6 +21,10 @@ libc { __libc_internal_tsd_get; __libc_internal_tsd_set; __libc_internal_tsd_address; __libc_alloca_cutoff; __libc_dl_error_tsd; + + __libc_creat; __libc_poll; __libc_pselect; __libc_select; + __libc_sigpause; __libc_sigsuspend; __libc_sigwait; __libc_sigwaitinfo; + __libc_waitid; __libc___xpg_sigpause; } } @@ -151,6 +155,10 @@ libpthread { # Cancellation wrapper __nanosleep; } + GLIBC_2.3.2 { + creat; poll; pselect; readv; select; sigpause; sigsuspend; + sigwaitinfo; __xpg_sigpause; waitid; writev; + } GLIBC_PRIVATE { # Internal libc interface to libpthread __libc_internal_tsd_get; __libc_internal_tsd_set; 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. */ |