From: newsham AT lava DOT net (Tim Newsham) Subject: Re: cygwin.dll src question: fork() 30 Oct 1997 01:40:39 -0800 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit To: cgf AT bbc DOT com Cc: gnu-win32 AT cygnus DOT com > >At the time when cygwin_fork_helper1() returns isn't the > >child's state already a copy of the parent's state? > > No, actually, it isn't. The setjmp and longjmp are used to move the > current execution point into the appropriate point in the cygwin_fork_helper1 > function to emulate a true UNIX fork(). > > What happens is that to emulate a fork, the parent process starts the [...] > extends the stack to hopefully insure that the stack is large enough to > duplicate the parent, and longjmps to the child portion of the > cygwin_fork_helper1 routine. There it wakes up the parent and sleeps > itself. um.. this is a completely different setjmp/longjmp pair. The setjmp that is jumped to from crt0 is in the cygwin_fork_helper1() function. The __fork() function has its own setjmp/longjmp pair that seems to add no extra functionality. Perhaps some sort of legacy from fork implementations of past. > http://www.bbc.com/ cgf AT bbc DOT com "Strange how unreal Tim N. - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".