From: Jason Baron <jbaron@redhat.com>
To: Jim Cromie <jim.cromie@gmail.com>
Cc: Joe Perches <joe@perches.com>,
Andrew Morton <akpm@linux-foundation.org>,
gregkh@suse.de, Bart Van Assche <bvanassche@acm.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/4] dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions
Date: Mon, 12 Sep 2011 11:00:14 -0400 [thread overview]
Message-ID: <20110912150011.GD2555@redhat.com> (raw)
In-Reply-To: <CAJfuBxx=r_P7em_naUN_c96A++V4v6nfd8B_V2dppRag-z_qwg@mail.gmail.com>
On Fri, Sep 09, 2011 at 01:23:43PM -0600, Jim Cromie wrote:
> On Fri, Sep 9, 2011 at 4:31 AM, Bart Van Assche <bvanassche@acm.org> wrote:
> > On Fri, Sep 9, 2011 at 6:02 AM, Joe Perches <joe@perches.com> wrote:
> >> On Thu, 2011-09-08 at 20:42 -0700, Andrew Morton wrote:
> >> > 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.
> >> Not according to the c99 standard section 6.7
> >
> > Have you read that paragraph ? This is what I found in paragraph 6.7,
> > which confirms Andrews interpretation:
> >
> > <quote>
> > A declaration specifies the interpretation and attributes of a set of
> > identifiers. A definition of an identifier is a declaration for that
> > identifier that:
> > - for an object, causes storage to be reserved for that object;
> > - for a function, includes the function body;
> > - for an enumeration constant or typedef name, is the (only)
> > declaration of the identifier.
> > </quote>
> >
> > Bart.
> >
>
>
> I hesitate to churn this more (I have patchset to go on top of all this) but
>
> Id like to see an INIT_DYNAMIC_DEBUG_METADATA,
> along with ability to expose the descriptor.
>
> This would support pr_dbg_cont(), by letting it see/reuse
> the same descriptor that controls the pr_debug that started
> the multi-call message. While this defeats the "atomicity"
> of buffering the entire message before calling printk,
> it does so only for the actual uses of KERN_CONT.
>
> It also allows for "lite" usage of dynamic-debug,
> including 1..few descriptor per file or module to control all debug printing.
> As outlined, this "lite" usage is determined by the coder,
> it would be cool if it were more configurable than that,
> but I dont see how that would work atm.
>
>
We can expose the descriptor, but I that can wait for a folow-up
patchset, especially, since we don't have any consumers at the moment.
> Now that the worms have escaped the can, one other thought:
> unsigned int lineno:24;
> allows for insanely large files. The largest in the tree is 29k,
> 16 bits would cover all files likely to be accepted in the future.
> Even allowing for never-to-be-submitted machine-generated code,
> Id think 18 bits would suffice. ~250k lines should be enough ;-)
>
> Given that my patchset adds flags-filtering
> ( echo mt+p > $CONTROL )
> The availability of user-flags, which do nothing but mark callsites,
> has some value - user can mark arbitrary sets of callsites,
> then enable/disable them as a group or subgroup:
>
> echo function foo +x > $CONTROL
> ...
> echo x+p > $CONTROL
> echo y-p > $CONTROL
> echo z+p > $CONTROL
> echo yz-p > $CONTROL
>
> Since since it works with module/file/function filtering, 3-4 user
> flags should be plenty.
makes sense...this can also be done is follow-on patchset...
thanks,
-Jason
next prev parent reply other threads:[~2011-09-12 15:00 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-30 18:28 [PATCH 0/4] dynamic debug: cleanups + compile fix v2 Jason Baron
2011-08-30 18:28 ` [PATCH 1/4] dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions Jason Baron
2011-09-08 23:52 ` Andrew Morton
2011-09-09 2:13 ` Joe Perches
2011-09-09 3:42 ` Andrew Morton
2011-09-09 4:02 ` Joe Perches
2011-09-09 4:20 ` Andrew Morton
2011-09-09 4:35 ` Joe Perches
2011-09-09 10:31 ` Bart Van Assche
2011-09-09 19:23 ` Jim Cromie
2011-09-09 21:04 ` Joe Perches
2011-09-09 22:06 ` Jim Cromie
2011-09-09 22:32 ` Joe Perches
2011-09-12 14:47 ` Jason Baron
2011-09-12 18:15 ` Jim Cromie
2011-09-12 15:00 ` Jason Baron [this message]
2011-08-30 18:28 ` [PATCH 2/4] dynamic_debug: remove num_enabled accounting Jason Baron
2011-08-30 18:28 ` [PATCH 3/4] dynamic_debug: use a single printk() to emit msgs Jason Baron
2011-09-08 23:52 ` Andrew Morton
2011-08-30 18:28 ` [PATCH 4/4] dynamic_debug: fix undefined reference to `__netdev_printk' Jason Baron
2011-09-01 16:16 ` Arnd Bergmann
-- strict thread matches above, loose matches on Subject: below --
2011-08-25 17:34 [PATCH 0/4] dynamic debug: cleanups + compile fix Jason Baron
2011-08-25 17:34 ` [PATCH 1/4] dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions Jason Baron
2011-08-26 10:46 ` Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110912150011.GD2555@redhat.com \
--to=jbaron@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=bvanassche@acm.org \
--cc=gregkh@suse.de \
--cc=jim.cromie@gmail.com \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.