From owner-freebsd-arch Mon Jan 7 17: 2:47 2002 Delivered-To: freebsd-arch@freebsd.org Received: from ns.yogotech.com (ns.yogotech.com [206.127.123.66]) by hub.freebsd.org (Postfix) with ESMTP id 2D95237B419 for ; Mon, 7 Jan 2002 17:02:42 -0800 (PST) Received: from caddis.yogotech.com (caddis.yogotech.com [206.127.123.130]) by ns.yogotech.com (8.9.3/8.9.3) with ESMTP id SAA26114; Mon, 7 Jan 2002 18:02:36 -0700 (MST) (envelope-from nate@yogotech.com) Received: (from nate@localhost) by caddis.yogotech.com (8.11.6/8.11.6) id g0812ac01777; Mon, 7 Jan 2002 18:02:36 -0700 (MST) (envelope-from nate) From: Nate Williams MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15418.17708.386130.893862@caddis.yogotech.com> Date: Mon, 7 Jan 2002 18:02:36 -0700 To: Alfred Perlstein Cc: Nate Williams , Dan Eischen , Peter Wemm , Archie Cobbs , arch@FreeBSD.ORG Subject: Re: Request for review: getcontext, setcontext, etc 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> X-Mailer: VM 6.96 under 21.1 (patch 14) "Cuyahoga Valley" XEmacs Lucid Reply-To: nate@yogotech.com (Nate Williams) Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG > > > > > > 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