Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jul 2003 15:18:28 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        das@freebsd.org
Cc:        cvs-all@freebsd.org
Subject:   Re: cvs commit: src/sys/dev/lnc if_lnc.c
Message-ID:  <20030722.151828.83724752.imp@bsdimp.com>
In-Reply-To: <20030722163007.GA6080@HAL9000.homeunix.com>
References:  <20030722235600.X8165@gamplex.bde.org> <11951.1058884091@critter.freebsd.dk> <20030722163007.GA6080@HAL9000.homeunix.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20030722163007.GA6080@HAL9000.homeunix.com>
            David Schultz <das@freebsd.org> writes:
: There is reason for concern about cases where inline really is
: misused, either because it massively increases code size or
: because it is unimportant to performance and detracts from
: debuggability.  But I would not like to see a policy that shifts
: the burden of proof onto authors of new code.[1]  A policy about
: gratuitous sweeps through other people's code, on the other
: hand...

There's one other place that we use inlining.  We use it to make sure
that modules do not contain references to certain symbols.  For
example:

/*
 * make this inline so that we don't have to worry about dangling references
 * to it in the modules or the code.
 */
static __inline const struct pccard_product *
pccard_product_lookup(device_t dev, const struct pccard_product *tab,
    size_t ent_size, pccard_product_match_fn matchfn)
{
	return CARD_DO_PRODUCT_LOOKUP(device_get_parent(dev), dev,
	    tab, ent_size, matchfn);
}

We do this to get the type safty of the function call and not have to
make that a macro.  We do *NOT* want references to
pccard_product_lookup, but the CARD_DO_.. kobj call allows the
indirection that makes it possible to use the same module in kernels
with and without pccard support.

This isn't either of the performance or size trade-offs.  It is a
design decision to use inline over #define.  If the new gcc breaks
this, then it becomes a #define...

Warner



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