From owner-freebsd-arch@FreeBSD.ORG Thu May 31 01:11:45 2007 Return-Path: X-Original-To: freebsd-arch@freebsd.org Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AAEEB16A421 for ; Thu, 31 May 2007 01:11:45 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail10.syd.optusnet.com.au (mail10.syd.optusnet.com.au [211.29.132.191]) by mx1.freebsd.org (Postfix) with ESMTP id 2D35213C45A for ; Thu, 31 May 2007 01:11:44 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from besplex.bde.org (c211-30-225-63.carlnfd3.nsw.optusnet.com.au [211.30.225.63]) by mail10.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id l4V1BTn3007608 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 31 May 2007 11:11:31 +1000 Date: Thu, 31 May 2007 11:11:31 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Julian Elischer In-Reply-To: <465E189C.4000609@elischer.org> Message-ID: <20070531110004.H1221@besplex.bde.org> References: <20070529105856.L661@10.0.0.1> <200705291456.38515.jhb@freebsd.org> <20070529121653.P661@10.0.0.1> <20070530065423.H93410@delplex.bde.org> <20070529141342.D661@10.0.0.1> <20070530125553.G12128@besplex.bde.org> <20070529201255.X661@10.0.0.1> <20070529220936.W661@10.0.0.1> <20070530201618.T13220@besplex.bde.org> <20070530115752.F661@10.0.0.1> <20070531091419.S826@besplex.bde.org> <465E189C.4000609@elischer.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-arch@freebsd.org Subject: Re: Updated rusage patch X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 May 2007 01:11:45 -0000 On Wed, 30 May 2007, Julian Elischer wrote: > Bruce Evans wrote: > >> - RELENG_4: statclock() uses splhigh() but not interrupt atomicity. >> exit1() uses no locking and thus races with statclock(). >> above: statclock() still uses sched_lock but not interrupt atomicity. > > > sched_lock blocks interrupts > >> exit1() uses no locking and thus races with statclock(). ^^^^^^^^^^^^^^^^^^^^^^^ exit1() uses no locking and is thus unaffected by sched_lock. More precisely, it uses mounds of locking, but at the point that it races with statclock() it holds only PROC_LOCK(p). It acquires sched_lock for the first time much later. Bruce