Date: Thu, 30 Jan 1997 08:26:28 -0500 (EST) From: "Ron G. Minnich" <rminnich@Sarnoff.COM> To: A JOSEPH KOSHY <koshy@india.hp.com> Cc: freebsd-hackers@freebsd.org Subject: Re: Using rfork() / threads Message-ID: <Pine.SUN.3.91.970130081328.9307F-100000@terra> In-Reply-To: <199701301149.AA268284982@fakir.india.hp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 30 Jan 1997, A JOSEPH KOSHY wrote:
> I'm looking at porting a linux program that uses `clone()' and was
> considering the BSD `rfork()' as an equivalent. My questions are:
> Do we have an equivalent for Linux `sched_yield()'?
well, i wrote one a few years back for freebsd but it never got put in.
It's a trivial call.
They used to look like this (Wally Kimura, then of IBM, was the originator
of this as far as I know)
yield()
{
runrun++;
}
Looking at my current kernel source it seems you need to:
yield()
{
want_resched++;
}
Corrections appreciated.
> How light weight is the process created by `rfork()' (assuming
> that we share everything possible to be shared)?
Not light at all. It shares things with the other process, but it is a full
process in its own right. You really ought to check out the latest context
switch times for freebsd before assuming that is bad. As Rob Pike once
said, and I quote semi-accurately, threads are needed for systems that
have poor context switch performance. Translation: that doesn't mean they're
needed.
If you request file descriptor sharing, then the fd tables are shared
between processes: if one opens a file, the other will see it.
VM space handling is a little different. If you request VM space sharing,
you don't exactly get Vm address space sharing: what you get is instead
shared data areas where in normal fork they are copied. More details on
request. The effect is what you want, though: shared data areas.
> I'm not really looking at a complete emulation of `clone()'; just enough
> to get equivalent functionality.
Going by my reading of my linux kernel source, rfork gives more than enough.
ron
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SUN.3.91.970130081328.9307F-100000>
