From owner-cvs-all Mon Oct 8 21:50:10 2001 Delivered-To: cvs-all@freebsd.org Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by hub.freebsd.org (Postfix) with ESMTP id 6304937B401; Mon, 8 Oct 2001 21:50:04 -0700 (PDT) Received: from bde.zeta.org.au (bde.zeta.org.au [203.2.228.102]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id OAA13603; Tue, 9 Oct 2001 14:50:02 +1000 Date: Tue, 9 Oct 2001 14:49:18 +1000 (EST) From: Bruce Evans X-X-Sender: To: John Baldwin Cc: , Subject: Re: cvs commit: src/sys/i386/include atomic.h In-Reply-To: <200110082058.f98KwPp88784@freefall.freebsd.org> Message-ID: <20011009143716.N22621-100000@delplex.bde.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Mon, 8 Oct 2001, John Baldwin wrote: > jhb 2001/10/08 13:58:25 PDT > > Modified files: > sys/i386/include atomic.h > Log: > Allow atomic ops to be somewhat safely used in userland. We always use > lock prefixes in the userland case so that the binaries will work on both > SMP and UP systems. > > Revision Changes Path > 1.21 +8 -4 src/sys/i386/include/atomic.h I don't want the current bad interface exported to userland where it is harder to fix. The interface should by type-generic. E.g., atomic_add(lvalue, rvalue) instead of: #ifdef TYPE_IS_KNOWN_TO_BE_VOLATILE_CHAR atomic_add_char(&lvalue, rvalue) /* sic */ #elif TYPE_IS_KNOWN_TO_BE_CHAR /* Use the interface for volatile chars, although this may be pessimal. */ atomic_add_char(&lvalue, rvalue) #elif TYPE_IS_KNOWN_TO_BE_UNSIGNED_CHAR /* XXX abuse atomic_add_char() since there is no atomic_add_unsigned_char(). */ atomic_add_char(&lvalue, rvalue) ... #elif TYPE_IS_KNOWN_TO_BE_SHORT atomic_add_short(&lvalue, rvalue) ... #endif Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message