Re: Porting vfork()

Todd Larason (jtl@molehill.org)
Sun, 10 Jan 1999 23:03:21 -0800


On 990110, Torbjorn Lindgren wrote:
> Note that SUSv2 DOES have vfork(), it's even part of the mandatory base
> set (as opposed to one of the feature groups)... Yikes! They do have some
> serious restrictions on it thought, unless you are extremely carefull you
> slide into undefined behavior.

The restrictions appear to make it legal for vfork() to have either fork() or
traditional vfork() semantics; any program which can tell the difference has
strayed into areas explicitely undefined by SUSv2.

> Yes, most OS'es that have vfork() seems to have lots of cautions about it
> in their manual pages. The closest to a BSD4.x box I could find (Ultrix
> 4.4) didn't have it thought, so the original BSD implementations might
> not have had it...

FreeBSD 2.10-release, BSDI BSD/OS 2.1, and straght 4.4BSD all contain the
paragraph:

This system call will be eiminated when proper system sharing mechanisms
are implemented. users should not depend on the memory sharing semantics
of vfork as it will, in that case, be made synonymous with fork.

SunOS 4.1.1, 5.4, 5.5, 5.5.1 and 5.6 and 5.7 say:

This system call will be eliminated in a future release.
System implementation changes are making the efficiency
gain of vfork() over fork(2V) smaller. The memory sharing
semantics of vfork() can be obtained through other mecha-
nisms.

As an aside, 5.5 and higher also note that vfork is unsafe in MT apps.

-- 
"Ayn's vision is _Russian_ libertarianism, in the same sense that
Leninism is Russian Marxism." -- Joshua W Burton
ICQ UIN: 26467396

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/