From owner-freebsd-arch Mon Jan 7 11: 2:24 2002 Delivered-To: freebsd-arch@freebsd.org Received: from elvis.mu.org (elvis.mu.org [216.33.66.196]) by hub.freebsd.org (Postfix) with ESMTP id 45E7537B419 for ; Mon, 7 Jan 2002 11:02:12 -0800 (PST) Received: by elvis.mu.org (Postfix, from userid 1192) id 7727581E08; Mon, 7 Jan 2002 13:02:08 -0600 (CST) Date: Mon, 7 Jan 2002 13:02:08 -0600 From: Alfred Perlstein To: Nate Williams Cc: Dan Eischen , Peter Wemm , Archie Cobbs , arch@FreeBSD.ORG Subject: Re: Request for review: getcontext, setcontext, etc Message-ID: <20020107130208.E18706@elvis.mu.org> References: <20020106232937.9F87D38CC@overcee.netplex.com.au> <3C390746.5FE7648C@vigrid.com> <15417.59947.662052.836634@caddis.yogotech.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <15417.59947.662052.836634@caddis.yogotech.com>; from nate@yogotech.com on Mon, Jan 07, 2002 at 11:34:19AM -0700 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 * Nate Williams [020107 12:34] wrote: > > > Also, I noticed that the i386 patch doesn't save FP state (!) which is > > > one of the primary reasons for get/setcontext(). I'm not sure if this > > > can be efficiently done since this user-level function will not know if > > > the current context has touched the FPU yet.. > > > > Neither does the kernel, does it? I thought I saw comments in the > > kernel (was it alpha?) about it being too bad that we couldn't tell > > if the FPU was used. In libc_r, we currently only save and restore the > > FP state when the context is generated from a signal handler (or perhaps > > in the case of KSEs, when the thread was preempted). > > Hmm, IIRC, Java's green threads saves the FP context everytime it does a > thread switch, since it has no way of knowing if the thread was doing FP > context. Is there a way to force get/setcontext to always/conditionally > save the FP context, for applications that either know they need to have > it saved? Well, one trick might be to do this: 1) Request that the OS turn off the FP enabled bit when running new threads. 2) If you get an FP not present exception you mark that thread as using FP. 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? -- -Alfred Perlstein [alfred@freebsd.org] 'Instead of asking why a piece of software is using "1970s technology," start asking why software is ignoring 30 years of accumulated wisdom.' Tax deductable donations for FreeBSD: http://www.freebsdfoundation.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message