Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!ames!lll-tis!helios.ee.lbl.gov!pasteur!ucbvax!decwrl!sun!pitstop!sundc!seismo!uunet!mcvax!botter!star.cs.vu.nl!ast From: ast@cs.vu.nl (Andy Tanenbaum) Newsgroups: comp.os.minix Subject: Re: Minix Library Reentrancy Message-ID: <752@ast.cs.vu.nl> Date: 24 May 88 21:36:41 GMT References: <433@moncsbruce.oz> <1532@runx.ips.oz> Reply-To: ast@cs.vu.nl (Andy Tanenbaum) Organization: VU Informatica, Amsterdam Lines: 19 In article <1532@runx.ips.oz> brucee@runx.ips.oz (Bruce Evans) writes: > >It is impossible to pass messages on the stack to the kernel, since the >kernel explicitly checks (in proc.c/mini_send()) that all user messages >are in the DATA segment (as opposed to the STACK segment). > >This seems like an oversight, since stack and data are much the same in C. >Of course, an extra check to allow the stack segment will mainly slow >down the kernel. Is there anything more to it than this? In an early version of MINIX, around V1.-15 or so, you could have messages in either stack or data space. This version also swapped, had shared text, sticky bits, and proper message queues instead of Ada-rendezvous like message passing as is currently there. Unfortunately, this version was not real speedy, so a few features got lopped off, including messages in stack space. This feature is rarely needed, and does have a substantial performance penalty, as the kernel must check which segment the message is in, and if the entire message is within the segment, etc. Andy Tanenbaum (ast@cs.vu.nl)