about summary refs log tree commit diff
path: root/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog8
-rw-r--r--linuxthreads/Versions8
-rw-r--r--linuxthreads/wrapsyscall.c68
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.  */