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 
>                                       <dil...@backplane.com>
> 
> 
> 
> To Unsubscribe: send mail to majord...@freebsd.org
> with "unsubscribe freebsd-current" in the body of the message
> 

 Brian Feldman                                    _ __  ___ ___ ___  
 gr...@unixhelp.org                           _ __ ___ | _ ) __|   \ 
             http://www.freebsd.org/     _ __ ___ ____ | _ \__ \ |) |
 FreeBSD: The Power to Serve!      _ __ ___ ____ _____ |___/___/___/ 



To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to