Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Apr 96 15:22:21 +0200
From:      Lars Gerhard Kuehl <lars@elbe.desy.de>
To:        smpatel@umiacs.umd.edu
Cc:        current@FreeBSD.ORG
Subject:   Re: Changes for vfork()
Message-ID:  <9604191322.AA07511@elbe.desy.de>

next in thread | raw e-mail | index | archive | help

> We should briefly look over the source tree too.  Some brain-dead programs
> may rely on vfork() behavior (such as sleeping on the child, or altering
> the parent's address space)...

The current vfork() already doesn't allow the child to alter the parent's
address space and sometimes it's very desirable (or at least convenient)
if one can rely on the parent being suspended until the child calls
execve() or _exit().

I'd prefer somthing like a pid_t newfork(int suspend_parent),
fork implemented as

pid_t
fork()
{
  return newfork(0);
}

and so far anybody needs it vfork as

pid_t
vfork()
{
  return newfork(42);
}


fork1() is actually almost an implementation of that 'newfork()',
thus with only negligible changes in the kernel and libc code the
number of system calls could be decremented and nobody had to miss
anything.

	Lars



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9604191322.AA07511>