On Tue, Jan 22, 2002 at 06:08:12PM +0100, Kevin D. Kissell wrote: > > Perhaps I'm mangling terminology. LinuxThreads is a one-to-one mapping > > of kernel threads to user threads. All the kernel threads, and thus > > all the user threads, share the same memory region - including the > > stack region. Their stacks are differentiated solely by different > > values in the stack pointer register. Thus I don't think what you're > > suggesting is possible. > > I don't see how fork() semantics can be preserved unless > the stack regions are replicated (copy-on-write) on a fork(). > Under ATT and BSD Unix (which is where I did most of > my kernel hacking in the old days) that was the *only* > way to get a new kernel thread, so it was "obvious" > that my proposed hack would work. Linux does have > the clone() function as well, and if LinuxThreads are > implemented in terms of clone(foo, stakptr, CLONE_VM, arg), > you are correct, the proposed scheme would not work > without modification. Which it is. Fork shares no memory regions; vfork/clone share all memory regions. AFAIK there is no share-heap-but-not-stack option in Linux. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer