Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Jan 2002 18:02:36 -0700
From:      Nate Williams <nate@yogotech.com>
To:        Alfred Perlstein <bright@mu.org>
Cc:        Nate Williams <nate@yogotech.com>, Dan Eischen <eischen@vigrid.com>, Peter Wemm <peter@wemm.org>, Archie Cobbs <archie@dellroad.org>, arch@FreeBSD.ORG
Subject:   Re: Request for review: getcontext, setcontext, etc
Message-ID:  <15418.17708.386130.893862@caddis.yogotech.com>
In-Reply-To: <20020107185929.H18706@elvis.mu.org>
References:  <20020106232937.9F87D38CC@overcee.netplex.com.au> <3C390746.5FE7648C@vigrid.com> <15417.59947.662052.836634@caddis.yogotech.com> <20020107130208.E18706@elvis.mu.org> <15418.663.130281.835301@caddis.yogotech.com> <20020107185929.H18706@elvis.mu.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> > > 
> > > Well, one trick might be to do this:
> > > 
> > > 1)  Request that the OS turn off the FP enabled bit when running new
> > > threads.
> > 
> > In userland threads, there is no way to turn it off on a thread basis,
> > so it's either on/off for the entire process.
> 
> You read this wrong.
> 
> The _pthreads library_ asks the kernel to turn off the bit when
> scheduling a new thread.

Ahh, OK.  And then, depending on the state of the next thread, you
either leave it off, or turn it on.

In essence, you have a three way flag for the FPU needed, but this can
be optimized to two states, 'unknown/not-needed', 'needed'.

Unknown/not-needed are essentially the same, since if it's never needed,
it's the same state as unknown/off.

> > > 2) If you get an FP not present exception you mark that thread as
> > > using FP.
> > 
> > At this point, we'd have to turn it on for all threads, since any future
> > thread that uses the context would also need to save/restore the
> > thread.  (Since, FPU would be turned on for this 'process'.)
> 
> The FPU may be turned on in the kernel context, however the userland
> context should be able to switch it back off after saving it itself.

I understand.

> > > 3) In the threads scheduler and at context switch time between it (the
> > > thread) and any other thread not using FP you request the behavior
> > > of point #1.
> > > 
> > > So you would only have a syscall when switching between FP and non-FP
> > > threads.
> > > 
> > > Is this possible?
> > 
> > In the future it may be possible, if we keep track of FP-usage on a
> > thread basis instead of a process basis.  This requires kernel threads.
> 
> No, as I stated above, I don't think this requires kernel threads.

I understand now, thanks.  However, I'm not sure how easily this can be
done.


Nate

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?15418.17708.386130.893862>