summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordt <dt@FreeBSD.org>1998-09-12 22:03:20 +0000
committerdt <dt@FreeBSD.org>1998-09-12 22:03:20 +0000
commit613a2bdfdecf9393b99b2c5db227a51a940e746b (patch)
tree3f061a428b7f6ca96bf141b620aae2439a24bfab
parent9aee196299648c93b416ff7774bda3da6934d78d (diff)
downloadFreeBSD-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.S4
-rw-r--r--lib/libc/amd64/sys/vfork.S8
-rw-r--r--lib/libc/i386/sys/Ovfork.S8
-rw-r--r--lib/libc_r/uthread/Makefile.inc3
-rw-r--r--lib/libc_r/uthread/uthread_vfork.c9
-rw-r--r--lib/libkse/thread/Makefile.inc3
-rw-r--r--lib/libkse/thread/thr_vfork.c9
-rw-r--r--lib/libpthread/thread/Makefile.inc3
-rw-r--r--lib/libpthread/thread/thr_vfork.c9
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
OpenPOWER on IntegriCloud