From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Vormwald To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> In-Reply-To: <20080508172816.4B2D71E8C55@holo.morphisms.net> References: <20080508172816.4B2D71E8C55@holo.morphisms.net> Content-Type: text/plain; charset=utf-8 Date: Thu, 8 May 2008 13:40:42 -0400 Message-Id: <1210268442.11438.3.camel@wren> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: Re: [9fans] _tos puzzle Topicbox-Message-UUID: a364e6c6-ead3-11e9-9d60-3106f5b1d025 On Thu, 2008-05-08 at 13:24 -0400, Russ Cox wrote: > > So I have to allocate 56 bytes (sizeof(Tos) on 386) of space above the > > top of stack (before copying argc and argv) and set AX to that > > address, correct? > > Yes. And you need to maintain it. > At the very least you need to initialize tos->pid > and update it on return from rfork. > > > The clone(2) system call in linux allows for creation of child > > processes that share address space with its parent, with the exception > > of the stack segment. > > It does? I don't see that anywhere in the man page. > > Russ Wouldn't the CLONE_VM flag do this? CLONE_VM If CLONE_VM is set, the calling process and the child processes run in the same memory space. In particular, memory writes per‐ formed by the calling process or by the child process are also visible in the other process. Moreover, any memory mapping or unmapping performed with mmap(2) or munmap(2) by the child or calling process also affects the other process. Steven Vormwald