Date: Sun, 21 Mar 1999 18:02:02 +0000 (GMT) From: Brian Feldman <green@unixhelp.org> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: Alfred Perlstein <bright@rush.net>, "John S. Dyson" <dyson@iquest.net>, samit@usa.ltindia.com, commiters@FreeBSD.ORG, freebsd-current@FreeBSD.ORG Subject: Re: rfork() Message-ID: <Pine.BSF.4.05.9903211752040.2767-100000@zone.syracuse.net> In-Reply-To: <199903211721.JAA13495@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 21 Mar 1999, Matthew Dillon wrote: > :Hence the NEW flag RFSTACK. Why would this be a bad thing? This would keep > :the old behavior and allow much nicer new behavior. I didn't suggest > :changing the old behavior. This would just greatly simplify things so all of > > I think Richard Seaman has it right: the stack needs to be passed. > > Why don't we simply implement the linux clone()? It sounds to me that > it would be trivial. Let's add another parameter to fork1/rfork(): pid_t rfork __P((int, ...)); for userland struct rfork_args { int flags; caddr_t extra; }; and in the kernel would be: fork1(p1, flags) register struct proc *p1; int flags; caddr_t extra; { foo } We, of course, have backward binary and code compatibility outside of the kernel with the ellipses, and inside the kernel we control it anyway so we can modify whatever needs to be changed. > > :the assembly wouldn't be needed. Hmm... actually... if one were to mmap() a > :stack and as soon as the rfork() returned movl newstack,%esp and whatnot, > :wouldn't this be a pretty simple solution? > > No, because one of the processes may overrun the stack before the other > one managed to return from rfork(). The child process cannot use the > old stack at all. Why would a simple movl be using the stack? > > Matthew Dillon > <dillon@backplane.com> > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-current" in the body of the message > Brian Feldman _ __ ___ ___ ___ green@unixhelp.org _ __ ___ | _ ) __| \ http://www.freebsd.org/ _ __ ___ ____ | _ \__ \ |) | FreeBSD: The Power to Serve! _ __ ___ ____ _____ |___/___/___/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9903211752040.2767-100000>