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 | |
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.
-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 | ||||
-rw-r--r-- | lib/libc_r/uthread/Makefile.inc | 3 | ||||
-rw-r--r-- | lib/libc_r/uthread/uthread_vfork.c | 9 | ||||
-rw-r--r-- | lib/libkse/thread/Makefile.inc | 3 | ||||
-rw-r--r-- | lib/libkse/thread/thr_vfork.c | 9 | ||||
-rw-r--r-- | lib/libpthread/thread/Makefile.inc | 3 | ||||
-rw-r--r-- | lib/libpthread/thread/thr_vfork.c | 9 |
9 files changed, 47 insertions, 9 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 diff --git a/lib/libc_r/uthread/Makefile.inc b/lib/libc_r/uthread/Makefile.inc index 4fd3034..0c5c582 100644 --- a/lib/libc_r/uthread/Makefile.inc +++ b/lib/libc_r/uthread/Makefile.inc @@ -1,4 +1,4 @@ -# $Id: Makefile.inc,v 1.13 1998/06/01 02:14:34 jb Exp $ +# $Id: Makefile.inc,v 1.14 1998/09/07 19:01:43 alex Exp $ # uthread sources .PATH: ${.CURDIR}/uthread @@ -91,6 +91,7 @@ SRCS+= \ uthread_spec.c \ uthread_spinlock.c \ uthread_suspend_np.c \ + uthread_vfork.c \ uthread_wait4.c \ uthread_write.c \ uthread_writev.c \ diff --git a/lib/libc_r/uthread/uthread_vfork.c b/lib/libc_r/uthread/uthread_vfork.c new file mode 100644 index 0000000..bbfcf00 --- /dev/null +++ b/lib/libc_r/uthread/uthread_vfork.c @@ -0,0 +1,9 @@ +#include <unistd.h> +#ifdef _THREAD_SAFE + +int +vfork(void) +{ + return (fork()); +} +#endif diff --git a/lib/libkse/thread/Makefile.inc b/lib/libkse/thread/Makefile.inc index 4fd3034..0c5c582 100644 --- a/lib/libkse/thread/Makefile.inc +++ b/lib/libkse/thread/Makefile.inc @@ -1,4 +1,4 @@ -# $Id: Makefile.inc,v 1.13 1998/06/01 02:14:34 jb Exp $ +# $Id: Makefile.inc,v 1.14 1998/09/07 19:01:43 alex Exp $ # uthread sources .PATH: ${.CURDIR}/uthread @@ -91,6 +91,7 @@ SRCS+= \ uthread_spec.c \ uthread_spinlock.c \ uthread_suspend_np.c \ + uthread_vfork.c \ uthread_wait4.c \ uthread_write.c \ uthread_writev.c \ diff --git a/lib/libkse/thread/thr_vfork.c b/lib/libkse/thread/thr_vfork.c new file mode 100644 index 0000000..bbfcf00 --- /dev/null +++ b/lib/libkse/thread/thr_vfork.c @@ -0,0 +1,9 @@ +#include <unistd.h> +#ifdef _THREAD_SAFE + +int +vfork(void) +{ + return (fork()); +} +#endif diff --git a/lib/libpthread/thread/Makefile.inc b/lib/libpthread/thread/Makefile.inc index 4fd3034..0c5c582 100644 --- a/lib/libpthread/thread/Makefile.inc +++ b/lib/libpthread/thread/Makefile.inc @@ -1,4 +1,4 @@ -# $Id: Makefile.inc,v 1.13 1998/06/01 02:14:34 jb Exp $ +# $Id: Makefile.inc,v 1.14 1998/09/07 19:01:43 alex Exp $ # uthread sources .PATH: ${.CURDIR}/uthread @@ -91,6 +91,7 @@ SRCS+= \ uthread_spec.c \ uthread_spinlock.c \ uthread_suspend_np.c \ + uthread_vfork.c \ uthread_wait4.c \ uthread_write.c \ uthread_writev.c \ diff --git a/lib/libpthread/thread/thr_vfork.c b/lib/libpthread/thread/thr_vfork.c new file mode 100644 index 0000000..bbfcf00 --- /dev/null +++ b/lib/libpthread/thread/thr_vfork.c @@ -0,0 +1,9 @@ +#include <unistd.h> +#ifdef _THREAD_SAFE + +int +vfork(void) +{ + return (fork()); +} +#endif |