From owner-cvs-src@FreeBSD.ORG Thu Oct 16 06:24:17 2003 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 48DCA16A4B3; Thu, 16 Oct 2003 06:24:17 -0700 (PDT) Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by mx1.FreeBSD.org (Postfix) with ESMTP id 54C1043FBD; Thu, 16 Oct 2003 06:24:14 -0700 (PDT) (envelope-from bde@zeta.org.au) Received: from gamplex.bde.org (katana.zip.com.au [61.8.7.246]) by mailman.zeta.org.au (8.9.3p2/8.8.7) with ESMTP id XAA22292; Thu, 16 Oct 2003 23:23:39 +1000 Date: Thu, 16 Oct 2003 23:22:17 +1000 (EST) From: Bruce Evans X-X-Sender: bde@gamplex.bde.org To: Doug Rabson In-Reply-To: <1066304172.20052.8.camel@builder02.qubesoft.com> Message-ID: <20031016231222.I1298@gamplex.bde.org> References: <200310160916.h9G9GSqQ067982@repoman.freebsd.org> <1066304172.20052.8.camel@builder02.qubesoft.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: cvs-src@freebsd.org cc: Doug Rabson cc: src-committers@freebsd.org cc: cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/sys bus.h kobj.h param.h src/sys/kern subr_bus.c subr_kobj.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Oct 2003 13:24:17 -0000 On Thu, 16 Oct 2003, Doug Rabson wrote: > On Thu, 2003-10-16 at 12:16, Bruce Evans wrote: > > On Thu, 16 Oct 2003, Doug Rabson wrote: > > > ... > > > * Change the kobj method lookup algorithm to one which is SMP-safe. This > > > relies only on the constraint that an observer of a sequence of writes > > > of pointer-sized values will see exactly one of those values, not a > > > mixture of two or more values. This assumption holds for all processors > > > which FreeBSD supports. > > > > This assumption should be avoided by using atomic_load() (and > > atomic_store_mumble()). See a discussion of "atomicity of unlocked > > reads" last month. First implement atomic_load(). There is currently > > only atomic_load_acq_(). "acq" gives acquire semantics which > > is more than what is needed here and our implementations may do more > > than what is required anyway for some arches. "" is part of a > > bad API. > > Without using something like , how can you know how much to read > (without abusing some kind of GCC language extension)? I don't want to > use atomic_load_acq_* since I don't care which order values are written > to the cache. sizeof(parameter) gives the size (but not the type) if atomic_foo(parameter) is a macro. The type isn't really needed in MD macros, especially for load/store. The macros for this would be almost as ugly as the ones for i386 pcpu accesses though. Using GCC extensions would probably be less ugly. Bruce