From: Jason Baron <jbaron@redhat.com>
To: Joe Perches <joe@perches.com>
Cc: gregkh@suse.de, jim.cromie@gmail.com, bvanassche@acm.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 09/11 re-post take #2] dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions
Date: Mon, 15 Aug 2011 16:44:38 -0400 [thread overview]
Message-ID: <20110815204438.GA7157@redhat.com> (raw)
In-Reply-To: <1313131164.27549.18.camel@Joe-Laptop>
Hi Joe,
On Thu, Aug 11, 2011 at 11:39:24PM -0700, Joe Perches wrote:
> On Thu, 2011-08-11 at 16:52 -0400, Jason Baron wrote:
> > Replace the repetitive struct _ddebug descriptor definitions with
> > a new DECLARE_DYNAMIC_DEBUG_METADATA(name, fmt) macro.
> []
> > diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
> []
> > @@ -54,33 +54,28 @@ extern int __dynamic_netdev_dbg(struct _ddebug *descriptor,
> > const char *fmt, ...)
> > __attribute__ ((format (printf, 3, 4)));
> >
> > +#define DECLARE_DYNAMIC_DEBUG_METADATA(name, fmt) \
> > + static struct _ddebug name \
> > + __used \
> > + __attribute__((section("__verbose"), aligned(8))) = \
> > + { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__, \
> > + _DPRINTK_FLAGS_DEFAULT }
>
> Hey again Jason.
>
> From a kernel coding style consistency POV, shouldn't
> this use c99 named initializers?
yes, that would be better than what we have now.
>
> #define DECLARE_DYNAMIC_DEBUG_METADATA(name, fmt) \
> static struct _ddebug name = { \
> .modname = KBUILD_MODNAME, \
> .function = __func__, \
> .filename = __FILE__, \
> .format = fmt, \
> .lineno = __LINE__, \
> .flags = _DPRINTK_FLAGS_DEFAULT, \
> .enabled = false, \
> } __used __aligned(8) __attribute__((section("__verbose")))
>
> If the pr_debug/dynamic_debug inversion is done,
> the .enabled flag should be set on as well when
> -DDEBUG is set, correct?
right, but I'm leaving this to a subsequent patch.
>
> > #define dynamic_pr_debug(fmt, ...) do { \
> > - static struct _ddebug descriptor \
> > - __used \
> > - __attribute__((section("__verbose"), aligned(8))) = \
> > - { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__, \
> > - _DPRINTK_FLAGS_DEFAULT }; \
> > + DECLARE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
> > if (unlikely(descriptor.enabled)) \
> > - __dynamic_pr_debug(&descriptor, pr_fmt(fmt), ##__VA_ARGS__); \
> > + __dynamic_pr_debug(&descriptor, pr_fmt(fmt), ##__VA_ARGS__);\
> > } while (0)
>
> Perhaps
>
> #define dynamic_pr_debug(fmt, ...) \
> do { \
> DECLARE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
> if (unlikely(descriptor.enabled)) \
> __dynamic_pr_debug(&descriptor, pr_fmt(fmt), \
> ##__VA_ARGS__); \
> } while (0)
ok.
>
> Lastly, are the unlikely()s really useful?
>
I think the unlikely's make sense, since we don't expect these to be
enabled by default.
So, I've re-spun the patch, with the above comments (below). Thanks!
-Jason
Replace the repetitive struct _ddebug descriptor definitions with
a new DECLARE_DYNAMIC_DEBUG_META_DATA(name, fmt) macro.
Signed-off-by: Jason Baron <jbaron@redhat.com>
---
include/linux/dynamic_debug.h | 64 ++++++++++++++++++++++------------------
1 files changed, 35 insertions(+), 29 deletions(-)
diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
index feaac1e..699f533 100644
--- a/include/linux/dynamic_debug.h
+++ b/include/linux/dynamic_debug.h
@@ -54,35 +54,41 @@ extern int __dynamic_netdev_dbg(struct _ddebug *descriptor,
const char *fmt, ...)
__attribute__ ((format (printf, 3, 4)));
-#define dynamic_pr_debug(fmt, ...) do { \
- static struct _ddebug descriptor \
- __used \
- __attribute__((section("__verbose"), aligned(8))) = \
- { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__, \
- _DPRINTK_FLAGS_DEFAULT }; \
- if (unlikely(descriptor.enabled)) \
- __dynamic_pr_debug(&descriptor, pr_fmt(fmt), ##__VA_ARGS__); \
- } while (0)
-
-#define dynamic_dev_dbg(dev, fmt, ...) do { \
- static struct _ddebug descriptor \
- __used \
- __attribute__((section("__verbose"), aligned(8))) = \
- { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__, \
- _DPRINTK_FLAGS_DEFAULT }; \
- if (unlikely(descriptor.enabled)) \
- __dynamic_dev_dbg(&descriptor, dev, fmt, ##__VA_ARGS__); \
- } while (0)
-
-#define dynamic_netdev_dbg(dev, fmt, ...) do { \
- static struct _ddebug descriptor \
- __used \
- __attribute__((section("__verbose"), aligned(8))) = \
- { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__, \
- _DPRINTK_FLAGS_DEFAULT }; \
- if (unlikely(descriptor.enabled)) \
- __dynamic_netdev_dbg(&descriptor, dev, fmt, ##__VA_ARGS__);\
- } while (0)
+#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, \
+ }
+
+#define dynamic_pr_debug(fmt, ...) \
+do { \
+ DECLARE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
+ if (unlikely(descriptor.enabled)) \
+ __dynamic_pr_debug(&descriptor, pr_fmt(fmt), \
+ ##__VA_ARGS__); \
+} while (0)
+
+#define dynamic_dev_dbg(dev, fmt, ...) \
+do { \
+ DECLARE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
+ if (unlikely(descriptor.enabled)) \
+ __dynamic_dev_dbg(&descriptor, dev, fmt, \
+ ##__VA_ARGS__); \
+} while (0)
+
+#define dynamic_netdev_dbg(dev, fmt, ...) \
+do { \
+ DECLARE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
+ if (unlikely(descriptor.enabled)) \
+ __dynamic_netdev_dbg(&descriptor, dev, fmt, \
+ ##__VA_ARGS__); \
+} while (0)
#else
--
1.7.5.4
next prev parent reply other threads:[~2011-08-15 20:44 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-11 18:36 [PATCH 00/11] various fixes v3 Jason Baron
2011-08-11 18:36 ` [PATCH 01/11] dynamic_debug: Add __dynamic_dev_dbg Jason Baron
2011-08-11 18:36 ` [PATCH 02/11] dynamic_debug: Consolidate prefix output to single routine Jason Baron
2011-08-11 18:36 ` [PATCH 03/11] dynamic_debug: Remove uses of KERN_CONT in dynamic_emit_prefix Jason Baron
2011-08-11 18:36 ` [PATCH 04/11] dynamic_debug: Convert printks to pr_<level> Jason Baron
2011-08-11 18:36 ` [PATCH 05/11] dynamic_debug: remove unused control variables Jason Baron
2011-08-11 18:36 ` [PATCH 06/11] dynamic_debug: add Jason Baron as maintainer Jason Baron
2011-08-11 18:36 ` [PATCH 07/11] dynamic_debug: make netdev_dbg() call __netdev_printk() Jason Baron
2011-09-01 14:57 ` [PATCH ] dynamic_debug: call __netdev_printk only for CONFIG_NET Arnd Bergmann
2011-09-01 15:18 ` Jason Baron
2011-09-18 8:27 ` Greg KH
2011-09-18 17:21 ` Randy Dunlap
2011-09-18 18:27 ` Greg KH
2011-09-18 18:42 ` Randy Dunlap
2011-09-19 13:48 ` Jason Baron
2011-09-19 16:49 ` Randy Dunlap
2011-08-11 18:36 ` [PATCH 08/11] dynamic_debug: make netif_dbg() call __netdev_printk() Jason Baron
2011-08-11 18:36 ` [PATCH 09/11] dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions Jason Baron
2011-08-11 19:02 ` Joe Perches
2011-08-11 20:52 ` [PATCH 09/11 re-post] " Jason Baron
2011-08-12 6:39 ` Joe Perches
2011-08-15 20:44 ` Jason Baron [this message]
2011-08-15 23:12 ` [PATCH 09/11 re-post take #2] " Joe Perches
2011-08-16 13:59 ` Jason Baron
2011-08-11 18:37 ` [PATCH 10/11] dynamic_debug: remove num_enabled accounting Jason Baron
2011-08-11 18:37 ` [PATCH 11/11] dynamic_debug: use a single printk() to emit msgs Jason Baron
2011-08-23 1:32 ` [PATCH 00/11] various fixes v3 Greg KH
2011-08-23 13:54 ` Jason Baron
2011-08-23 15:15 ` Greg KH
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=20110815204438.GA7157@redhat.com \
--to=jbaron@redhat.com \
--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.