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...
Bruce Evans
brde at optusnet.com.au
Fri Dec 3 18:02:06 UTC 2010
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
More information about the svn-src-head
mailing list