diff options
33 files changed, 35 insertions, 1895 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index a97ff6999e..24abd2b541 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,38 @@ +2002-12-14 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/i386/pt-socket.S: Changes folded into the + regular Linux version. Remove file. + * sysdeps/unix/sysv/linux/connect.S: Likewise. Remove file. + * sysdeps/unix/sysv/linux/llseek.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/msgrcv.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/msgsnd.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/open64.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/poll.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/pread.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/pselect.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/readv.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/recv.S: Likewise. Remove file. + * sysdeps/unix/sysv/linux/recvfrom.S: Likewise. Remove file. + * sysdeps/unix/sysv/linux/recvmsg.S: Likewise. Remove file. + * sysdeps/unix/sysv/linux/send.S: Likewise. Remove file. + * sysdeps/unix/sysv/linux/sendmsg.S: Likewise. Remove file. + * sysdeps/unix/sysv/linux/sendto.S: Likewise. Remove file. + * sysdeps/unix/sysv/linux/sigpause.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/sigwait.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/system.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/tcdrain.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/wait.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/waitid.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/waitpid.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/writev.c: Likewise. Remove file. + * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. Remove file. + 2002-12-14 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: New file. diff --git a/nptl/sysdeps/unix/sysv/linux/accept.S b/nptl/sysdeps/unix/sysv/linux/accept.S deleted file mode 100644 index 6b668dfd9a..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/accept.S +++ /dev/null @@ -1,4 +0,0 @@ -#define socket accept -#define __socket __libc_accept -#define NARGS 3 -#include <pt-socket.S> diff --git a/nptl/sysdeps/unix/sysv/linux/connect.S b/nptl/sysdeps/unix/sysv/linux/connect.S deleted file mode 100644 index ce6a038fa5..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/connect.S +++ /dev/null @@ -1,6 +0,0 @@ -#define socket connect -#define __socket __libc_connect -#define NARGS 3 -#include <pt-socket.S> -strong_alias (__libc_connect, __connect_internal) -weak_alias (__libc_connect, __connect) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/fcntl.c b/nptl/sysdeps/unix/sysv/linux/i386/fcntl.c deleted file mode 100644 index 89b8084693..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/i386/fcntl.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (C) 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <assert.h> -#include <errno.h> -#include <fcntl.h> -#include <stdarg.h> - -#include <nptl/pthreadP.h> -#include <tls.h> -#include <sysdep.h> -#include <sys/syscall.h> -#include "../kernel-features.h" - -extern int __syscall_fcntl64 (int __fd, int __cmd, ...); - - -int -__libc_fcntl (int fd, int cmd, ...) -{ - va_list ap; - - va_start (ap, cmd); - void *arg = va_arg (ap, void *); - va_end (ap); - -#ifndef NOT_IN_libc - if (cmd != F_SETLKW - || __builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, - 1)) - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__libc_fcntl) - -weak_alias (__libc_fcntl, __fcntl) -libc_hidden_weak (__fcntl) -weak_alias (__libc_fcntl, fcntl) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/pt-socket.S b/nptl/sysdeps/unix/sysv/linux/i386/pt-socket.S deleted file mode 100644 index d9140edcc5..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/i386/pt-socket.S +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright (C) 1995, 1996, 1997, 1998, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <sysdep.h> -#include <socketcall.h> -#include <tls.h> - -#define P(a, b) P2(a, b) -#define P2(a, b) a##b - - .text -/* The socket-oriented system calls are handled unusally in Linux. - They are all gated through the single `socketcall' system call number. - `socketcall' takes two arguments: the first is the subcode, specifying - which socket function is being called; and the second is a pointer to - the arguments to the specific function. - - The .S files for the other calls just #define socket and #include this. */ - -#ifndef __socket -# error "__socket and socket must be defined" -#endif - -.globl __socket -ENTRY (__socket) - cmpl $0, %gs:MULTIPLE_THREADS_OFFSET - jne 1f - - /* Save registers. */ - movl %ebx, %edx - - movl $SYS_ify(socketcall), %eax /* System call number in %eax. */ - - /* Use ## so `socket' is a separate token that might be #define'd. */ - movl $P(SOCKOP_,socket), %ebx /* Subcode is first arg to syscall. */ - lea 4(%esp), %ecx /* Address of args is 2nd arg. */ - - /* Do the system call trap. */ - int $0x80 - - /* Restore registers. */ - movl %edx, %ebx - - /* %eax is < 0 if there was an error. */ - cmpl $-125, %eax - jae SYSCALL_ERROR_LABEL - - /* Successful; return the syscall's value. */ - ret - - - /* We need one more register. */ -1: pushl %esi - - /* Enable asynchronous cancellation. */ - call __libc_enable_asynccancel /* No @plt */ - movl %eax, %esi - - /* Save registers. */ - movl %ebx, %edx - - movl $SYS_ify(socketcall), %eax /* System call number in %eax. */ - - /* Use ## so `socket' is a separate token that might be #define'd. */ - movl $P(SOCKOP_,socket), %ebx /* Subcode is first arg to syscall. */ - lea 8(%esp), %ecx /* Address of args is 2nd arg. */ - - /* Do the system call trap. */ - int $0x80 - - /* Restore the cancellation. */ - xchgl %esi, %eax - call __libc_disable_asynccancel /* No @plt */ - - /* Restore registers. */ - movl %esi, %eax - movl %edx, %ebx - popl %esi - - /* %eax is < 0 if there was an error. */ - cmpl $-125, %eax - jae SYSCALL_ERROR_LABEL - - /* Successful; return the syscall's value. */ -L(pseudo_end): - ret - -PSEUDO_END (__socket) - -#ifndef NO_WEAK_ALIAS -weak_alias (__socket, socket) -#endif diff --git a/nptl/sysdeps/unix/sysv/linux/llseek.c b/nptl/sysdeps/unix/sysv/linux/llseek.c deleted file mode 100644 index e807bcfec2..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/llseek.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Long-long seek operation. - Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <sys/types.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -extern int __syscall__llseek (int fd, off_t offset_hi, off_t offset_lo, - loff_t *__unbounded result, int whence); - -/* Seek to OFFSET on FD, starting from WHENCE. */ -extern loff_t __llseek (int fd, loff_t offset, int whence); - -loff_t -__llseek (int fd, loff_t offset, int whence) -{ - loff_t result; - -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32), - (off_t) (offset & 0xffffffff), - __ptrvalue (&result), whence) ?: result); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int retval = INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32), - (off_t) (offset & 0xffffffff), - __ptrvalue (&result), whence); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return (loff_t) (retval ?: result); -} -weak_alias (__llseek, llseek) -strong_alias (__llseek, __libc_lseek64) -strong_alias (__llseek, __lseek64) -weak_alias (__llseek, lseek64) - -/* llseek doesn't have a prototype. Since the second parameter is a - 64bit type, this results in wrong behaviour if no prototype is - provided. */ -link_warning (llseek, "\ -the `llseek' function may be dangerous; use `lseek64' instead.") diff --git a/nptl/sysdeps/unix/sysv/linux/msgrcv.c b/nptl/sysdeps/unix/sysv/linux/msgrcv.c deleted file mode 100644 index af1953f5a0..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/msgrcv.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 1995, 1997, 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <sys/msg.h> -#include <ipc_priv.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -#include <bp-checks.h> - -/* Kludge to work around Linux' restriction of only up to five - arguments to a system call. */ -struct ipc_kludge - { - void *__unbounded msgp; - long int msgtyp; - }; - - -int -__libc_msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) - int msqid; - void *msgp; - size_t msgsz; - long int msgtyp; - int msgflg; -{ - /* The problem here is that Linux' calling convention only allows up to - fives parameters to a system call. */ - struct ipc_kludge tmp; - - tmp.msgp = CHECK_N (msgp, msgsz); - tmp.msgtyp = msgtyp; - -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg, - __ptrvalue (&tmp)); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg, - __ptrvalue (&tmp)); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_msgrcv, msgrcv) diff --git a/nptl/sysdeps/unix/sysv/linux/msgsnd.c b/nptl/sysdeps/unix/sysv/linux/msgsnd.c deleted file mode 100644 index 1f3e40a0c6..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/msgsnd.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 1995,1997,1998,1999,2000,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <sys/msg.h> -#include <ipc_priv.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -#include <bp-checks.h> - -int -__libc_msgsnd (msqid, msgp, msgsz, msgflg) - int msqid; - const void *msgp; - size_t msgsz; - int msgflg; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (ipc, 5, IPCOP_msgsnd, msqid, msgsz, - msgflg, (void *) CHECK_N (msgp, msgsz)); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (ipc, 5, IPCOP_msgsnd, msqid, msgsz, - msgflg, (void *) CHECK_N (msgp, msgsz)); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_msgsnd, msgsnd) diff --git a/nptl/sysdeps/unix/sysv/linux/open64.c b/nptl/sysdeps/unix/sysv/linux/open64.c deleted file mode 100644 index 0fac91609c..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/open64.c +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <fcntl.h> -#include <stdlib.h> -#include <sysdep.h> -#include <stdarg.h> -#include <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -int -__libc_open64 (const char *file, int oflag, ...) -{ - int mode = 0; - - if (oflag & O_CREAT) - { - va_list arg; - va_start (arg, oflag); - mode = va_arg (arg, int); - va_end (arg); - } - -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (open, 3, file, oflag | O_LARGEFILE, mode); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (open, 3, file, oflag | O_LARGEFILE, mode); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__libc_open64, __open64) -libc_hidden_weak (__open64) -weak_alias (__libc_open64, open64) diff --git a/nptl/sysdeps/unix/sysv/linux/poll.c b/nptl/sysdeps/unix/sysv/linux/poll.c deleted file mode 100644 index e44db71d61..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/poll.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Poll system call, with emulation if it is not available. - Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <sys/poll.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -extern int __syscall_poll (struct pollfd *__unbounded fds, - unsigned int nfds, int timeout); - - -/* The real implementation. */ -int -__poll (fds, nfds, timeout) - struct pollfd *fds; - nfds_t nfds; - int timeout; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds, timeout); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds, timeout); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__poll) -weak_alias (__poll, poll) -strong_alias (__poll, __libc_poll) diff --git a/nptl/sysdeps/unix/sysv/linux/pread.c b/nptl/sysdeps/unix/sysv/linux/pread.c deleted file mode 100644 index ec792693b0..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/pread.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <assert.h> -#include <errno.h> -#include <endian.h> -#include <unistd.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -#ifndef __NR_pread64 /* Newer kernels renamed but it's the same. */ -# error "__NR_pread64 must be defined" -#endif - - -/* The order of hi, lo depends on endianness. */ -extern ssize_t __syscall_pread64 (int fd, void *__unbounded buf, size_t count, - off_t offset_hi, off_t offset_lo); - - -ssize_t -__libc_pread (fd, buf, count, offset) - int fd; - void *buf; - size_t count; - off_t offset; -{ - assert (sizeof (offset) == 4); -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (pread64, 5, fd, CHECK_N (buf, count), count, - __LONG_LONG_PAIR (offset >> 31, offset)); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (pread64, 5, fd, CHECK_N (buf, count), count, - __LONG_LONG_PAIR (offset >> 31, offset)); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} - -strong_alias (__libc_pread, __pread) -weak_alias (__libc_pread, pread) diff --git a/nptl/sysdeps/unix/sysv/linux/pread64.c b/nptl/sysdeps/unix/sysv/linux/pread64.c deleted file mode 100644 index 5abe5d1813..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/pread64.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <endian.h> -#include <unistd.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -#ifndef __NR_pread64 /* Newer kernels renamed but it's the same. */ -# error "__NR_pread64 must be defined" -#endif - - -/* The order of hi, lo depends on endianness. */ -extern ssize_t __syscall_pread64 (int fd, void *__unbounded buf, size_t count, - off_t offset_hi, off_t offset_lo); - - -ssize_t -__libc_pread64 (fd, buf, count, offset) - int fd; - void *buf; - size_t count; - off64_t offset; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (pread64, 5, fd, CHECK_N (buf, count), count, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (pread64, 5, fd, CHECK_N (buf, count), count, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset - & 0xffffffff))); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} - -weak_alias (__libc_pread64, __pread64) -weak_alias (__libc_pread64, pread64) diff --git a/nptl/sysdeps/unix/sysv/linux/pselect.c b/nptl/sysdeps/unix/sysv/linux/pselect.c deleted file mode 100644 index bb5daa8768..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/pselect.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (C) 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <signal.h> -#include <stddef.h> /* For NULL. */ -#include <sys/time.h> -#include <sys/select.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -/* Check the first NFDS descriptors each in READFDS (if not NULL) for read - readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS - (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out - after waiting the interval specified therein. Additionally set the sigmask - SIGMASK for this call. Returns the number of ready descriptors, or -1 for - errors. */ -static int -do_pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - const struct timespec *timeout, const sigset_t *sigmask) -{ - struct timeval tval; - int retval; - sigset_t savemask; - - /* Change nanosecond number to microseconds. This might mean losing - precision and therefore the `pselect` should be available. But - for now it is hardly found. */ - if (timeout != NULL) - TIMESPEC_TO_TIMEVAL (&tval, timeout); - - /* The setting and restoring of the signal mask and the select call - should be an atomic operation. This can't be done without kernel - help. */ - if (sigmask != NULL) - __sigprocmask (SIG_SETMASK, sigmask, &savemask); - - retval = __select (nfds, readfds, writefds, exceptfds, - timeout != NULL ? &tval : NULL); - - if (sigmask != NULL) - __sigprocmask (SIG_SETMASK, &savemask, NULL); - - return retval; -} - - -int -__pselect (nfds, readfds, writefds, exceptfds, timeout, sigmask) - int nfds; - fd_set *readfds; - fd_set *writefds; - fd_set *exceptfds; - const struct timespec *timeout; - const sigset_t *sigmask; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return do_pselect (nfds, readfds, writefds, exceptfds, timeout, sigmask); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = do_pselect (nfds, readfds, writefds, exceptfds, timeout, - sigmask); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__pselect, pselect) -strong_alias (__pselect, __libc_pselect) diff --git a/nptl/sysdeps/unix/sysv/linux/pwrite.c b/nptl/sysdeps/unix/sysv/linux/pwrite.c deleted file mode 100644 index d13fe5a4a3..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/pwrite.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <assert.h> -#include <errno.h> -#include <endian.h> -#include <unistd.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -#ifndef __NR_pwrite64 -# error "__NR_pwrite64 must be defined" -#endif - - -/* The order of hi, lo depends on endianness. */ -extern ssize_t __syscall_pwrite64 (int fd, const void *__unbounded buf, - size_t count, off_t offset_hi, - off_t offset_lo); - - -ssize_t -__libc_pwrite (fd, buf, count, offset) - int fd; - const void *buf; - size_t count; - off_t offset; -{ - /* First try the syscall. */ - assert (sizeof (offset) == 4); -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (pwrite64, 5, fd, CHECK_N (buf, count), count, - __LONG_LONG_PAIR (offset >> 31, offset)); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (pwrite64, 5, fd, CHECK_N (buf, count), - count, - __LONG_LONG_PAIR (offset >> 31, offset)); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} - -strong_alias (__libc_pwrite, __pwrite) -weak_alias (__libc_pwrite, pwrite) diff --git a/nptl/sysdeps/unix/sysv/linux/pwrite64.c b/nptl/sysdeps/unix/sysv/linux/pwrite64.c deleted file mode 100644 index 37c2b9c6f1..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/pwrite64.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <endian.h> -#include <unistd.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -#ifndef __NR_pwrite64 -# error "__NR_pwrite64 must be defined" -#endif - - -/* The order of hi, lo depends on endianness. */ -extern ssize_t __syscall_pwrite64 (int fd, const void *__unbounded buf, - size_t count, off_t offset_hi, - off_t offset_lo); - - -ssize_t -__libc_pwrite64 (fd, buf, count, offset) - int fd; - const void *buf; - size_t count; - off64_t offset; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (pwrite64, 5, fd, CHECK_N (buf, count), count, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (pwrite64, 5, fd, CHECK_N (buf, count), - count, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset - & 0xffffffff))); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} - -weak_alias (__libc_pwrite64, __pwrite64) -libc_hidden_weak (__pwrite64) -weak_alias (__libc_pwrite64, pwrite64) diff --git a/nptl/sysdeps/unix/sysv/linux/readv.c b/nptl/sysdeps/unix/sysv/linux/readv.c deleted file mode 100644 index 3bf83ba6a6..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/readv.c +++ /dev/null @@ -1,58 +0,0 @@ -/* readv supports all Linux kernels >= 2.0. - Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <stddef.h> -#include <sys/param.h> -#include <sys/uio.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -extern ssize_t __syscall_readv (int, __const struct iovec *__unbounded, int); - - -ssize_t -__libc_readv (fd, vector, count) - int fd; - const struct iovec *vector; - int count; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), - count); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__libc_readv, __readv) -weak_alias (__libc_readv, readv) diff --git a/nptl/sysdeps/unix/sysv/linux/recv.S b/nptl/sysdeps/unix/sysv/linux/recv.S deleted file mode 100644 index 2f8bc3339a..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/recv.S +++ /dev/null @@ -1,5 +0,0 @@ -#define socket recv -#define __socket __libc_recv -#define NARGS 4 -#include <pt-socket.S> -weak_alias (__libc_recv, __recv) diff --git a/nptl/sysdeps/unix/sysv/linux/recvfrom.S b/nptl/sysdeps/unix/sysv/linux/recvfrom.S deleted file mode 100644 index 0b938e3bb4..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/recvfrom.S +++ /dev/null @@ -1,5 +0,0 @@ -#define socket recvfrom -#define __socket __libc_recvfrom -#define NARGS 6 -#include <pt-socket.S> -weak_alias (__libc_recvfrom, __recvfrom) diff --git a/nptl/sysdeps/unix/sysv/linux/recvmsg.S b/nptl/sysdeps/unix/sysv/linux/recvmsg.S deleted file mode 100644 index 64e44ac151..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/recvmsg.S +++ /dev/null @@ -1,5 +0,0 @@ -#define socket recvmsg -#define __socket __libc_recvmsg -#define NARGS 3 -#include <pt-socket.S> -weak_alias (__libc_recvmsg, __recvmsg) diff --git a/nptl/sysdeps/unix/sysv/linux/send.S b/nptl/sysdeps/unix/sysv/linux/send.S deleted file mode 100644 index f20c54321b..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/send.S +++ /dev/null @@ -1,6 +0,0 @@ -#define socket send -#define __socket __libc_send -#define NARGS 4 -#include <pt-socket.S> -weak_alias (__libc_send, __send) -libc_hidden_def (__send) diff --git a/nptl/sysdeps/unix/sysv/linux/sendmsg.S b/nptl/sysdeps/unix/sysv/linux/sendmsg.S deleted file mode 100644 index f83bb58331..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/sendmsg.S +++ /dev/null @@ -1,5 +0,0 @@ -#define socket sendmsg -#define __socket __libc_sendmsg -#define NARGS 3 -#include <pt-socket.S> -weak_alias (__libc_sendmsg, __sendmsg) diff --git a/nptl/sysdeps/unix/sysv/linux/sendto.S b/nptl/sysdeps/unix/sysv/linux/sendto.S deleted file mode 100644 index 10bcc6742b..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/sendto.S +++ /dev/null @@ -1,5 +0,0 @@ -#define socket sendto -#define __socket __libc_sendto -#define NARGS 6 -#include <pt-socket.S> -weak_alias (__libc_sendto, __sendto) diff --git a/nptl/sysdeps/unix/sysv/linux/sigpause.c b/nptl/sysdeps/unix/sysv/linux/sigpause.c deleted file mode 100644 index bd7756c89b..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/sigpause.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 1991,92,94-98,2000,02 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <signal.h> -#include <stddef.h> /* For NULL. */ -#include <nptl/pthreadP.h> -#include <tls.h> - -#include <sigset-cvt-mask.h> - -/* Set the mask of blocked signals to MASK, - wait for a signal to arrive, and then restore the mask. */ -int -__sigpause (int sig_or_mask, int is_sig) -{ - sigset_t set; - - if (is_sig != 0) - { - /* The modern X/Open implementation is requested. */ - if (__sigprocmask (0, NULL, &set) < 0 - /* Yes, we call `sigdelset' and not `__sigdelset'. */ - || __sigdelset (&set, sig_or_mask) < 0) - return -1; - } - else if (sigset_set_old_mask (&set, sig_or_mask) < 0) - return -1; - - return __sigsuspend (&set); -} -libc_hidden_def (__sigpause) - -/* We have to provide a default version of this function since the - standards demand it. The version which is a bit more reasonable is - the BSD version. So make this the default. */ -int -__attribute__ ((weak)) -__default_sigpause (int mask) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return __sigpause (mask, 0); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = __sigpause (mask, 0); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -#undef sigpause -weak_alias (__default_sigpause, sigpause) -strong_alias (__default_sigpause, __libc_sigpause) - - -/* We have to provide a default version of this function since the - standards demand it. The version which is a bit more reasonable is - the BSD version. So make this the default. */ -int -__attribute__ ((weak)) -__xpg_sigpause (int sig) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return __sigpause (sig, 1); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = __sigpause (sig, 1); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__xpg_sigpause, __libc___xpg_sigpause) diff --git a/nptl/sysdeps/unix/sysv/linux/sigsuspend.c b/nptl/sysdeps/unix/sysv/linux/sigsuspend.c deleted file mode 100644 index 2a7dfef49f..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/sigsuspend.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <signal.h> -#include <unistd.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t); - - -/* Change the set of blocked signals to SET, - wait until a signal arrives, and restore the set of blocked signals. */ -int -__sigsuspend (set) - const sigset_t *set; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), _NSIG / 8); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), - _NSIG / 8); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__sigsuspend) -weak_alias (__sigsuspend, sigsuspend) -strong_alias (__sigsuspend, __libc_sigsuspend) diff --git a/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c b/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c deleted file mode 100644 index 90f739c9b9..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <signal.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded, - const struct timespec *__unbounded, size_t); - - -/* Return any pending signal or wait for one for the given time. */ -int -__sigtimedwait (set, info, timeout) - const sigset_t *set; - siginfo_t *info; - const struct timespec *timeout; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - CHECK_1 (info), timeout, _NSIG / 8); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - CHECK_1 (info), timeout, _NSIG / 8); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__sigtimedwait) -weak_alias (__sigtimedwait, sigtimedwait) diff --git a/nptl/sysdeps/unix/sysv/linux/sigwait.c b/nptl/sysdeps/unix/sysv/linux/sigwait.c deleted file mode 100644 index 540ca57182..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/sigwait.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <signal.h> -#define __need_NULL -#include <stddef.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded, - const struct timespec *__unbounded, size_t); - - -/* Return any pending signal or wait for one for the given time. */ -static int -do_sigwait (const sigset_t *set, int *sig) -{ - int ret; - - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ -#ifdef INTERNAL_SYSCALL - ret = INTERNAL_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - NULL, NULL, _NSIG / 8); - if (! INTERNAL_SYSCALL_ERROR_P (ret)) - { - *sig = ret; - ret = 0; - } - else - ret = INTERNAL_SYSCALL_ERRNO (ret); -#else - ret = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - NULL, NULL, _NSIG / 8); - if (ret != -1) - { - *sig = ret; - ret = 0; - } - else - ret = errno; -#endif - - return ret; -} - - -int -__sigwait (set, sig) - const sigset_t *set; - int *sig; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return do_sigwait (set, sig); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = do_sigwait (set, sig); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__sigwait) -weak_alias (__sigwait, sigwait) -strong_alias (__sigwait, __libc_sigwait) diff --git a/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c b/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c deleted file mode 100644 index f79f4ba366..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <signal.h> -#define __need_NULL -#include <stddef.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded, - const struct timespec *__unbounded, size_t); - - -/* Return any pending signal or wait for one for the given time. */ -int -__sigwaitinfo (set, info) - const sigset_t *set; - siginfo_t *info; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - CHECK_1 (info), NULL, _NSIG / 8); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - CHECK_1 (info), NULL, _NSIG / 8); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__sigwaitinfo) -weak_alias (__sigwaitinfo, sigwaitinfo) -strong_alias (__sigwaitinfo, __libc_sigwaitinfo) diff --git a/nptl/sysdeps/unix/sysv/linux/system.c b/nptl/sysdeps/unix/sysv/linux/system.c deleted file mode 100644 index 638967e2cb..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/system.c +++ /dev/null @@ -1,209 +0,0 @@ -/* Copyright (C) 1991-99,2000,02 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <signal.h> -#include <stddef.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/wait.h> -#include <bits/libc-lock.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -#ifndef HAVE_GNU_LD -#define __environ environ -#endif - -#define SHELL_PATH "/bin/sh" /* Path of the shell. */ -#define SHELL_NAME "sh" /* Name to give it. */ - - -#ifdef _LIBC_REENTRANT -static struct sigaction intr, quit; -static int sa_refcntr; -__libc_lock_define_initialized (static, lock); - -# define DO_LOCK() __libc_lock_lock (lock) -# define DO_UNLOCK() __libc_lock_unlock (lock) -# define INIT_LOCK() ({ __libc_lock_init (lock); sa_refcntr = 0; }) -# define ADD_REF() sa_refcntr++ -# define SUB_REF() --sa_refcntr -#else -# define DO_LOCK() -# define DO_UNLOCK() -# define INIT_LOCK() -# define ADD_REF() (void) 0 -# define SUB_REF() 0 -#endif - - -/* Execute LINE as a shell command, returning its status. */ -static int -do_system (const char *line) -{ - int status, save; - pid_t pid; - struct sigaction sa; -#ifndef _LIBC_REENTRANT - struct sigaction intr, quit; -#endif -#ifndef WAITPID_CANNOT_BLOCK_SIGCHLD - sigset_t block, omask; -#endif - - sa.sa_handler = SIG_IGN; - sa.sa_flags = 0; - __sigemptyset (&sa.sa_mask); - - DO_LOCK (); - if (ADD_REF () == 0) - { - if (__sigaction (SIGINT, &sa, &intr) < 0) - { - SUB_REF (); - DO_UNLOCK (); - return -1; - } - if (__sigaction (SIGQUIT, &sa, &quit) < 0) - { - save = errno; - goto out_restore_sigint; - } - } - DO_UNLOCK (); - - __sigemptyset (&block); - __sigaddset (&block, SIGCHLD); - save = errno; - if (__sigprocmask (SIG_BLOCK, &block, &omask) < 0) - { - if (errno == ENOSYS) - __set_errno (save); - else - { - save = errno; - DO_LOCK (); - if (SUB_REF () == 0) - { - (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL); - out_restore_sigint: - (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL); - } - DO_UNLOCK (); - __set_errno (save); - return -1; - } - } - - pid = __fork (); - if (pid == (pid_t) 0) - { - /* Child side. */ - const char *new_argv[4]; - new_argv[0] = SHELL_NAME; - new_argv[1] = "-c"; - new_argv[2] = line; - new_argv[3] = NULL; - - /* Restore the signals. */ - (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL); - (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL); - (void) __sigprocmask (SIG_SETMASK, &omask, (sigset_t *) NULL); - INIT_LOCK (); - - /* Exec the shell. */ - (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ); - _exit (127); - } - else if (pid < (pid_t) 0) - /* The fork failed. */ - status = -1; - else - /* Parent side. */ - { -#ifdef NO_WAITPID - pid_t child; - do - { - child = __wait (&status); - if (child <= -1 && errno != EINTR) - { - status = -1; - break; - } - /* Note that pid cannot be <= -1 and therefore the loop continues - when __wait returned with EINTR. */ - } - while (child != pid); -#else - if (TEMP_FAILURE_RETRY (__waitpid (pid, &status, 0)) != pid) - status = -1; -#endif - } - - save = errno; - DO_LOCK (); - if ((SUB_REF () == 0 - && (__sigaction (SIGINT, &intr, (struct sigaction *) NULL) - | __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL)) != 0) - || __sigprocmask (SIG_SETMASK, &omask, (sigset_t *) NULL) != 0) - { -#ifndef _LIBC - /* glibc cannot be used on systems without waitpid. */ - if (errno == ENOSYS) - __set_errno (save); - else -#endif - status = -1; - } - DO_UNLOCK (); - - return status; -} - - -int -__libc_system (const char *line) -{ - if (line == NULL) - /* Check that we have a command processor available. It might - not be available after a chroot(), for example. */ - return do_system ("exit 0") == 0; - -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return do_system (line); - - /* XXX We have to install a cancellation handler to kill the child - process. */ - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = do_system (line); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_system, system) diff --git a/nptl/sysdeps/unix/sysv/linux/tcdrain.c b/nptl/sysdeps/unix/sysv/linux/tcdrain.c deleted file mode 100644 index df0c969d11..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/tcdrain.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <termios.h> -#include <sys/ioctl.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -/* Wait for pending output to be written on FD. */ -int -__libc_tcdrain (int fd) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - /* With an argument of 1, TCSBRK for output to be drain. */ - return __ioctl (fd, TCSBRK, 1); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - /* With an argument of 1, TCSBRK for output to be drain. */ - int result = __ioctl (fd, TCSBRK, 1); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_tcdrain, tcdrain) diff --git a/nptl/sysdeps/unix/sysv/linux/wait.c b/nptl/sysdeps/unix/sysv/linux/wait.c deleted file mode 100644 index 5846075563..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/wait.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <sys/wait.h> -#include <errno.h> -#include <sys/resource.h> -#include <stddef.h> -#include <sysdep.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -/* Wait for a child to die. When one does, put its status in *STAT_LOC - and return its process ID. For errors, return (pid_t) -1. */ -__pid_t -__libc_wait (__WAIT_STATUS_DEFN stat_loc) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0, - (struct rusage *) NULL); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0, - (struct rusage *) NULL); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} - -weak_alias (__libc_wait, __wait) -weak_alias (__libc_wait, wait) diff --git a/nptl/sysdeps/unix/sysv/linux/waitid.c b/nptl/sysdeps/unix/sysv/linux/waitid.c deleted file mode 100644 index 589f421845..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/waitid.c +++ /dev/null @@ -1,145 +0,0 @@ -/* Pseudo implementation of waitid. - Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <assert.h> -#include <errno.h> -#include <signal.h> -#define __need_NULL -#include <stddef.h> -#include <sys/wait.h> -#include <sys/types.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -static int -do_waitid (idtype_t idtype, id_t id, siginfo_t *infop, int options) -{ - pid_t pid, child; - int status; - - switch (idtype) - { - case P_PID: - if(id <= 0) - goto invalid; - pid = (pid_t) id; - break; - case P_PGID: - if (id < 0 || id == 1) - goto invalid; - pid = (pid_t) -id; - break; - case P_ALL: - pid = -1; - break; - default: - invalid: - __set_errno (EINVAL); - return -1; - } - - /* Technically we're supposed to return EFAULT if infop is bogus, - but that would involve mucking with signals, which is - too much hassle. User will have to deal with SIGSEGV/SIGBUS. - We just check for a null pointer. */ - - if (infop == NULL) - { - __set_errno (EFAULT); - return -1; - } - - child = __waitpid (pid, &status, options); - - if (child == -1) - /* `waitpid' set `errno' for us. */ - return -1; - - if (child == 0) - { - /* The WHOHANG bit in OPTIONS is set and there are children available - but none has a status for us. The XPG docs do not mention this - case so we clear the `siginfo_t' struct and return successfully. */ - infop->si_signo = 0; - infop->si_code = 0; - return 0; - } - - /* Decode the status field and set infop members... */ - infop->si_signo = SIGCHLD; - infop->si_pid = child; - infop->si_errno = 0; - - if (WIFEXITED (status)) - { - infop->si_code = CLD_EXITED; - infop->si_status = WEXITSTATUS (status); - } - else if (WIFSIGNALED (status)) - { - infop->si_code = WCOREDUMP (status) ? CLD_DUMPED : CLD_KILLED; - infop->si_status = WTERMSIG (status); - } - else if (WIFSTOPPED (status)) - { - infop->si_code = CLD_STOPPED; - infop->si_status = WSTOPSIG (status); - } -#ifdef WIFCONTINUED - else if (WIFCONTINUED (status)) - { - infop->si_code = CLD_CONTINUED; - infop->si_status = SIGCONT; - } -#endif - else - /* Can't happen. */ - assert (! "What?"); - - return 0; -} - - -int -__waitid (idtype, id, infop, options) - idtype_t idtype; - id_t id; - siginfo_t *infop; - int options; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return do_waitid (idtype, id, infop, options); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = do_waitid (idtype, id, infop, options); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__waitid, waitid) -strong_alias (__waitid, __libc_waitid) diff --git a/nptl/sysdeps/unix/sysv/linux/waitpid.c b/nptl/sysdeps/unix/sysv/linux/waitpid.c deleted file mode 100644 index ab4bd67127..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/waitpid.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 1991,92,95,96,97,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <sysdep.h> -#include <stdlib.h> -#include <sys/wait.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -__pid_t -__libc_waitpid (__pid_t pid, int *stat_loc, int options) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_waitpid, __waitpid) -libc_hidden_weak (__waitpid) -weak_alias (__libc_waitpid, waitpid) diff --git a/nptl/sysdeps/unix/sysv/linux/writev.c b/nptl/sysdeps/unix/sysv/linux/writev.c deleted file mode 100644 index d32a1749b1..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/writev.c +++ /dev/null @@ -1,58 +0,0 @@ -/* writev supports all Linux kernels >= 2.0. - Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <stddef.h> -#include <sys/param.h> -#include <sys/uio.h> - -#include <sysdep.h> -#include <sys/syscall.h> -#include <bp-checks.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -extern ssize_t __syscall_writev (int, const struct iovec *__unbounded, int); - - -ssize_t -__libc_writev (fd, vector, count) - int fd; - const struct iovec *vector; - int count; -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), - count); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__libc_writev, __writev) -weak_alias (__libc_writev, writev) |