diff options
author | dt <dt@FreeBSD.org> | 1998-09-12 22:03:20 +0000 |
---|---|---|
committer | dt <dt@FreeBSD.org> | 1998-09-12 22:03:20 +0000 |
commit | 613a2bdfdecf9393b99b2c5db227a51a940e746b (patch) | |
tree | 3f061a428b7f6ca96bf141b620aae2439a24bfab /lib/libc | |
parent | 9aee196299648c93b416ff7774bda3da6934d78d (diff) | |
download | FreeBSD-src-613a2bdfdecf9393b99b2c5db227a51a940e746b.zip FreeBSD-src-613a2bdfdecf9393b99b2c5db227a51a940e746b.tar.gz |
In libc_r, rename vfork syscall to _thread_sys_vfork and make vfork an alias
to fork. It is difficult to do real vfork in libc_r, since almost every
operation with file descriptsor changes _thread_fd_table and friends.
popen(3) works much better with this change.
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/alpha/sys/Ovfork.S | 4 | ||||
-rw-r--r-- | lib/libc/amd64/sys/vfork.S | 8 | ||||
-rw-r--r-- | lib/libc/i386/sys/Ovfork.S | 8 |
3 files changed, 14 insertions, 6 deletions
diff --git a/lib/libc/alpha/sys/Ovfork.S b/lib/libc/alpha/sys/Ovfork.S index aaec3bf..d8dd3e8 100644 --- a/lib/libc/alpha/sys/Ovfork.S +++ b/lib/libc/alpha/sys/Ovfork.S @@ -29,7 +29,7 @@ #include "SYS.h" -SYSCALL(vfork) +PSYSCALL(vfork) cmovne a4, zero, v0 /* a4 (rv[1]) != 0, child */ RET -END(vfork) +PEND(vfork) diff --git a/lib/libc/amd64/sys/vfork.S b/lib/libc/amd64/sys/vfork.S index 1da2673..90ef30e 100644 --- a/lib/libc/amd64/sys/vfork.S +++ b/lib/libc/amd64/sys/vfork.S @@ -33,12 +33,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: Ovfork.S,v 1.6 1997/02/22 14:59:28 peter Exp $ + * $Id: Ovfork.S,v 1.7 1998/05/05 22:07:02 jb Exp $ */ #if defined(SYSLIBC_RCS) && !defined(lint) .text - .asciz "$Id: Ovfork.S,v 1.6 1997/02/22 14:59:28 peter Exp $" + .asciz "$Id: Ovfork.S,v 1.7 1998/05/05 22:07:02 jb Exp $" #endif /* SYSLIBC_RCS and not lint */ #include "DEFS.h" @@ -52,7 +52,11 @@ * */ +#ifdef _THREAD_SAFE +ENTRY(_thread_sys_vfork) +#else ENTRY(vfork) +#endif popl %ecx /* my rta into ecx */ lea SYS_vfork,%eax KERNCALL diff --git a/lib/libc/i386/sys/Ovfork.S b/lib/libc/i386/sys/Ovfork.S index 1da2673..90ef30e 100644 --- a/lib/libc/i386/sys/Ovfork.S +++ b/lib/libc/i386/sys/Ovfork.S @@ -33,12 +33,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: Ovfork.S,v 1.6 1997/02/22 14:59:28 peter Exp $ + * $Id: Ovfork.S,v 1.7 1998/05/05 22:07:02 jb Exp $ */ #if defined(SYSLIBC_RCS) && !defined(lint) .text - .asciz "$Id: Ovfork.S,v 1.6 1997/02/22 14:59:28 peter Exp $" + .asciz "$Id: Ovfork.S,v 1.7 1998/05/05 22:07:02 jb Exp $" #endif /* SYSLIBC_RCS and not lint */ #include "DEFS.h" @@ -52,7 +52,11 @@ * */ +#ifdef _THREAD_SAFE +ENTRY(_thread_sys_vfork) +#else ENTRY(vfork) +#endif popl %ecx /* my rta into ecx */ lea SYS_vfork,%eax KERNCALL |