diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-12-15 01:00:22 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-12-15 01:00:22 +0000 |
commit | 86b2dc4072725edb69ec4b872f9fcd17a4554b74 (patch) | |
tree | fcc7abb285572b9e539af7b4c324806a0364daf2 /nptl/sysdeps | |
parent | 9d263d72848fb561e104a21da3ffccf791078f2a (diff) | |
download | glibc-86b2dc4072725edb69ec4b872f9fcd17a4554b74.tar glibc-86b2dc4072725edb69ec4b872f9fcd17a4554b74.tar.gz glibc-86b2dc4072725edb69ec4b872f9fcd17a4554b74.tar.bz2 glibc-86b2dc4072725edb69ec4b872f9fcd17a4554b74.zip |
Update.
* sysdeps/generic/sysdep-cancel.h: New file.
* sysdeps/unix/make-syscalls.sh: Handle C at start of args as
cancelable syscall.
* sysdeps/unix/inet/syscalls.list (accept, connect, recv, recvfrom,
recvmsg, send, sendmsg, sendto): Make cancelable.
* sysdeps/unix/mman/syscalls.list (msync): Likewise.
* sysdeps/unix/sysv/linux/alpha/syscalls.list (llseek, pread,
pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
sendto, osf_select): Likewise.
* sysdeps/unix/sysv/linux/hppa/syscalls.list (accept, connect, recv,
recvfrom, recvmsg, send, sendmsg, sendto): Likewise.
* sysdeps/unix/sysv/linux/ia64/syscalls.list (llseek, pread,
pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
sendto): Likewise.
* sysdeps/unix/sysv/linux/mips/syscalls.list (accept, connect, recv,
recvfrom, recvmsg, send, sendmsg, sendto): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (llseek, pread,
pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
sendto): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (llseek, pread,
pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
sendto, select): Likewise.
* sysdeps/unix/sysv/linux/x86_64/syscalls.list (llseek, pread,
pwrite, accept, connect, recvfrom, recvmsg, sendmsg, sendto):
Likewise.
* sysdeps/unix/sysv/linux/syscalls.list (creat, nanosleep, pause,
select, fcntl): Likewise.
* sysdeps/unix/sysv/syscalls.list (pause, poll): Likewise.
* sysdeps/unix/syscalls.list (close, fcntl, fsync, lseek, open,
read, readv, select, sigsuspend, write, writev): Likewise.
2002-12-14 Jakub Jelinek <jakub@redhat.com>
Diffstat (limited to 'nptl/sysdeps')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/close.c | 49 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/creat.c | 57 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/fsync.c | 47 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h | 70 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/lseek.c | 48 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/msync.c | 47 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/nanosleep.c | 48 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/open.c | 62 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/pause.c | 47 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/read.c | 50 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/select.c | 57 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/write.c | 50 |
12 files changed, 70 insertions, 562 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/close.c b/nptl/sysdeps/unix/sysv/linux/close.c deleted file mode 100644 index e5cac953f3..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/close.c +++ /dev/null @@ -1,49 +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 <stdlib.h> -#include <sysdep.h> -#include <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -int -__libc_close (int fd) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (close, 1, fd); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (close, 1, fd); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__libc_close, __close) -libc_hidden_weak (__close) -weak_alias (__libc_close, close) diff --git a/nptl/sysdeps/unix/sysv/linux/creat.c b/nptl/sysdeps/unix/sysv/linux/creat.c deleted file mode 100644 index c21c8bb9a4..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/creat.c +++ /dev/null @@ -1,57 +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 <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -int -creat (const char *pathname, mode_t mode) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - { -#ifdef __NR_creat - return INLINE_SYSCALL (creat, 2, pathname, mode); -#else - return __libc_open (pathname, O_WRONLY|O_CREAT|O_TRUNC, mode); -#endif - } - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - -#ifdef __NR_creat - int result = INLINE_SYSCALL (creat, 2, pathname, mode); -#else - int result = __libc_open (pathname, O_WRONLY|O_CREAT|O_TRUNC, mode); -#endif - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} diff --git a/nptl/sysdeps/unix/sysv/linux/fsync.c b/nptl/sysdeps/unix/sysv/linux/fsync.c deleted file mode 100644 index b132a75ee9..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/fsync.c +++ /dev/null @@ -1,47 +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 <stdlib.h> -#include <sysdep.h> -#include <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -int -__libc_fsync (int fd) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (fsync, 1, fd); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (fsync, 1, fd); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_fsync, fsync) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h new file mode 100644 index 0000000000..ed9f9420e7 --- /dev/null +++ b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h @@ -0,0 +1,70 @@ +/* Copyright (C) 2002 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@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 <sysdep.h> +#include <tls.h> + +#if !defined NOT_IN_libc || defined IS_IN_libpthread + +#undef PSEUDO +#define PSEUDO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + cmpl $0, %gs:MULTIPLE_THREADS_OFFSET; \ + jne L(pseudo_cancel); \ + DO_CALL (syscall_name, args); \ + cmpl $-4095, %eax; \ + jae SYSCALL_ERROR_LABEL; \ + ret; \ + L(pseudo_cancel): \ + call __libc_enable_asynccancel; \ + SAVE_OLDTYPE_##args \ + PUSHARGS_##args \ + DOCARGS_##args \ + movl $SYS_ify (syscall_name), %eax; \ + int $0x80 \ + POPARGS_##args; \ + POPCARGS_##args \ + cmpl $-4095, %eax; \ + jae SYSCALL_ERROR_LABEL; \ + L(pseudo_end): + +#define SAVE_OLDTYPE_0 movl %eax, %ecx; +#define SAVE_OLDTYPE_1 SAVE_OLDTYPE_0 +#define SAVE_OLDTYPE_2 pushl %eax; +#define SAVE_OLDTYPE_3 SAVE_OLDTYPE_2 +#define SAVE_OLDTYPE_4 SAVE_OLDTYPE_2 +#define SAVE_OLDTYPE_5 SAVE_OLDTYPE_2 + +#define DOCARGS_0 DOARGS_0 +#define DOCARGS_1 DOARGS_1 +#define DOCARGS_2 _DOARGS_2 (12) +#define DOCARGS_3 _DOARGS_3 (20) +#define DOCARGS_4 _DOARGS_4 (28) +#define DOCARGS_5 _DOARGS_5 (36) + +#define DISABLE call __libc_disable_asynccancel +#define POPCARGS_0 pushl %eax; movl %ecx, %eax; DISABLE; popl %eax; +#define POPCARGS_1 POPCARGS_0 +#define POPCARGS_2 xchgl (%esp), %eax; DISABLE; popl %eax; +#define POPCARGS_3 POPCARGS_2 +#define POPCARGS_4 POPCARGS_2 +#define POPCARGS_5 POPCARGS_2 + +#endif diff --git a/nptl/sysdeps/unix/sysv/linux/lseek.c b/nptl/sysdeps/unix/sysv/linux/lseek.c deleted file mode 100644 index 5229216122..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/lseek.c +++ /dev/null @@ -1,48 +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 <stdlib.h> -#include <sysdep.h> -#include <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -off_t -__libc_lseek (int fd, off_t offset, int whence) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (lseek, 3, fd, offset, whence); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - off_t result = INLINE_SYSCALL (lseek, 3, fd, offset, whence); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__libc_lseek, __lseek) -weak_alias (__libc_lseek, lseek) diff --git a/nptl/sysdeps/unix/sysv/linux/msync.c b/nptl/sysdeps/unix/sysv/linux/msync.c deleted file mode 100644 index 9edd56c024..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/msync.c +++ /dev/null @@ -1,47 +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 <stdlib.h> -#include <sysdep.h> -#include <sys/mman.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -int -__libc_msync (void *start, size_t length, int flags) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (msync, 3, start, length, flags); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (msync, 3, start, length, flags); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_msync, msync) diff --git a/nptl/sysdeps/unix/sysv/linux/nanosleep.c b/nptl/sysdeps/unix/sysv/linux/nanosleep.c deleted file mode 100644 index d43f9eb9da..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/nanosleep.c +++ /dev/null @@ -1,48 +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 <stdlib.h> -#include <sysdep.h> -#include <time.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -int -__libc_nanosleep (const struct timespec *req, struct timespec *rem) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (nanosleep, 2, req, rem); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (nanosleep, 2, req, rem); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__libc_nanosleep, __nanosleep) -weak_alias (__libc_nanosleep, nanosleep) diff --git a/nptl/sysdeps/unix/sysv/linux/open.c b/nptl/sysdeps/unix/sysv/linux/open.c deleted file mode 100644 index f0f95c1b60..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/open.c +++ /dev/null @@ -1,62 +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_open (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, mode); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (open, 3, file, oflag, mode); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__libc_open) -strong_alias (__libc_open, __open) -libc_hidden_weak (__open) -weak_alias (__libc_open, open) diff --git a/nptl/sysdeps/unix/sysv/linux/pause.c b/nptl/sysdeps/unix/sysv/linux/pause.c deleted file mode 100644 index 6348974031..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/pause.c +++ /dev/null @@ -1,47 +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 <stdlib.h> -#include <sysdep.h> -#include <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -int -__libc_pause (void) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (pause, 0); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (pause, 0); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -weak_alias (__libc_pause, pause) diff --git a/nptl/sysdeps/unix/sysv/linux/read.c b/nptl/sysdeps/unix/sysv/linux/read.c deleted file mode 100644 index ea04002023..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/read.c +++ /dev/null @@ -1,50 +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 <stdlib.h> -#include <sysdep.h> -#include <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -ssize_t -__libc_read (int fd, void *buf, size_t count) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (read, 3, fd, buf, count); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (read, 3, fd, buf, count); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__libc_read) -strong_alias (__libc_read, __read) -libc_hidden_weak (__read) -weak_alias (__libc_read, read) diff --git a/nptl/sysdeps/unix/sysv/linux/select.c b/nptl/sysdeps/unix/sysv/linux/select.c deleted file mode 100644 index b1c46595be..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/select.c +++ /dev/null @@ -1,57 +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 <stdlib.h> -#include <sysdep.h> -#include <sys/select.h> -#include <nptl/pthreadP.h> -#include <tls.h> - -#ifdef __NR__newselect -# undef __NR_select -# define __NR_select __NR__newselect -#endif - - -int -__libc_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - struct timeval *timeout) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (select, 5, n, readfds, writefds, exceptfds, - timeout); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - int result = INLINE_SYSCALL (select, 5, n, readfds, writefds, exceptfds, - timeout); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -strong_alias (__libc_select, __select) -libc_hidden_weak(__select) -weak_alias (__libc_select, select) diff --git a/nptl/sysdeps/unix/sysv/linux/write.c b/nptl/sysdeps/unix/sysv/linux/write.c deleted file mode 100644 index ea9b60c979..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/write.c +++ /dev/null @@ -1,50 +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 <stdlib.h> -#include <sysdep.h> -#include <unistd.h> -#include <nptl/pthreadP.h> -#include <tls.h> - - -ssize_t -__libc_write (int fd, const void *buf, size_t count) -{ -#ifndef NOT_IN_libc - if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, - header.data.multiple_threads) == 0, 1)) - return INLINE_SYSCALL (write, 3, fd, buf, count); - - int oldtype = LIBC_CANCEL_ASYNC (); -#endif - - ssize_t result = INLINE_SYSCALL (write, 3, fd, buf, count); - -#ifndef NOT_IN_libc - LIBC_CANCEL_RESET (oldtype); -#endif - - return result; -} -libc_hidden_def (__libc_write) -strong_alias (__libc_write, __write) -libc_hidden_weak (__write) -weak_alias (__libc_write, write) |