Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Mar 2004 10:24:16 -0700 (MST)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        danfe@nsu.ru
Cc:        nate@root.org
Subject:   Re: 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
Message-ID:  <20040323.102416.32179617.imp@bsdimp.com>
In-Reply-To: <20040323130235.GB39851@regency.nsu.ru>
References:  <20040322102119.P33645@root.org> <20040322191542.CD8DE16A4CF@hub.freebsd.org> <20040323130235.GB39851@regency.nsu.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20040323130235.GB39851@regency.nsu.ru>
            Alexey Dokuchaev <danfe@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



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