Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Nov 1999 16:53:10 -0500 (EST)
From:      Peter Dufault <dufault@hda.com>
To:        jb@cimlogic.com.au (John Birrell)
Cc:        dufault@hda.com, julian@whistle.com, freebsd-arch@freebsd.org
Subject:   Re: Threads goals  version III
Message-ID:  <199911012153.QAA19185@hda.hda.com>
In-Reply-To: <19991102084448.A66172@freebsd1.cimlogic.com.au> from John Birrell at "Nov 2, 99 08:44:49 am"

next in thread | previous in thread | raw e-mail | index | archive | help
> On Mon, Nov 01, 1999 at 07:33:52AM -0500, Peter Dufault wrote:
> > > 4/ All threads in a processs see the same address space (exactly).
> > 
> > Stacks too?  Is that a rule implied from POSIX or one for portability?
> 
> I think so. There is nothing to stop a thread from passing a pointer
> to something on it's stack to another thread, assuming that it will
> ensure that the stack will remain valid. This is common practice where
> one thread parents one or more child threads and wishes to share
> information with them.

Obviously he can't return though.  Here's what I would
argue for in setting a standards document:

main()
{
	int mainvar;

	newthread(t1);	/* t1 is a thread and it can access mainvar... */

	sub();
}

sub()
{
	int subvar;

	newthread(t2);	/* t2 can access subvar or mainvar, but maybe
			 * t1 can't access subvar.
			 * Maybe the stack just crossed a page boundary.
			 */

	while(1)
		keep_stack_context();
}

Essentially threads would only be guaranteed access to stack variables
both in existence and valid when the thread is created.  All stack
growth can be in separate address spaces.

If a stackless main() creates a bunch of threads at that level and
then idles those threads would have completely disjoint stacks.

Peter

-- 
Peter Dufault (dufault@hda.com)   Realtime development, Machine control,
HD Associates, Inc.               Safety critical systems, Agency approval




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199911012153.QAA19185>