diff options
| author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2001-03-11 18:52:10 +0000 |
|---|---|---|
| committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2001-03-11 18:52:10 +0000 |
| commit | 8f12c20f6c37989bd2d4e78f9763db606a64005b (patch) | |
| tree | 6e67c3ea400b5990eb5ff04efebf8b424b8679af /sys | |
| parent | 5d936aa181dd8b8a3d0a30cd1a41d1983719546e (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/i386/linux/linux_machdep.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/i386/linux/linux_machdep.c b/sys/i386/linux/linux_machdep.c index 6c1ddeeff80a..aaa5cac019dc 100644 --- a/sys/i386/linux/linux_machdep.c +++ b/sys/i386/linux/linux_machdep.c @@ -222,7 +222,6 @@ linux_clone(struct proc *p, struct linux_clone_args *args) struct proc *p2; int exit_signal; vm_offset_t start; - struct rfork_args rf_args; #ifdef DEBUG if (ldebug(clone)) { @@ -256,14 +255,9 @@ linux_clone(struct proc *p, struct linux_clone_args *args) error = 0; start = 0; - rf_args.flags = ff; - if ((error = rfork(p, &rf_args)) != 0) + if ((error = fork1(p, ff, &p2)) != 0) return (error); - p2 = pfind(p->p_retval[0]); - if (p2 == NULL) - return (ESRCH); - PROC_LOCK(p2); p2->p_sigparent = exit_signal; PROC_UNLOCK(p2); @@ -283,6 +277,8 @@ linux_clone(struct proc *p, struct linux_clone_args *args) setrunqueue(p2); mtx_unlock_spin(&sched_lock); + p->p_retval[0] = p2->p_pid; + p->p_retval[1] = 0; return (0); } |
