From owner-freebsd-arch Sun Jan 13 14:16: 5 2002 Delivered-To: freebsd-arch@freebsd.org Received: from netau1.alcanet.com.au (ntp.alcanet.com.au [203.62.196.27]) by hub.freebsd.org (Postfix) with ESMTP id ADD0C37B41C for ; Sun, 13 Jan 2002 14:16:02 -0800 (PST) Received: from mfg1.cim.alcatel.com.au (mfg1.cim.alcatel.com.au [139.188.23.1]) by netau1.alcanet.com.au (8.9.3 (PHNE_22672)/8.9.3) with ESMTP id JAA12162; Mon, 14 Jan 2002 09:15:57 +1100 (EDT) Received: from gsmx07.alcatel.com.au by cim.alcatel.com.au (PMDF V5.2-32 #37640) with ESMTP id <01KD2148DCLSVM3HF1@cim.alcatel.com.au>; Mon, 14 Jan 2002 09:15:55 +1100 Received: from cirb503493.alcatel.com.au (pj1592 [192.168.123.159]) by gsmx07.alcatel.com.au (8.11.6/8.11.6) with ESMTP id g0DMFqY25466; Mon, 14 Jan 2002 09:15:52 +1100 Received: (from jeremyp@localhost) by cirb503493.alcatel.com.au (8.11.6/8.11.6) id g0DLrUm38634; Mon, 14 Jan 2002 08:53:30 +1100 (EST envelope-from jeremyp) Date: Mon, 14 Jan 2002 08:53:30 +1100 From: Peter Jeremy Subject: Re: Request for review: getcontext, setcontext, etc In-reply-to: <20020110135217.M7984@elvis.mu.org>; from bright@mu.org on Thu, Jan 10, 2002 at 01:52:17PM -0800 To: Alfred Perlstein Cc: Kelly Yancey , Nate Williams , Terry Lambert , Daniel Eischen , Dan Eischen , Peter Wemm , Archie Cobbs , arch@FreeBSD.ORG Message-id: <20020114085330.B38605@cirb503493.alcatel.com.au> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-disposition: inline User-Agent: Mutt/1.2.5i References: <15421.64170.308581.606485@caddis.yogotech.com> <20020110135217.M7984@elvis.mu.org> 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 On Thu, Jan 10, 2002 at 01:52:17PM -0800, Alfred Perlstein wrote: >1) Is atomicity required? (looks like a "no") >2) Are states like FP usage trackable from userspace? > (looks like a "yes" with some kernel help) I gather you are thinking of a userland approach like: if (thread_has_used_FP) { save_FP_context(curthread); mark_FP_unused(); } save_nonFP_context(curthread); restore_nonFP_context(newthread); if (FP_is_used(newthread)) pass_FP_context_to_kernel(newthread); curthread = newthread; Since FP status is per-CPU, this needs atomicity to an extent: You must ensure that the active thread does not migrate between CPUs between the "thread_has_used_FP" test and following save. I agree this is unlikely, but it needs to be catered for. Peter To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message