Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Dec 2010 05:01:55 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Bruce Cran <brucec@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r216143 - in head: share/man/man9 sys/amd64/include sys/arm/include sys/i386/include sys/ia64/include sys/mips/include sys/pc98/include sys/powerpc/include sys/sparc64/include sys/sun4v...
Message-ID:  <20101204045754.T4046@besplex.bde.org>
In-Reply-To: <201012030709.oB379NOH058721@svn.freebsd.org>
References:  <201012030709.oB379NOH058721@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 3 Dec 2010, Bruce Cran wrote:

> Log:
>  Revert r216134. This checkin broke platforms where bus_space are macros:
>  they need to be a single statement, and do { } while (0) doesn't work in this
>  situation so revert until a solution can be devised.

Surprising that do-while doesn't work.

> ...
> Modified: head/sys/arm/include/bus.h
> ==============================================================================
> --- head/sys/arm/include/bus.h	Fri Dec  3 07:01:07 2010	(r216142)
> +++ head/sys/arm/include/bus.h	Fri Dec  3 07:09:23 2010	(r216143)
> ...
> @@ -321,29 +318,21 @@ struct bus_space {
>  * Bus read multiple operations.
>  */
> #define	bus_space_read_multi_1(t, h, o, a, c)				\
> -	KASSERT(c != 0, ("bus_space_read_multi_1: count == 0"));	\
> 	__bs_nonsingle(rm,1,(t),(h),(o),(a),(c))

I just noticed the following possibly more serious problems for the macro
versions:

- the `c' arg is missing parentheses in the KASSERT()
- the `c' arg is now evaluated twice.  This turns safe macros into unsafe
   ones.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20101204045754.T4046>