cvs commit: src/sys/amd64/isa atpic.c src/sys/contrib/dev/oltr
if_oltr.c src/sys/dev/aac aac_pci.c src/sys/dev/acpic
M. Warner Losh
imp at bsdimp.com
Tue Mar 23 09:24:15 PST 2004
In message: <20040323130235.GB39851 at regency.nsu.ru>
Alexey Dokuchaev <danfe at nsu.ru> writes:
: On Mon, Mar 22, 2004 at 11:15:42AM -0800, Bill Paul wrote:
: >
: > This is the entire bus_alloc_resource_any() function:
: >
: > static __inline struct resource *
: > bus_alloc_resource_any(device_t dev, int type, int *rid, u_int flags)
: > {
: > return (bus_alloc_resource(dev, type, rid, 0ul, ~0ul, 1, flags));
: > }
: >
: > Please to be explaining why this isn't a macro:
: >
: > #define bus_alloc_resource_any(dev, type, rid, flags) \
: > bus_alloc_resource(dev, type, rid, 0ul, ~0ul, 1, flags)
:
: Pardon my sneaking in discussion, but I also wonder why isn't this a
: macro? I probably should blame myself for not looking at the actual
: diff when I received your commit message, but I was pretty sure that
: you've just added a macro like Bill suggested above.
As has been explained, macros are less safe than inlines. The above
implementation suffers from a lack of (), for example. gcc and most
other modern compilers generate identical code in both these cases and
the inline gives a scoping that the macro does not.
Warner
More information about the cvs-src
mailing list