Messages in this thread | | | Date | Thu, 8 Sep 2011 20:42:00 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH 1/4] dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions |
| |
On Thu, 08 Sep 2011 19:13:16 -0700 Joe Perches <joe@perches.com> wrote:
> On Thu, 2011-09-08 at 16:52 -0700, Andrew Morton wrote: > > On Tue, 30 Aug 2011 14:28:41 -0400 > > Jason Baron <jbaron@redhat.com> wrote: > > > Replace the repetitive struct _ddebug descriptor definitions with > > > a new DECLARE_DYNAMIC_DEBUG_META_DATA(name, fmt) macro. > > > +#define DECLARE_DYNAMIC_DEBUG_METADATA(name, fmt) \ > > > + static struct _ddebug __used __aligned(8) \ > > > + __attribute__((section("__verbose"))) name = { \ > > > + .modname = KBUILD_MODNAME, \ > > > + .function = __func__, \ > > > + .filename = __FILE__, \ > > > + .format = (fmt), \ > > > + .lineno = __LINE__, \ > > > + .flags = _DPRINTK_FLAGS_DEFAULT, \ > > > + .enabled = false, \ > > > + } > > <anal>That macro implements a definition, not a declaration</anal> > > Andrew, that's not quite true
It's precisely true.
: Exercise 2.8 : : A declaration introduces a name and a type for something. It does not : necessarily reserve any storage. : : Exercise 2.9 : : A definition is a declaration that also reserves storage.
(http://publications.gbdirect.co.uk/c_book/answers/chapter_2.html)
> and that's how > DECLARE is normally used in linux.
It's how it's sometimes used, when we screwed up.
> DECLARE_BITMAP, DECLARE_COMPLETION, DECLARE_RWSEM, etc.
Mistakes.
| |