diff options
author | Roland McGrath <roland@gnu.org> | 1995-03-06 00:27:08 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1995-03-06 00:27:08 +0000 |
commit | 6408bdde65cac02ef96ae9f2b77f222b534c0e75 (patch) | |
tree | 3a10be5fdb3d11bdd95f31a2615c266d5f3e0762 | |
parent | 4933a099c29045e0615139c9a55d77862ae8ae6c (diff) | |
download | glibc-6408bdde65cac02ef96ae9f2b77f222b534c0e75.zip glibc-6408bdde65cac02ef96ae9f2b77f222b534c0e75.tar.gz glibc-6408bdde65cac02ef96ae9f2b77f222b534c0e75.tar.bz2 |
Fri Mar 3 12:24:52 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/generic/sys/mman.h (__mmap, __munmap): Declare these.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/osf1/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/stub/munmap.c (munmap): Rename to __munmap, add weak
alias munmap.
* sysdeps/unix/mman/munmap.S: Likewise.
* sysdeps/mach/munmap.c: Likewise.
* sysdeps/mach/hurd/mmap.c (mmap): Rename to __mmap, add weak
alias mmap.
* sysdeps/unix/mman/mmap.S: Likewise.
* sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise.
* sysdeps/stub/mmap.c: Likewise.
* sysdeps/unix/bsd/setsid.c: Use __getpgid instead of __getpgrp.
* sysdeps/unix/dirfd.c: #undef dirfd before function defn.
Thu Mar 2 12:15:24 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* misc/search.h: Add missing semicolon.
* sysdeps/unix/dirfd.c: Fix typo.
* sysdeps/generic/sys/mman.h (mmap): Use __off_t instead of off_t
in decl.
* stdio/vfscanf.c (%c): In no-assign case, fix loop to decrement
WIDTH before test.
-rw-r--r-- | ChangeLog | 33 | ||||
-rw-r--r-- | misc/search.h | 2 | ||||
-rw-r--r-- | stdio/vfscanf.c | 3 | ||||
-rw-r--r-- | sysdeps/generic/sys/mman.h | 7 | ||||
-rw-r--r-- | sysdeps/mach/hurd/mmap.c | 6 | ||||
-rw-r--r-- | sysdeps/mach/munmap.c | 7 | ||||
-rw-r--r-- | sysdeps/stub/mmap.c | 9 | ||||
-rw-r--r-- | sysdeps/stub/munmap.c | 7 | ||||
-rw-r--r-- | sysdeps/unix/bsd/Attic/osf1/sys/mman.h | 9 | ||||
-rw-r--r-- | sysdeps/unix/bsd/hp/m68k/vfork.S | 55 | ||||
-rw-r--r-- | sysdeps/unix/bsd/i386/vfork.S | 39 | ||||
-rw-r--r-- | sysdeps/unix/bsd/setsid.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/bsd/sun/m68k/vfork.S | 55 | ||||
-rw-r--r-- | sysdeps/unix/bsd/sun/sunos4/mmap.c | 7 | ||||
-rw-r--r-- | sysdeps/unix/bsd/sun/sunos4/sys/mman.h | 5 | ||||
-rw-r--r-- | sysdeps/unix/bsd/ultrix4/sys/mman.h | 9 | ||||
-rw-r--r-- | sysdeps/unix/bsd/vax/vfork.S | 57 | ||||
-rw-r--r-- | sysdeps/unix/dirfd.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/i386/vfork.S | 23 | ||||
-rw-r--r-- | sysdeps/unix/mman/mmap.S | 6 | ||||
-rw-r--r-- | sysdeps/unix/mman/munmap.S | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/irix4/sys/mman.h | 5 |
22 files changed, 318 insertions, 38 deletions
@@ -1,3 +1,36 @@ +Fri Mar 3 12:24:52 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> + + * sysdeps/generic/sys/mman.h (__mmap, __munmap): Declare these. + * sysdeps/unix/sysv/irix4/sys/mman.h: Likewise. + * sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise. + * sysdeps/unix/bsd/osf1/sys/mman.h: Likewise. + * sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise. + * sysdeps/stub/munmap.c (munmap): Rename to __munmap, add weak + alias munmap. + * sysdeps/unix/mman/munmap.S: Likewise. + * sysdeps/mach/munmap.c: Likewise. + * sysdeps/mach/hurd/mmap.c (mmap): Rename to __mmap, add weak + alias mmap. + * sysdeps/unix/mman/mmap.S: Likewise. + * sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise. + * sysdeps/stub/mmap.c: Likewise. + + * sysdeps/unix/bsd/setsid.c: Use __getpgid instead of __getpgrp. + + * sysdeps/unix/dirfd.c: #undef dirfd before function defn. + +Thu Mar 2 12:15:24 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> + + * misc/search.h: Add missing semicolon. + + * sysdeps/unix/dirfd.c: Fix typo. + + * sysdeps/generic/sys/mman.h (mmap): Use __off_t instead of off_t + in decl. + + * stdio/vfscanf.c (%c): In no-assign case, fix loop to decrement + WIDTH before test. + Wed Mar 1 00:57:47 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * stdlib/strtod.c: Fixes from drepper. diff --git a/misc/search.h b/misc/search.h index 2e5615d..c6d1870 100644 --- a/misc/search.h +++ b/misc/search.h @@ -41,7 +41,7 @@ struct qelem extern void insque __P ((struct qelem *__elem, struct qelem *__prev)); /* Unlink ELEM from the doubly-linked list that it is in. */ -extern void remque __P ((struct qelem *elem)) +extern void remque __P ((struct qelem *elem)); __END_DECLS diff --git a/stdio/vfscanf.c b/stdio/vfscanf.c index 681e898..10baa94 100644 --- a/stdio/vfscanf.c +++ b/stdio/vfscanf.c @@ -231,8 +231,7 @@ DEFUN(__vfscanf, (s, format, arg), while (inchar() != EOF && --width > 0); } else - while (inchar() != EOF && width > 0) - --width; + while (inchar() != EOF && --width > 0); if (do_assign) ++done; diff --git a/sysdeps/generic/sys/mman.h b/sysdeps/generic/sys/mman.h index 3575eeb..e9d69ec 100644 --- a/sysdeps/generic/sys/mman.h +++ b/sysdeps/generic/sys/mman.h @@ -1,5 +1,5 @@ /* Definitions for BSD-style memory management. Generic/4.4 BSD version. -Copyright (C) 1994 Free Software Foundation, Inc. +Copyright (C) 1994, 1995 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 @@ -79,11 +79,14 @@ __BEGIN_DECLS for errors (in which case `errno' is set). A successful `mmap' call deallocates any previous mapping for the affected region. */ +__caddr_t __mmap __P ((__caddr_t __addr, size_t __len, + int __prot, int __flags, int __fd, __off_t __offset)); __caddr_t mmap __P ((__caddr_t __addr, size_t __len, - int __prot, int __flags, int __fd, off_t __offset)); + int __prot, int __flags, int __fd, __off_t __offset)); /* Deallocate any mapping for the region starting at ADDR and extending LEN bytes. Returns 0 if successful, -1 for errors (and sets errno). */ +int __munmap __P ((__caddr_t __addr, size_t __len)); int munmap __P ((__caddr_t __addr, size_t __len)); /* Change the memory protection of the region starting at ADDR and diff --git a/sysdeps/mach/hurd/mmap.c b/sysdeps/mach/hurd/mmap.c index e682225..0fb1a08 100644 --- a/sysdeps/mach/hurd/mmap.c +++ b/sysdeps/mach/hurd/mmap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995 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 @@ -32,7 +32,7 @@ Cambridge, MA 02139, USA. */ deallocates any previous mapping for the affected region. */ caddr_t -mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) { error_t err; vm_prot_t vmprot; @@ -102,4 +102,6 @@ mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) return err ? (caddr_t) (long int) __hurd_fail (err) : (caddr_t) mapaddr; } + +weak_alias (__mmap, mmap) diff --git a/sysdeps/mach/munmap.c b/sysdeps/mach/munmap.c index 5ca11298..29270bb 100644 --- a/sysdeps/mach/munmap.c +++ b/sysdeps/mach/munmap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995 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 @@ -25,7 +25,7 @@ Cambridge, MA 02139, USA. */ bytes. Returns 0 if successful, -1 for errors (and sets errno). */ int -munmap (caddr_t addr, size_t len) +__munmap (caddr_t addr, size_t len) { kern_return_t err; if (err = __vm_deallocate (__mach_task_self (), @@ -36,4 +36,5 @@ munmap (caddr_t addr, size_t len) } return 0; } - + +weak_alias (__munmap, munmap) diff --git a/sysdeps/stub/mmap.c b/sysdeps/stub/mmap.c index 5ee4fa7..e230c9d 100644 --- a/sysdeps/stub/mmap.c +++ b/sysdeps/stub/mmap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995 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 @@ -20,7 +20,7 @@ Cambridge, MA 02139, USA. */ #include <sys/mman.h> #include <errno.h> -/* Map addresses starting near ADDR and extending for LEN bytes. from +/* Map addresses starting near ADDR and extending for LEN bytes. From OFFSET into the file FD describes according to PROT and FLAGS. If ADDR is nonzero, it is the desired mapping address. If the MAP_FIXED bit is set in FLAGS, the mapping will be at ADDR exactly (which must be @@ -30,9 +30,10 @@ Cambridge, MA 02139, USA. */ deallocates any previous mapping for the affected region. */ caddr_t -mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) { errno = ENOSYS; return (caddr_t) -1; } - + +weak_alias (__mmap, mmap) diff --git a/sysdeps/stub/munmap.c b/sysdeps/stub/munmap.c index c12889a..ba61e0f 100644 --- a/sysdeps/stub/munmap.c +++ b/sysdeps/stub/munmap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995 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 @@ -24,9 +24,10 @@ Cambridge, MA 02139, USA. */ bytes. Returns 0 if successful, -1 for errors (and sets errno). */ int -munmap (caddr_t addr, size_t len) +__munmap (caddr_t addr, size_t len) { errno = ENOSYS; return -1; } - + +weak_alias (__munmap, munmap) diff --git a/sysdeps/unix/bsd/Attic/osf1/sys/mman.h b/sysdeps/unix/bsd/Attic/osf1/sys/mman.h index 6ac25f4..397ad28 100644 --- a/sysdeps/unix/bsd/Attic/osf1/sys/mman.h +++ b/sysdeps/unix/bsd/Attic/osf1/sys/mman.h @@ -1,5 +1,5 @@ /* Definitions for BSD-style memory management. OSF/1 version. -Copyright (C) 1994 Free Software Foundation, Inc. +Copyright (C) 1994, 1995 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 @@ -17,10 +17,6 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* These are the bits used by 4.4 BSD and its derivatives. On systems - (such as GNU) where these facilities are not system services but can be - emulated in the C library, these are the definitions we emulate. */ - #ifndef _SYS_MMAN_H #define _SYS_MMAN_H 1 @@ -87,11 +83,14 @@ __BEGIN_DECLS for errors (in which case `errno' is set). A successful `mmap' call deallocates any previous mapping for the affected region. */ +__caddr_t __mmap __P ((__caddr_t __addr, size_t __len, + int __prot, int __flags, int __fd, off_t __offset)); __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot, int __flags, int __fd, off_t __offset)); /* Deallocate any mapping for the region starting at ADDR and extending LEN bytes. Returns 0 if successful, -1 for errors (and sets errno). */ +int __munmap __P ((__caddr_t __addr, size_t __len)); int munmap __P ((__caddr_t __addr, size_t __len)); /* Change the memory protection of the region starting at ADDR and diff --git a/sysdeps/unix/bsd/hp/m68k/vfork.S b/sysdeps/unix/bsd/hp/m68k/vfork.S new file mode 100644 index 0000000..b70c122 --- /dev/null +++ b/sysdeps/unix/bsd/hp/m68k/vfork.S @@ -0,0 +1,55 @@ +/* Copyright (C) 1991, 1994, 1995 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 Library General Public License as +published by the Free Software Foundation; either version 2 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sysdep.h> + +#ifndef SYS_vfork +#define SYS_vfork 66 +#endif + +/* Clone the calling process, but without copying the whole address space. + The the calling process is suspended until the the new process exits or is + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, + and the process ID of the new process to the old process. */ +.globl ___vfork +___vfork: + /* Pop the return PC value into A0. */ + moveal sp@+, a0 + + /* Stuff the syscall number in D0 and trap into the kernel. */ + movel #SYS_vfork, d0 + trap #0 + bcs error /* Branch forward if it failed. */ + + /* It succeeded. See which fork we're in. D1 is now 0 for the + parent and 1 for the child. Decrement it to make it -1 (all + bits set) for the parent, and 0 (no bits set) for the child. + Then AND it with D0, so the parent gets D0&-1==R0, and the child + gets D0&0==0. */ + subl #1, d1 + andl d1, d0 + + /* Jump to the return PC. */ + jmp a0@ + +error: + movel d0, _errno + moveq #-1, d0 + jmp a0@ + +weak_alias (__vfork, vfork) diff --git a/sysdeps/unix/bsd/i386/vfork.S b/sysdeps/unix/bsd/i386/vfork.S new file mode 100644 index 0000000..af7f907 --- /dev/null +++ b/sysdeps/unix/bsd/i386/vfork.S @@ -0,0 +1,39 @@ +/* Copyright (C) 1993, 1994, 1995 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 Library General Public License as +published by the Free Software Foundation; either version 2 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sysdep.h> + +/* Since vfork shares the address space between the parent and child, + we must take care to avoid the child unwinding the stack frame and + clobbering it for the parent. */ + +.text +ENTRY (__vfork) + popl scratch /* Save the return PC in a register. */ + DO_CALL (vfork, 0) /* Do the system call. */ + pushl scratch /* Put the return PC back on the stack. */ + jb syscall_error /* Branch if error. */ + /* R1 is now 0 for the parent and 1 for the child. Decrement it to + make it -1 (all bits set) for the parent, and 0 (no bits set) + for the child. Then AND it with R0, so the parent gets + R0&-1==R0, and the child gets R0&0==0. */ + decl r1 + andl r1, r0 + ret + +weak_alias (__vfork, vfork) diff --git a/sysdeps/unix/bsd/setsid.c b/sysdeps/unix/bsd/setsid.c index 5959410..e057694 100644 --- a/sysdeps/unix/bsd/setsid.c +++ b/sysdeps/unix/bsd/setsid.c @@ -33,7 +33,7 @@ DEFUN_VOID(__setsid) int tty; int save = errno; - if (__getpgrp (pid) == pid) + if (__getpgid (pid) == pid) { /* Already the leader. */ errno = EPERM; diff --git a/sysdeps/unix/bsd/sun/m68k/vfork.S b/sysdeps/unix/bsd/sun/m68k/vfork.S new file mode 100644 index 0000000..cb7dae8 --- /dev/null +++ b/sysdeps/unix/bsd/sun/m68k/vfork.S @@ -0,0 +1,55 @@ +/* Copyright (C) 1991, 1992, 1993, 1994, 1995 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 Library General Public License as +published by the Free Software Foundation; either version 2 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sysdep.h> + +#ifndef SYS_vfork +#define SYS_vfork 66 +#endif + +/* Clone the calling process, but without copying the whole address space. + The the calling process is suspended until the the new process exits or is + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, + and the process ID of the new process to the old process. */ +.globl ___vfork +___vfork: + /* Pop the return PC value into A0. */ + movel sp@+, a0 + + /* Push the syscall number and trap into the kernel. */ + movel #SYS_vfork, sp@- + trap #0 + bcs error /* Branch forward if it failed. */ + + /* It succeeded. See which fork we're in. D1 is now 0 for the + parent and 1 for the child. Decrement it to make it -1 (all + bits set) for the parent, and 0 (no bits set) for the child. + Then AND it with D0, so the parent gets D0&-1==R0, and the child + gets D0&0==0. */ + decl d1 + andl d1, d0 + + /* Jump to the return PC. */ + jmp a0@ + +error: + movel d0, _errno + moveq #-1, d0 + jmp a0@ + +weak_alias (__vfork, vfork) diff --git a/sysdeps/unix/bsd/sun/sunos4/mmap.c b/sysdeps/unix/bsd/sun/sunos4/mmap.c index 4dfc1ca..b719373 100644 --- a/sysdeps/unix/bsd/sun/sunos4/mmap.c +++ b/sysdeps/unix/bsd/sun/sunos4/mmap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995 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 @@ -34,8 +34,9 @@ extern caddr_t __mmap_syscall (caddr_t addr, size_t len, caddr_t -mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) { return __mmap_syscall (addr, len, prot, flags | _MAP_NEW, fd, offset); } - + +weak_alias (__mmap, mmap) diff --git a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h index 727e665..10f31a8 100644 --- a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h +++ b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h @@ -1,5 +1,5 @@ /* Definitions for BSD-style memory management. SunOS 4 version. -Copyright (C) 1994 Free Software Foundation, Inc. +Copyright (C) 1994, 1995 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 @@ -80,11 +80,14 @@ __BEGIN_DECLS for errors (in which case `errno' is set). A successful `mmap' call deallocates any previous mapping for the affected region. */ +__caddr_t __mmap __P ((__caddr_t __addr, size_t __len, + int __prot, int __flags, int __fd, __off_t __offset)); __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot, int __flags, int __fd, __off_t __offset)); /* Deallocate any mapping for the region starting at ADDR and extending LEN bytes. Returns 0 if successful, -1 for errors (and sets errno). */ +int __munmap __P ((__caddr_t __addr, size_t __len)); int munmap __P ((__caddr_t __addr, size_t __len)); /* Change the memory protection of the region starting at ADDR and diff --git a/sysdeps/unix/bsd/ultrix4/sys/mman.h b/sysdeps/unix/bsd/ultrix4/sys/mman.h index c850b4f..d49da02 100644 --- a/sysdeps/unix/bsd/ultrix4/sys/mman.h +++ b/sysdeps/unix/bsd/ultrix4/sys/mman.h @@ -1,5 +1,5 @@ /* Definitions for BSD-style memory management. Ultrix 4 version. -Copyright (C) 1994 Free Software Foundation, Inc. +Copyright (C) 1994, 1995 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 @@ -17,10 +17,6 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* These are the bits used by 4.4 BSD and its derivatives. On systems - (such as GNU) where these facilities are not system services but can be - emulated in the C library, these are the definitions we emulate. */ - #ifndef _SYS_MMAN_H #define _SYS_MMAN_H 1 @@ -70,11 +66,14 @@ __BEGIN_DECLS for errors (in which case `errno' is set). A successful `mmap' call deallocates any previous mapping for the affected region. */ +__caddr_t __mmap __P ((__caddr_t __addr, size_t __len, + int __prot, int __flags, int __fd, off_t __offset)); __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot, int __flags, int __fd, off_t __offset)); /* Deallocate any mapping for the region starting at ADDR and extending LEN bytes. Returns 0 if successful, -1 for errors (and sets errno). */ +int __munmap __P ((__caddr_t __addr, size_t __len)); int munmap __P ((__caddr_t __addr, size_t __len)); /* Change the memory protection of the region starting at ADDR and diff --git a/sysdeps/unix/bsd/vax/vfork.S b/sysdeps/unix/bsd/vax/vfork.S new file mode 100644 index 0000000..daf8f0f --- /dev/null +++ b/sysdeps/unix/bsd/vax/vfork.S @@ -0,0 +1,57 @@ +/* Copyright (C) 1991, 1992, 1995 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 Library General Public License as +published by the Free Software Foundation; either version 2 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sysdep.h> + +#ifndef SYS_vfork +#define SYS_vfork 66 +#endif + +/* Clone the calling process, but without copying the whole address space. + The the calling process is suspended until the the new process exits or is + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, + and the process ID of the new process to the old process. */ +.globl ___vfork +error: jmp syscall_error +___vfork: + .word 0 + /* Save our return address in R2, and return to code below. */ + movl 16(fp), r2 + movab unwind, 16(fp) + ret +unwind: + /* Do the system call. */ + chmk $SYS_vfork + bcs error + + tstl r1 + beq parent + + /* We are the child. Return zero. */ + clrl r0 + + /* Return to the saved address. */ +parent: jmp (r2) + +.globl _errno +error: + movl r0, _errno + mnegl $1, r0 + jmp (r2) + +weak_alias (__vfork, vfork) diff --git a/sysdeps/unix/dirfd.c b/sysdeps/unix/dirfd.c index 6b6f980..7733634 100644 --- a/sysdeps/unix/dirfd.c +++ b/sysdeps/unix/dirfd.c @@ -20,9 +20,11 @@ Cambridge, MA 02139, USA. */ #include <dirent.h> #include <dirstream.h> +#undef dirfd + int dirfd (dirp) - FILE *dirp; + DIR *dirp; { return dirp->__fd; } diff --git a/sysdeps/unix/i386/vfork.S b/sysdeps/unix/i386/vfork.S new file mode 100644 index 0000000..8ad6ffd --- /dev/null +++ b/sysdeps/unix/i386/vfork.S @@ -0,0 +1,23 @@ +/* Copyright (C) 1994 Free Software Foundation, Inc. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <sysdep.h> + +/* Go directly into __vfork, don't do anything with the stack ptr. */ + +ENTRY(vfork) + jmp __vfork diff --git a/sysdeps/unix/mman/mmap.S b/sysdeps/unix/mman/mmap.S index dd60f43..9a9f1cd 100644 --- a/sysdeps/unix/mman/mmap.S +++ b/sysdeps/unix/mman/mmap.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995 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 @@ -18,5 +18,7 @@ Cambridge, MA 02139, USA. */ #include <sysdep.h> -SYSCALL (mmap, 5) +SYSCALL__ (mmap, 5) ret + +weak_alias (__mmap, mmap) diff --git a/sysdeps/unix/mman/munmap.S b/sysdeps/unix/mman/munmap.S index 6b1ae16..3742a6d 100644 --- a/sysdeps/unix/mman/munmap.S +++ b/sysdeps/unix/mman/munmap.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995 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 @@ -18,5 +18,7 @@ Cambridge, MA 02139, USA. */ #include <sysdep.h> -SYSCALL (munmap, 2) +SYSCALL__ (munmap, 2) ret + +weak_alias (__munmap, munmap) diff --git a/sysdeps/unix/sysv/irix4/sys/mman.h b/sysdeps/unix/sysv/irix4/sys/mman.h index ac50aab..543ce55 100644 --- a/sysdeps/unix/sysv/irix4/sys/mman.h +++ b/sysdeps/unix/sysv/irix4/sys/mman.h @@ -1,5 +1,5 @@ /* Definitions for BSD-style memory management. Irix 4 version. -Copyright (C) 1994 Free Software Foundation, Inc. +Copyright (C) 1994, 1995 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 @@ -74,11 +74,14 @@ __BEGIN_DECLS for errors (in which case `errno' is set). A successful `mmap' call deallocates any previous mapping for the affected region. */ +__caddr_t __mmap __P ((__caddr_t __addr, size_t __len, + int __prot, int __flags, int __fd, __off_t __offset)); __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot, int __flags, int __fd, __off_t __offset)); /* Deallocate any mapping for the region starting at ADDR and extending LEN bytes. Returns 0 if successful, -1 for errors (and sets errno). */ +int __munmap __P ((__caddr_t __addr, size_t __len)); int munmap __P ((__caddr_t __addr, size_t __len)); /* Change the memory protection of the region starting at ADDR and |