All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Simon Glass <sjg@chromium.org>,
	u-boot@lists.denx.de
Cc: Bin Meng <bmeng.cn@gmail.com>
Subject: [PATCH v1 1/2] hexdump: Introduce debug APIs
Date: Tue,  9 Nov 2021 15:02:54 +0300	[thread overview]
Message-ID: <20211109120255.77679-1-andriy.shevchenko@linux.intel.com> (raw)

debug_hex_dump() and debug_hex_dump_bytes() conditionally print
the dump based on DEBUG definition.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 include/hexdump.h |  4 ++++
 lib/hexdump.c     | 60 ++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 56 insertions(+), 8 deletions(-)

diff --git a/include/hexdump.h b/include/hexdump.h
index f2ca4793d699..390af4c8da1e 100644
--- a/include/hexdump.h
+++ b/include/hexdump.h
@@ -147,6 +147,8 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize,
  */
 int print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
 		   int groupsize, const void *buf, size_t len, bool ascii);
+int debug_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
+		   int groupsize, const void *buf, size_t len, bool ascii);
 
 /**
  * print_hex_dump_bytes - shorthand form of print_hex_dump() with default params
@@ -162,5 +164,7 @@ int print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
  */
 void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
 			  const void *buf, size_t len);
+void debug_hex_dump_bytes(const char *prefix_str, int prefix_type,
+			  const void *buf, size_t len);
 
 #endif /* HEXDUMP_H */
diff --git a/lib/hexdump.c b/lib/hexdump.c
index 149c93ead8b8..39c9e86649a0 100644
--- a/lib/hexdump.c
+++ b/lib/hexdump.c
@@ -125,8 +125,9 @@ overflow1:
 	return ascii ? ascii_column + len : (groupsize * 2 + 1) * ngroups - 1;
 }
 
-int print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
-		   int groupsize, const void *buf, size_t len, bool ascii)
+static int do_print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
+			     int groupsize, const void *buf, size_t len, bool ascii,
+			     bool dbg)
 {
 	const u8 *ptr = buf;
 	int i, linelen, remaining = len;
@@ -146,15 +147,27 @@ int print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
 
 		switch (prefix_type) {
 		case DUMP_PREFIX_ADDRESS:
-			printf("%s%0*lx: %s\n", prefix_str,
-			       IS_ENABLED(CONFIG_PHYS_64BIT) ? 16 : 8,
-			       (ulong)map_to_sysmem(ptr) + i, linebuf);
+			if (dbg) {
+				debug("%s%0*lx: %s\n", prefix_str,
+				      IS_ENABLED(CONFIG_PHYS_64BIT) ? 16 : 8,
+				      (ulong)map_to_sysmem(ptr) + i, linebuf);
+			} else }
+				printf("%s%0*lx: %s\n", prefix_str,
+				       IS_ENABLED(CONFIG_PHYS_64BIT) ? 16 : 8,
+				       (ulong)map_to_sysmem(ptr) + i, linebuf);
+			}
 			break;
 		case DUMP_PREFIX_OFFSET:
-			printf("%s%.8x: %s\n", prefix_str, i, linebuf);
+			if (dbg)
+				debug("%s%.8x: %s\n", prefix_str, i, linebuf);
+			else
+				printf("%s%.8x: %s\n", prefix_str, i, linebuf);
 			break;
 		default:
-			printf("%s%s\n", prefix_str, linebuf);
+			if (dbg)
+				debug("%s%s\n", prefix_str, linebuf);
+			else
+				printf("%s%s\n", prefix_str, linebuf);
 			break;
 		}
 		if (!IS_ENABLED(CONFIG_SPL_BUILD) && ctrlc())
@@ -164,10 +177,30 @@ int print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
 	return 0;
 }
 
+int print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
+		   int groupsize, const void *buf, size_t len, bool ascii)
+{
+	return do_print_hex_dump(prefix_str, prefix_type, rowsize, groupsize,
+				 buf, len, ascii, false);
+}
+
+int debug_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
+		   int groupsize, const void *buf, size_t len, bool ascii)
+{
+	return do_print_hex_dump(prefix_str, prefix_type, rowsize, groupsize,
+				 buf, len, ascii, true);
+}
+
 void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
 			  const void *buf, size_t len)
 {
-	print_hex_dump(prefix_str, prefix_type, 16, 1, buf, len, true);
+	do_print_hex_dump(prefix_str, prefix_type, 16, 1, buf, len, true, false);
+}
+
+void debug_hex_dump_bytes(const char *prefix_str, int prefix_type,
+			  const void *buf, size_t len)
+{
+	do_print_hex_dump(prefix_str, prefix_type, 16, 1, buf, len, true, true);
 }
 #else
 /*
@@ -180,8 +213,19 @@ int print_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
 	return -ENOSYS;
 }
 
+int debug_hex_dump(const char *prefix_str, int prefix_type, int rowsize,
+		   int groupsize, const void *buf, size_t len, bool ascii)
+{
+	return -ENOSYS;
+}
+
 void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
 			  const void *buf, size_t len)
 {
 }
+
+void debug_hex_dump_bytes(const char *prefix_str, int prefix_type,
+			  const void *buf, size_t len)
+{
+}
 #endif /* CONFIG_HEXDUMP */
-- 
2.33.0


             reply	other threads:[~2021-11-09 12:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-09 12:02 Andy Shevchenko [this message]
2021-11-09 12:02 ` [PATCH v1 2/2] x86: scu: Add a few debug messages to the driver Andy Shevchenko
2021-11-13 18:14   ` Simon Glass
2021-11-13 18:14 ` [PATCH v1 1/2] hexdump: Introduce debug APIs Simon Glass
2022-03-30  9:30   ` Andy Shevchenko
2022-03-30 15:54     ` Heinrich Schuchardt

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=20211109120255.77679-1-andriy.shevchenko@linux.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=bmeng.cn@gmail.com \
    --cc=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /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.