From: Roman Fietze <roman.fietze@telemotive.de>
To: Jason Baron <jbaron@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Proposal to add dynamic debug feature for print_hex_dump [2/2]
Date: Fri, 3 Dec 2010 15:21:40 +0100 [thread overview]
Message-ID: <201012031521.41332.roman.fietze@telemotive.de> (raw)
In-Reply-To: <201012031517.35062.roman.fietze@telemotive.de>
Sorry for the first, wrong subject line. The index field shoudl have
been reading [0/2].
>From 068faf208310a0a72194667143a5a9ca9beabdde Mon Sep 17 00:00:00 2001
From: Roman Fietze <roman.fietze@telemotive.de>
Date: Fri, 3 Dec 2010 15:00:43 +0100
Subject: [PATCH 2/2] dynamic printk: add support for pr_debug_hex_dump
Use dynamic printk wrapper to support turning pr_debug_hex_dump on and
off similar to pr_debug using the dynamic debug sysfs control file.
Signed-off-by: Roman Fietze <roman.fietze@telemotive.de>
---
include/linux/dynamic_debug.h | 22 ++++++++++++++++++++++
include/linux/printk.h | 16 ++++++++++++----
2 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
index a90b389..0610e74 100644
--- a/include/linux/dynamic_debug.h
+++ b/include/linux/dynamic_debug.h
@@ -74,6 +74,24 @@ do_printk: \
out: ; \
} while (0)
+#define dynamic_pr_hex_dump(prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii) \
+ do { \
+ __label__ do_hex_dump; \
+ __label__ out; \
+ static struct _ddebug descriptor \
+ __used \
+ __attribute__((section("__verbose"), aligned(8))) = { \
+ KBUILD_MODNAME, __func__, __FILE__, prfx_str, __LINE__, \
+ _DPRINTK_FLAGS_DEFAULT }; \
+ JUMP_LABEL(&descriptor.enabled, do_hex_dump); \
+ goto out; \
+ do_hex_dump: \
+ print_hex_dump(KERN_DEBUG, prfx_str, prfx_type, \
+ rowsz, grpsz, buf, len, ascii); \
+ out: ; \
+ } while (0)
+
#else
static inline int ddebug_remove_module(const char *mod)
@@ -85,6 +103,10 @@ static inline int ddebug_remove_module(const char *mod)
do { if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); } while (0)
#define dynamic_dev_dbg(dev, fmt, ...) \
do { if (0) dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__); } while (0)
+#define dynamic_pr_hex_dump(prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii) \
+ do { if (0) print_hex_dump(KERN_DEBUG, prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii); } while (0)
#endif
#endif
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 77903f1..5bf4483 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -212,10 +212,6 @@ extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
buf, len, ascii) \
print_hex_dump(KERN_CONT, prfx_str, prfx_type, rowsz, grpsz, \
buf, len, ascii)
-#define pr_debug_hex_dump(prfx_str, prfx_type, rowsz, grpsz, \
- buf, len, ascii) \
- print_hex_dump(KERN_DEBUG, prfx_str, prfx_type, rowsz, grpsz, \
- buf, len, ascii)
/* pr_devel() should produce zero code unless DEBUG is defined */
#ifdef DEBUG
@@ -230,13 +226,25 @@ extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
#if defined(DEBUG)
#define pr_debug(fmt, ...) \
printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
+#define pr_debug_hex_dump(prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii) \
+ print_hex_dump(KERN_DEBUG, prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii)
#elif defined(CONFIG_DYNAMIC_DEBUG)
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
#define pr_debug(fmt, ...) \
dynamic_pr_debug(fmt, ##__VA_ARGS__)
+#define pr_debug_hex_dump(prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii) \
+ dynamic_pr_hex_dump(prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii)
#else
#define pr_debug(fmt, ...) \
({ if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); 0; })
+#define pr_debug_hex_dump(prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii) \
+ do { if (0) print_hex_dump(KERN_DEBUG, prfx_str, prfx_type, rowsz, grpsz, \
+ buf, len, ascii); } while (0)
#endif
/*
--
1.7.3.2
--
Roman Fietze Telemotive AG Buero Muehlhausen
Breitwiesen 73347 Muehlhausen
Tel.: +49(0)7335/18493-45 http://www.telemotive.de
next prev parent reply other threads:[~2010-12-03 14:28 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-03 14:17 [PATCH] Proposal to add dynamic debug feature for print_hex_dump [0/3] Roman Fietze
2010-12-03 14:19 ` [PATCH] Proposal to add dynamic debug feature for print_hex_dump [1/2] Roman Fietze
2010-12-03 20:35 ` Joe Perches
2010-12-03 14:21 ` Roman Fietze [this message]
2010-12-03 20:37 ` [PATCH] Proposal to add dynamic debug feature for print_hex_dump [2/2] Joe Perches
2010-12-06 5:58 ` Roman Fietze
2010-12-06 6:04 ` Joe Perches
[not found] ` <201012061113.01576.roman.fietze@telemotive.de>
[not found] ` <1291822758.1240.8.camel@Joe-Laptop>
2011-01-14 8:43 ` [PATCH] Proposal to add dynamic debug feature for print_hex_dump Roman Fietze
2011-01-14 18:19 ` Joe Perches
2011-02-01 12:45 ` [PATCH 0/2] Fixed proposal " Roman Fietze
2011-02-01 12:46 ` [PATCH 1/2] printk.h dynamic_debug.h: add hex_dump_<level> macros Roman Fietze
2011-02-01 12:48 ` [PATCH 2/2] hex_dump_dbg: replace all calls to print_hex_dump with level KERN_DEBUG Roman Fietze
2011-02-02 1:27 ` Joe Perches
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=201012031521.41332.roman.fietze@telemotive.de \
--to=roman.fietze@telemotive.de \
--cc=jbaron@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®