Update.
[kopensolaris-gnu/glibc.git] / linuxthreads / wrapsyscall.c
index d55e6cc..a260c97 100644 (file)
@@ -1,5 +1,5 @@
 /* Wrapper arpund system calls to provide cancelation points.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -31,7 +31,7 @@
 #include <sys/socket.h>
 
 
-#ifndef PIC
+#ifndef SHARED
 /* We need a hook to force this file to be linked in when static
    libpthread is used.  */
 const int __pthread_provide_wrappers = 0;
@@ -41,6 +41,7 @@ const int __pthread_provide_wrappers = 0;
 #define CANCELABLE_SYSCALL(res_type, name, param_list, params) \
 res_type __libc_##name param_list;                                           \
 res_type                                                                     \
+__attribute__ ((weak))                                                       \
 name param_list                                                                      \
 {                                                                            \
   res_type result;                                                           \
@@ -54,6 +55,7 @@ name param_list                                                                     \
 #define CANCELABLE_SYSCALL_VA(res_type, name, param_list, params, last_arg) \
 res_type __libc_##name param_list;                                           \
 res_type                                                                     \
+__attribute__ ((weak))                                                       \
 name param_list                                                                      \
 {                                                                            \
   res_type result;                                                           \
@@ -89,6 +91,11 @@ CANCELABLE_SYSCALL (off_t, lseek, (int fd, off_t offset, int whence),
 strong_alias (lseek, __lseek)
 
 
+/* lseek64(2).  */
+CANCELABLE_SYSCALL (off64_t, lseek64, (int fd, off64_t offset, int whence),
+                   (fd, offset, whence))
+
+
 /* msync(2).  */
 CANCELABLE_SYSCALL (int, msync, (__ptr_t addr, size_t length, int flags),
                    (addr, length, flags))
@@ -98,6 +105,7 @@ CANCELABLE_SYSCALL (int, msync, (__ptr_t addr, size_t length, int flags),
 CANCELABLE_SYSCALL (int, nanosleep, (const struct timespec *requested_time,
                                     struct timespec *remaining),
                    (requested_time, remaining))
+strong_alias (nanosleep, __nanosleep)
 
 
 /* open(2).  */
@@ -106,10 +114,42 @@ CANCELABLE_SYSCALL_VA (int, open, (const char *pathname, int flags, ...),
 strong_alias (open, __open)
 
 
+/* open64(3).  */
+CANCELABLE_SYSCALL_VA (int, open64, (const char *pathname, int flags, ...),
+                      (pathname, flags, va_arg (ap, mode_t)), flags)
+strong_alias (open64, __open64)
+
+
 /* pause(2).  */
 CANCELABLE_SYSCALL (int, pause, (void), ())
 
 
+/* pread(3).  */
+CANCELABLE_SYSCALL (ssize_t, pread, (int fd, void *buf, size_t count,
+                                    off_t offset),
+                   (fd, buf, count, offset))
+
+
+/* pread64(3).  */
+CANCELABLE_SYSCALL (ssize_t, pread64, (int fd, void *buf, size_t count,
+                                      off64_t offset),
+                   (fd, buf, count, offset))
+strong_alias (pread64, __pread64)
+
+
+/* pwrite(3).  */
+CANCELABLE_SYSCALL (ssize_t, pwrite, (int fd, const void *buf, size_t n,
+                                     off_t offset),
+                   (fd, buf, n, offset))
+
+
+/* pwrite64(3).  */
+CANCELABLE_SYSCALL (ssize_t, pwrite64, (int fd, const void *buf, size_t n,
+                                       off64_t offset),
+                   (fd, buf, n, offset))
+strong_alias (pwrite64, __pwrite64)
+
+
 /* read(2).  */
 CANCELABLE_SYSCALL (ssize_t, read, (int fd, void *buf, size_t count),
                    (fd, buf, count))
@@ -156,31 +196,31 @@ CANCELABLE_SYSCALL (int, connect, (int fd, __CONST_SOCKADDR_ARG addr,
 strong_alias (connect, __connect)
 
 /* recv(2).  */
-CANCELABLE_SYSCALL (int, recv, (int fd, __ptr_t buf, size_t n, int flags),
+CANCELABLE_SYSCALL (ssize_t, recv, (int fd, __ptr_t buf, size_t n, int flags),
                    (fd, buf, n, flags))
 
 /* recvfrom(2).  */
-CANCELABLE_SYSCALL (int, recvfrom, (int fd, __ptr_t buf, size_t n, int flags,
-                                   __SOCKADDR_ARG addr, socklen_t *addr_len),
+CANCELABLE_SYSCALL (ssize_t, recvfrom, (int fd, __ptr_t buf, size_t n, int flags,
+                                       __SOCKADDR_ARG addr, socklen_t *addr_len),
                    (fd, buf, n, flags, addr, addr_len))
 
 /* recvmsg(2).  */
-CANCELABLE_SYSCALL (int, recvmsg, (int fd, struct msghdr *message, int flags),
+CANCELABLE_SYSCALL (ssize_t, recvmsg, (int fd, struct msghdr *message, int flags),
                    (fd, message, flags))
 
 /* send(2).  */
-CANCELABLE_SYSCALL (int, send, (int fd, const __ptr_t buf, size_t n,
-                               int flags),
+CANCELABLE_SYSCALL (ssize_t, send, (int fd, const __ptr_t buf, size_t n,
+                                   int flags),
                    (fd, buf, n, flags))
 strong_alias (send, __send)
 
 /* sendmsg(2).  */
-CANCELABLE_SYSCALL (int, sendmsg, (int fd, const struct msghdr *message,
-                                  int flags),
+CANCELABLE_SYSCALL (ssize_t, sendmsg, (int fd, const struct msghdr *message,
+                                      int flags),
                    (fd, message, flags))
 
 /* sendto(2).  */
-CANCELABLE_SYSCALL (int, sendto, (int fd, const __ptr_t buf, size_t n,
-                                 int flags, __CONST_SOCKADDR_ARG addr,
-                                 socklen_t addr_len),
+CANCELABLE_SYSCALL (ssize_t, sendto, (int fd, const __ptr_t buf, size_t n,
+                                     int flags, __CONST_SOCKADDR_ARG addr,
+                                     socklen_t addr_len),
                    (fd, buf, n, flags, addr, addr_len))