* [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes
@ 2018-08-16 15:31 Stephen Hemminger
2018-08-16 15:31 ` [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup Stephen Hemminger
` (3 more replies)
0 siblings, 4 replies; 16+ messages in thread
From: Stephen Hemminger @ 2018-08-16 15:31 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
Minor cleanups of the hexdump routines
Stephen Hemminger (2):
hexdump: whitespace cleanup
hexdump: align output of string
lib/librte_eal/common/eal_common_hexdump.c | 116 +++++++++------------
1 file changed, 50 insertions(+), 66 deletions(-)
--
2.18.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup
2018-08-16 15:31 [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Stephen Hemminger
@ 2018-08-16 15:31 ` Stephen Hemminger
2018-08-16 16:34 ` Wiles, Keith
2018-08-16 16:35 ` Wiles, Keith
2018-08-16 15:31 ` [dpdk-dev] [PATCH 2/2] hexdump: align output of string Stephen Hemminger
` (2 subsequent siblings)
3 siblings, 2 replies; 16+ messages in thread
From: Stephen Hemminger @ 2018-08-16 15:31 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
The hexdump code obviously came from somewhere else originally.
It is not formatted according to DPDK coding style.
Also, drop the comment which is not useful the docbock comment
is already in the rte_hexdump.h
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/librte_eal/common/eal_common_hexdump.c | 109 ++++++++-------------
1 file changed, 43 insertions(+), 66 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
index 9ca7c511c062..980cf73ac337 100644
--- a/lib/librte_eal/common/eal_common_hexdump.c
+++ b/lib/librte_eal/common/eal_common_hexdump.c
@@ -10,82 +10,59 @@
#define LINE_LEN 128
-/**************************************************************************//**
-*
-* rte_hexdump - Dump out memory in a special hex dump format.
-*
-* DESCRIPTION
-* Dump out the message buffer in a special hex dump output format with characters
-* printed for each line of 16 hex values.
-*
-* RETURNS: N/A
-*
-* SEE ALSO:
-*/
-
-void
-rte_hexdump(FILE *f, const char * title, const void * buf, unsigned int len)
+void rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
{
- unsigned int i, out, ofs;
- const unsigned char *data = buf;
- char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
+ unsigned int i, out, ofs;
+ const unsigned char *data = buf;
+ char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
- fprintf(f, "%s at [%p], len=%u\n", (title)? title : " Dump data", data, len);
- ofs = 0;
- while (ofs < len) {
- /* format the line in the buffer, then use printf to output to screen */
- out = snprintf(line, LINE_LEN, "%08X:", ofs);
- for (i = 0; ((ofs + i) < len) && (i < 16); i++)
- out += snprintf(line+out, LINE_LEN - out, " %02X", (data[ofs+i] & 0xff));
- for(; i <= 16; i++)
- out += snprintf(line+out, LINE_LEN - out, " | ");
- for(i = 0; (ofs < len) && (i < 16); i++, ofs++) {
- unsigned char c = data[ofs];
- if ( (c < ' ') || (c > '~'))
- c = '.';
- out += snprintf(line+out, LINE_LEN - out, "%c", c);
- }
- fprintf(f, "%s\n", line);
- }
- fflush(f);
-}
+ fprintf(f, "%s at [%p], len=%u\n", (title) ? title : " Dump data",
+ data, len);
+ ofs = 0;
+ while (ofs < len) {
+ /* format the line in the buffer */
+ out = snprintf(line, LINE_LEN, "%08X:", ofs);
+ for (i = 0; i < 16 && ofs + i < len; i++)
+ out += snprintf(line + out, LINE_LEN - out,
+ " %02X", (data[ofs + i] & 0xff));
+ for (; i <= 16; i++)
+ out += snprintf(line + out, LINE_LEN - out, " | ");
+
+ for (i = 0; (ofs < len) && (i < 16); i++, ofs++) {
+ unsigned char c = data[ofs];
-/**************************************************************************//**
-*
-* rte_memdump - Dump out memory in hex bytes with colons.
-*
-* DESCRIPTION
-* Dump out the message buffer in hex bytes with colons xx:xx:xx:xx:...
-*
-* RETURNS: N/A
-*
-* SEE ALSO:
-*/
+ if (c < ' ' || c > '~')
+ c = '.';
+ out += snprintf(line + out, LINE_LEN - out, "%c", c);
+ }
+ fprintf(f, "%s\n", line);
+ }
+ fflush(f);
+}
-void
-rte_memdump(FILE *f, const char * title, const void * buf, unsigned int len)
+void rte_memdump(FILE *f, const char *title, const void *buf, unsigned int len)
{
- unsigned int i, out;
- const unsigned char *data = buf;
- char line[LINE_LEN];
+ unsigned int i, out;
+ const unsigned char *data = buf;
+ char line[LINE_LEN];
- if ( title )
- fprintf(f, "%s: ", title);
+ if (title)
+ fprintf(f, "%s: ", title);
- line[0] = '\0';
- for (i = 0, out = 0; i < len; i++) {
- // Make sure we do not overrun the line buffer length.
- if ( out >= (LINE_LEN - 4) ) {
+ line[0] = '\0';
+ for (i = 0, out = 0; i < len; i++) {
+ /* Make sure we do not overrun the line buffer length. */
+ if (out >= (LINE_LEN - 4)) {
fprintf(f, "%s", line);
out = 0;
line[out] = '\0';
}
- out += snprintf(line+out, LINE_LEN - out, "%02x%s",
- (data[i] & 0xff), ((i+1) < len)? ":" : "");
- }
- if ( out > 0 )
- fprintf(f, "%s", line);
- fprintf(f, "\n");
+ out += snprintf(line + out, LINE_LEN - out, "%02x%s",
+ (data[i] & 0xff), ((i + 1) < len) ? ":" : "");
+ }
+ if (out > 0)
+ fprintf(f, "%s", line);
+ fprintf(f, "\n");
- fflush(f);
+ fflush(f);
}
--
2.18.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH 2/2] hexdump: align output of string
2018-08-16 15:31 [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Stephen Hemminger
2018-08-16 15:31 ` [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup Stephen Hemminger
@ 2018-08-16 15:31 ` Stephen Hemminger
2018-08-16 15:50 ` Stephen Hemminger
2018-10-24 23:40 ` [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Thomas Monjalon
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Stephen Hemminger
3 siblings, 1 reply; 16+ messages in thread
From: Stephen Hemminger @ 2018-08-16 15:31 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
This fixes the issue where if the length of the output is not
a multiple of 16 the formatting was off.
Before:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37 | | | | | | | | | | | | | ...7
After:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37 | ...7
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/librte_eal/common/eal_common_hexdump.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
index 980cf73ac337..19c2d86c693e 100644
--- a/lib/librte_eal/common/eal_common_hexdump.c
+++ b/lib/librte_eal/common/eal_common_hexdump.c
@@ -22,9 +22,16 @@ void rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
while (ofs < len) {
/* format the line in the buffer */
out = snprintf(line, LINE_LEN, "%08X:", ofs);
- for (i = 0; i < 16 && ofs + i < len; i++)
- out += snprintf(line + out, LINE_LEN - out,
+ for (i = 0; i < 16; i++) {
+ if (ofs + i < len)
+ snprintf(line + out, LINE_LEN - out,
" %02X", (data[ofs + i] & 0xff));
+ else
+ strcpy(line + out, " ");
+ out += 3;
+ }
+
+
for (; i <= 16; i++)
out += snprintf(line + out, LINE_LEN - out, " | ");
--
2.18.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [dpdk-dev] [PATCH 2/2] hexdump: align output of string
2018-08-16 15:31 ` [dpdk-dev] [PATCH 2/2] hexdump: align output of string Stephen Hemminger
@ 2018-08-16 15:50 ` Stephen Hemminger
0 siblings, 0 replies; 16+ messages in thread
From: Stephen Hemminger @ 2018-08-16 15:50 UTC (permalink / raw)
To: dev
On Thu, 16 Aug 2018 08:31:06 -0700
Stephen Hemminger <stephen@networkplumber.org> wrote:
> This fixes the issue where if the length of the output is not
> a multiple of 16 the formatting was off.
>
> Before:
> 00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
> 00000010: C0 A8 01 37 | | | | | | | | | | | | | ...7
>
> After:
> 00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
> 00000010: C0 A8 01 37 | ...7
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> lib/librte_eal/common/eal_common_hexdump.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
> index 980cf73ac337..19c2d86c693e 100644
> --- a/lib/librte_eal/common/eal_common_hexdump.c
> +++ b/lib/librte_eal/common/eal_common_hexdump.c
> @@ -22,9 +22,16 @@ void rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
> while (ofs < len) {
> /* format the line in the buffer */
> out = snprintf(line, LINE_LEN, "%08X:", ofs);
> - for (i = 0; i < 16 && ofs + i < len; i++)
> - out += snprintf(line + out, LINE_LEN - out,
> + for (i = 0; i < 16; i++) {
> + if (ofs + i < len)
> + snprintf(line + out, LINE_LEN - out,
> " %02X", (data[ofs + i] & 0xff));
> + else
> + strcpy(line + out, " ");
> + out += 3;
> + }
> +
> +
> for (; i <= 16; i++)
> out += snprintf(line + out, LINE_LEN - out, " | ");
>
Nevermind, this version.
The last two lines are dead code after tha patch and could be dropped.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup
2018-08-16 15:31 ` [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup Stephen Hemminger
@ 2018-08-16 16:34 ` Wiles, Keith
2018-08-16 16:59 ` Stephen Hemminger
2018-08-16 16:35 ` Wiles, Keith
1 sibling, 1 reply; 16+ messages in thread
From: Wiles, Keith @ 2018-08-16 16:34 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev
> On Aug 16, 2018, at 10:31 AM, Stephen Hemminger <stephen@networkplumber.org> wrote:
>
> The hexdump code obviously came from somewhere else originally.
> It is not formatted according to DPDK coding style.
>
> Also, drop the comment which is not useful the docbock comment
> is already in the rte_hexdump.h
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> lib/librte_eal/common/eal_common_hexdump.c | 109 ++++++++-------------
> 1 file changed, 43 insertions(+), 66 deletions(-)
>
> diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
> index 9ca7c511c062..980cf73ac337 100644
> --- a/lib/librte_eal/common/eal_common_hexdump.c
> +++ b/lib/librte_eal/common/eal_common_hexdump.c
> @@ -10,82 +10,59 @@
>
> #define LINE_LEN 128
>
> -/**************************************************************************//**
> -*
> -* rte_hexdump - Dump out memory in a special hex dump format.
> -*
> -* DESCRIPTION
> -* Dump out the message buffer in a special hex dump output format with characters
> -* printed for each line of 16 hex values.
> -*
> -* RETURNS: N/A
> -*
> -* SEE ALSO:
> -*/
> -
> -void
> -rte_hexdump(FILE *f, const char * title, const void * buf, unsigned int len)
> +void rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
I looked at the Coding Guide in section 1.7.2 and it states
1.7.2. Definitions
- The function type should be on a line by itself preceding the function.
- The opening brace of the function body should be on a line by itself.
static char *
function(int a1, int a2, float fl, int a4)
{
I have noticed some places are not following that rule in other parts of DPDK. Function prototypes are on the same line.
> {
> - unsigned int i, out, ofs;
> - const unsigned char *data = buf;
> - char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
> + unsigned int i, out, ofs;
> + const unsigned char *data = buf;
> + char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
>
> - fprintf(f, "%s at [%p], len=%u\n", (title)? title : " Dump data", data, len);
> - ofs = 0;
> - while (ofs < len) {
> - /* format the line in the buffer, then use printf to output to screen */
> - out = snprintf(line, LINE_LEN, "%08X:", ofs);
> - for (i = 0; ((ofs + i) < len) && (i < 16); i++)
> - out += snprintf(line+out, LINE_LEN - out, " %02X", (data[ofs+i] & 0xff));
> - for(; i <= 16; i++)
> - out += snprintf(line+out, LINE_LEN - out, " | ");
> - for(i = 0; (ofs < len) && (i < 16); i++, ofs++) {
> - unsigned char c = data[ofs];
> - if ( (c < ' ') || (c > '~'))
> - c = '.';
> - out += snprintf(line+out, LINE_LEN - out, "%c", c);
> - }
> - fprintf(f, "%s\n", line);
> - }
> - fflush(f);
> -}
> + fprintf(f, "%s at [%p], len=%u\n", (title) ? title : " Dump data",
> + data, len);
> + ofs = 0;
> + while (ofs < len) {
> + /* format the line in the buffer */
> + out = snprintf(line, LINE_LEN, "%08X:", ofs);
> + for (i = 0; i < 16 && ofs + i < len; i++)
> + out += snprintf(line + out, LINE_LEN - out,
> + " %02X", (data[ofs + i] & 0xff));
> + for (; i <= 16; i++)
> + out += snprintf(line + out, LINE_LEN - out, " | ");
> +
> + for (i = 0; (ofs < len) && (i < 16); i++, ofs++) {
> + unsigned char c = data[ofs];
>
> -/**************************************************************************//**
> -*
> -* rte_memdump - Dump out memory in hex bytes with colons.
> -*
> -* DESCRIPTION
> -* Dump out the message buffer in hex bytes with colons xx:xx:xx:xx:...
> -*
> -* RETURNS: N/A
> -*
> -* SEE ALSO:
> -*/
> + if (c < ' ' || c > '~')
> + c = '.';
> + out += snprintf(line + out, LINE_LEN - out, "%c", c);
> + }
> + fprintf(f, "%s\n", line);
> + }
> + fflush(f);
> +}
>
> -void
> -rte_memdump(FILE *f, const char * title, const void * buf, unsigned int len)
> +void rte_memdump(FILE *f, const char *title, const void *buf, unsigned int len)
> {
> - unsigned int i, out;
> - const unsigned char *data = buf;
> - char line[LINE_LEN];
> + unsigned int i, out;
> + const unsigned char *data = buf;
> + char line[LINE_LEN];
>
> - if ( title )
> - fprintf(f, "%s: ", title);
> + if (title)
> + fprintf(f, "%s: ", title);
>
> - line[0] = '\0';
> - for (i = 0, out = 0; i < len; i++) {
> - // Make sure we do not overrun the line buffer length.
> - if ( out >= (LINE_LEN - 4) ) {
> + line[0] = '\0';
> + for (i = 0, out = 0; i < len; i++) {
> + /* Make sure we do not overrun the line buffer length. */
> + if (out >= (LINE_LEN - 4)) {
> fprintf(f, "%s", line);
> out = 0;
> line[out] = '\0';
> }
> - out += snprintf(line+out, LINE_LEN - out, "%02x%s",
> - (data[i] & 0xff), ((i+1) < len)? ":" : "");
> - }
> - if ( out > 0 )
> - fprintf(f, "%s", line);
> - fprintf(f, "\n");
> + out += snprintf(line + out, LINE_LEN - out, "%02x%s",
> + (data[i] & 0xff), ((i + 1) < len) ? ":" : "");
> + }
> + if (out > 0)
> + fprintf(f, "%s", line);
> + fprintf(f, "\n");
>
> - fflush(f);
> + fflush(f);
> }
> --
> 2.18.0
>
Regards,
Keith
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup
2018-08-16 15:31 ` [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup Stephen Hemminger
2018-08-16 16:34 ` Wiles, Keith
@ 2018-08-16 16:35 ` Wiles, Keith
1 sibling, 0 replies; 16+ messages in thread
From: Wiles, Keith @ 2018-08-16 16:35 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev
> On Aug 16, 2018, at 10:31 AM, Stephen Hemminger <stephen@networkplumber.org> wrote:
>
> The hexdump code obviously came from somewhere else originally.
> It is not formatted according to DPDK coding style.
>
> Also, drop the comment which is not useful the docbock comment
> is already in the rte_hexdump.h
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> —
This code was put in years ago, maybe before it was push to public repo :-)
Thanks for the cleanup and output cleanup.
Regards,
Keith
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup
2018-08-16 16:34 ` Wiles, Keith
@ 2018-08-16 16:59 ` Stephen Hemminger
0 siblings, 0 replies; 16+ messages in thread
From: Stephen Hemminger @ 2018-08-16 16:59 UTC (permalink / raw)
To: Wiles, Keith; +Cc: dev
On Thu, 16 Aug 2018 16:34:12 +0000
"Wiles, Keith" <keith.wiles@intel.com> wrote:
> I looked at the Coding Guide in section 1.7.2 and it states
>
> 1.7.2. Definitions
> - The function type should be on a line by itself preceding the function.
> - The opening brace of the function body should be on a line by itself.
>
> static char *
> function(int a1, int a2, float fl, int a4)
> {
Really, I thought in general DPDK followed Linux kernel style.
Making little exceptions like this is a nuisance.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes
2018-08-16 15:31 [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Stephen Hemminger
2018-08-16 15:31 ` [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup Stephen Hemminger
2018-08-16 15:31 ` [dpdk-dev] [PATCH 2/2] hexdump: align output of string Stephen Hemminger
@ 2018-10-24 23:40 ` Thomas Monjalon
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Stephen Hemminger
3 siblings, 0 replies; 16+ messages in thread
From: Thomas Monjalon @ 2018-10-24 23:40 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev
16/08/2018 17:31, Stephen Hemminger:
> Minor cleanups of the hexdump routines
>
> Stephen Hemminger (2):
> hexdump: whitespace cleanup
> hexdump: align output of string
>
> lib/librte_eal/common/eal_common_hexdump.c | 116 +++++++++------------
> 1 file changed, 50 insertions(+), 66 deletions(-)
Please, could you update this series?
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups
2018-08-16 15:31 [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Stephen Hemminger
` (2 preceding siblings ...)
2018-10-24 23:40 ` [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Thomas Monjalon
@ 2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
` (3 more replies)
3 siblings, 4 replies; 16+ messages in thread
From: Stephen Hemminger @ 2019-04-02 15:23 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
Minor bugfix and source cleanup
Stephen Hemminger (2):
hexdump: whitespace cleanup
hexdump: align output of string
lib/librte_eal/common/eal_common_hexdump.c | 114 +++++++++------------
1 file changed, 50 insertions(+), 64 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Stephen Hemminger
@ 2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 1/2] hexdump: whitespace cleanup Stephen Hemminger
` (2 subsequent siblings)
3 siblings, 0 replies; 16+ messages in thread
From: Stephen Hemminger @ 2019-04-02 15:23 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
Minor bugfix and source cleanup
Stephen Hemminger (2):
hexdump: whitespace cleanup
hexdump: align output of string
lib/librte_eal/common/eal_common_hexdump.c | 114 +++++++++------------
1 file changed, 50 insertions(+), 64 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH v2 1/2] hexdump: whitespace cleanup
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
@ 2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 2/2] hexdump: align output of string Stephen Hemminger
2019-04-03 16:36 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Thomas Monjalon
3 siblings, 1 reply; 16+ messages in thread
From: Stephen Hemminger @ 2019-04-02 15:23 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
The hexdump code obviously came from somewhere else originally.
It is not formatted according to DPDK coding style.
Also, drop the comment which is not useful the docbock comment
is already in the rte_hexdump.h
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
v2 - keep BSD style function definition
lib/librte_eal/common/eal_common_hexdump.c | 107 +++++++++------------
1 file changed, 43 insertions(+), 64 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
index 9ca7c511c062..6af818beb3cb 100644
--- a/lib/librte_eal/common/eal_common_hexdump.c
+++ b/lib/librte_eal/common/eal_common_hexdump.c
@@ -10,82 +10,61 @@
#define LINE_LEN 128
-/**************************************************************************//**
-*
-* rte_hexdump - Dump out memory in a special hex dump format.
-*
-* DESCRIPTION
-* Dump out the message buffer in a special hex dump output format with characters
-* printed for each line of 16 hex values.
-*
-* RETURNS: N/A
-*
-* SEE ALSO:
-*/
-
void
-rte_hexdump(FILE *f, const char * title, const void * buf, unsigned int len)
+rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
{
- unsigned int i, out, ofs;
- const unsigned char *data = buf;
- char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
+ unsigned int i, out, ofs;
+ const unsigned char *data = buf;
+ char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
- fprintf(f, "%s at [%p], len=%u\n", (title)? title : " Dump data", data, len);
- ofs = 0;
- while (ofs < len) {
- /* format the line in the buffer, then use printf to output to screen */
- out = snprintf(line, LINE_LEN, "%08X:", ofs);
- for (i = 0; ((ofs + i) < len) && (i < 16); i++)
- out += snprintf(line+out, LINE_LEN - out, " %02X", (data[ofs+i] & 0xff));
- for(; i <= 16; i++)
- out += snprintf(line+out, LINE_LEN - out, " | ");
- for(i = 0; (ofs < len) && (i < 16); i++, ofs++) {
- unsigned char c = data[ofs];
- if ( (c < ' ') || (c > '~'))
- c = '.';
- out += snprintf(line+out, LINE_LEN - out, "%c", c);
- }
- fprintf(f, "%s\n", line);
- }
- fflush(f);
-}
+ fprintf(f, "%s at [%p], len=%u\n",
+ title ? : " Dump data", data, len);
+ ofs = 0;
+ while (ofs < len) {
+ /* format the line in the buffer */
+ out = snprintf(line, LINE_LEN, "%08X:", ofs);
+ for (i = 0; i < 16 && ofs + i < len; i++)
+ out += snprintf(line + out, LINE_LEN - out,
+ " %02X", (data[ofs + i] & 0xff));
+ for (; i <= 16; i++)
+ out += snprintf(line + out, LINE_LEN - out, " | ");
+
+ for (i = 0; ofs < len && i < 16; i++, ofs++) {
+ unsigned char c = data[ofs];
-/**************************************************************************//**
-*
-* rte_memdump - Dump out memory in hex bytes with colons.
-*
-* DESCRIPTION
-* Dump out the message buffer in hex bytes with colons xx:xx:xx:xx:...
-*
-* RETURNS: N/A
-*
-* SEE ALSO:
-*/
+ if (c < ' ' || c > '~')
+ c = '.';
+ out += snprintf(line + out, LINE_LEN - out, "%c", c);
+ }
+ fprintf(f, "%s\n", line);
+ }
+ fflush(f);
+}
void
-rte_memdump(FILE *f, const char * title, const void * buf, unsigned int len)
+rte_memdump(FILE *f, const char *title, const void *buf, unsigned int len)
{
- unsigned int i, out;
- const unsigned char *data = buf;
- char line[LINE_LEN];
+ unsigned int i, out;
+ const unsigned char *data = buf;
+ char line[LINE_LEN];
- if ( title )
- fprintf(f, "%s: ", title);
+ if (title)
+ fprintf(f, "%s: ", title);
- line[0] = '\0';
- for (i = 0, out = 0; i < len; i++) {
- // Make sure we do not overrun the line buffer length.
- if ( out >= (LINE_LEN - 4) ) {
+ line[0] = '\0';
+ for (i = 0, out = 0; i < len; i++) {
+ /* Make sure we do not overrun the line buffer length. */
+ if (out >= LINE_LEN - 4) {
fprintf(f, "%s", line);
out = 0;
line[out] = '\0';
}
- out += snprintf(line+out, LINE_LEN - out, "%02x%s",
- (data[i] & 0xff), ((i+1) < len)? ":" : "");
- }
- if ( out > 0 )
- fprintf(f, "%s", line);
- fprintf(f, "\n");
+ out += snprintf(line + out, LINE_LEN - out, "%02x%s",
+ (data[i] & 0xff), ((i + 1) < len) ? ":" : "");
+ }
+ if (out > 0)
+ fprintf(f, "%s", line);
+ fprintf(f, "\n");
- fflush(f);
+ fflush(f);
}
--
2.17.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH v2 1/2] hexdump: whitespace cleanup
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 1/2] hexdump: whitespace cleanup Stephen Hemminger
@ 2019-04-02 15:23 ` Stephen Hemminger
0 siblings, 0 replies; 16+ messages in thread
From: Stephen Hemminger @ 2019-04-02 15:23 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
The hexdump code obviously came from somewhere else originally.
It is not formatted according to DPDK coding style.
Also, drop the comment which is not useful the docbock comment
is already in the rte_hexdump.h
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
v2 - keep BSD style function definition
lib/librte_eal/common/eal_common_hexdump.c | 107 +++++++++------------
1 file changed, 43 insertions(+), 64 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
index 9ca7c511c062..6af818beb3cb 100644
--- a/lib/librte_eal/common/eal_common_hexdump.c
+++ b/lib/librte_eal/common/eal_common_hexdump.c
@@ -10,82 +10,61 @@
#define LINE_LEN 128
-/**************************************************************************//**
-*
-* rte_hexdump - Dump out memory in a special hex dump format.
-*
-* DESCRIPTION
-* Dump out the message buffer in a special hex dump output format with characters
-* printed for each line of 16 hex values.
-*
-* RETURNS: N/A
-*
-* SEE ALSO:
-*/
-
void
-rte_hexdump(FILE *f, const char * title, const void * buf, unsigned int len)
+rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
{
- unsigned int i, out, ofs;
- const unsigned char *data = buf;
- char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
+ unsigned int i, out, ofs;
+ const unsigned char *data = buf;
+ char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
- fprintf(f, "%s at [%p], len=%u\n", (title)? title : " Dump data", data, len);
- ofs = 0;
- while (ofs < len) {
- /* format the line in the buffer, then use printf to output to screen */
- out = snprintf(line, LINE_LEN, "%08X:", ofs);
- for (i = 0; ((ofs + i) < len) && (i < 16); i++)
- out += snprintf(line+out, LINE_LEN - out, " %02X", (data[ofs+i] & 0xff));
- for(; i <= 16; i++)
- out += snprintf(line+out, LINE_LEN - out, " | ");
- for(i = 0; (ofs < len) && (i < 16); i++, ofs++) {
- unsigned char c = data[ofs];
- if ( (c < ' ') || (c > '~'))
- c = '.';
- out += snprintf(line+out, LINE_LEN - out, "%c", c);
- }
- fprintf(f, "%s\n", line);
- }
- fflush(f);
-}
+ fprintf(f, "%s at [%p], len=%u\n",
+ title ? : " Dump data", data, len);
+ ofs = 0;
+ while (ofs < len) {
+ /* format the line in the buffer */
+ out = snprintf(line, LINE_LEN, "%08X:", ofs);
+ for (i = 0; i < 16 && ofs + i < len; i++)
+ out += snprintf(line + out, LINE_LEN - out,
+ " %02X", (data[ofs + i] & 0xff));
+ for (; i <= 16; i++)
+ out += snprintf(line + out, LINE_LEN - out, " | ");
+
+ for (i = 0; ofs < len && i < 16; i++, ofs++) {
+ unsigned char c = data[ofs];
-/**************************************************************************//**
-*
-* rte_memdump - Dump out memory in hex bytes with colons.
-*
-* DESCRIPTION
-* Dump out the message buffer in hex bytes with colons xx:xx:xx:xx:...
-*
-* RETURNS: N/A
-*
-* SEE ALSO:
-*/
+ if (c < ' ' || c > '~')
+ c = '.';
+ out += snprintf(line + out, LINE_LEN - out, "%c", c);
+ }
+ fprintf(f, "%s\n", line);
+ }
+ fflush(f);
+}
void
-rte_memdump(FILE *f, const char * title, const void * buf, unsigned int len)
+rte_memdump(FILE *f, const char *title, const void *buf, unsigned int len)
{
- unsigned int i, out;
- const unsigned char *data = buf;
- char line[LINE_LEN];
+ unsigned int i, out;
+ const unsigned char *data = buf;
+ char line[LINE_LEN];
- if ( title )
- fprintf(f, "%s: ", title);
+ if (title)
+ fprintf(f, "%s: ", title);
- line[0] = '\0';
- for (i = 0, out = 0; i < len; i++) {
- // Make sure we do not overrun the line buffer length.
- if ( out >= (LINE_LEN - 4) ) {
+ line[0] = '\0';
+ for (i = 0, out = 0; i < len; i++) {
+ /* Make sure we do not overrun the line buffer length. */
+ if (out >= LINE_LEN - 4) {
fprintf(f, "%s", line);
out = 0;
line[out] = '\0';
}
- out += snprintf(line+out, LINE_LEN - out, "%02x%s",
- (data[i] & 0xff), ((i+1) < len)? ":" : "");
- }
- if ( out > 0 )
- fprintf(f, "%s", line);
- fprintf(f, "\n");
+ out += snprintf(line + out, LINE_LEN - out, "%02x%s",
+ (data[i] & 0xff), ((i + 1) < len) ? ":" : "");
+ }
+ if (out > 0)
+ fprintf(f, "%s", line);
+ fprintf(f, "\n");
- fflush(f);
+ fflush(f);
}
--
2.17.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH v2 2/2] hexdump: align output of string
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 1/2] hexdump: whitespace cleanup Stephen Hemminger
@ 2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
2019-04-03 16:36 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Thomas Monjalon
3 siblings, 1 reply; 16+ messages in thread
From: Stephen Hemminger @ 2019-04-02 15:23 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
This fixes the issue where if the length of the output is not
a multiple of 16 the formatting was off.
Before:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37 | | | | | | | | | | | | | ...7
After:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37 | ...7
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/librte_eal/common/eal_common_hexdump.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
index 6af818beb3cb..2d2179d4114e 100644
--- a/lib/librte_eal/common/eal_common_hexdump.c
+++ b/lib/librte_eal/common/eal_common_hexdump.c
@@ -23,9 +23,16 @@ rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
while (ofs < len) {
/* format the line in the buffer */
out = snprintf(line, LINE_LEN, "%08X:", ofs);
- for (i = 0; i < 16 && ofs + i < len; i++)
- out += snprintf(line + out, LINE_LEN - out,
+ for (i = 0; i < 16; i++) {
+ if (ofs + i < len)
+ snprintf(line + out, LINE_LEN - out,
" %02X", (data[ofs + i] & 0xff));
+ else
+ strcpy(line + out, " ");
+ out += 3;
+ }
+
+
for (; i <= 16; i++)
out += snprintf(line + out, LINE_LEN - out, " | ");
--
2.17.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [dpdk-dev] [PATCH v2 2/2] hexdump: align output of string
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 2/2] hexdump: align output of string Stephen Hemminger
@ 2019-04-02 15:23 ` Stephen Hemminger
0 siblings, 0 replies; 16+ messages in thread
From: Stephen Hemminger @ 2019-04-02 15:23 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
This fixes the issue where if the length of the output is not
a multiple of 16 the formatting was off.
Before:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37 | | | | | | | | | | | | | ...7
After:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37 | ...7
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/librte_eal/common/eal_common_hexdump.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_hexdump.c b/lib/librte_eal/common/eal_common_hexdump.c
index 6af818beb3cb..2d2179d4114e 100644
--- a/lib/librte_eal/common/eal_common_hexdump.c
+++ b/lib/librte_eal/common/eal_common_hexdump.c
@@ -23,9 +23,16 @@ rte_hexdump(FILE *f, const char *title, const void *buf, unsigned int len)
while (ofs < len) {
/* format the line in the buffer */
out = snprintf(line, LINE_LEN, "%08X:", ofs);
- for (i = 0; i < 16 && ofs + i < len; i++)
- out += snprintf(line + out, LINE_LEN - out,
+ for (i = 0; i < 16; i++) {
+ if (ofs + i < len)
+ snprintf(line + out, LINE_LEN - out,
" %02X", (data[ofs + i] & 0xff));
+ else
+ strcpy(line + out, " ");
+ out += 3;
+ }
+
+
for (; i <= 16; i++)
out += snprintf(line + out, LINE_LEN - out, " | ");
--
2.17.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Stephen Hemminger
` (2 preceding siblings ...)
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 2/2] hexdump: align output of string Stephen Hemminger
@ 2019-04-03 16:36 ` Thomas Monjalon
2019-04-03 16:36 ` Thomas Monjalon
3 siblings, 1 reply; 16+ messages in thread
From: Thomas Monjalon @ 2019-04-03 16:36 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev
02/04/2019 17:23, Stephen Hemminger:
> Minor bugfix and source cleanup
>
> Stephen Hemminger (2):
> hexdump: whitespace cleanup
> hexdump: align output of string
Applied, thanks
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups
2019-04-03 16:36 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Thomas Monjalon
@ 2019-04-03 16:36 ` Thomas Monjalon
0 siblings, 0 replies; 16+ messages in thread
From: Thomas Monjalon @ 2019-04-03 16:36 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev
02/04/2019 17:23, Stephen Hemminger:
> Minor bugfix and source cleanup
>
> Stephen Hemminger (2):
> hexdump: whitespace cleanup
> hexdump: align output of string
Applied, thanks
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2019-04-03 16:36 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-16 15:31 [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Stephen Hemminger
2018-08-16 15:31 ` [dpdk-dev] [PATCH 1/2] hexdump: whitespace cleanup Stephen Hemminger
2018-08-16 16:34 ` Wiles, Keith
2018-08-16 16:59 ` Stephen Hemminger
2018-08-16 16:35 ` Wiles, Keith
2018-08-16 15:31 ` [dpdk-dev] [PATCH 2/2] hexdump: align output of string Stephen Hemminger
2018-08-16 15:50 ` Stephen Hemminger
2018-10-24 23:40 ` [dpdk-dev] [PATCH 0/2] eal: hexcump trivial changes Thomas Monjalon
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 1/2] hexdump: whitespace cleanup Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
2019-04-02 15:23 ` [dpdk-dev] [PATCH v2 2/2] hexdump: align output of string Stephen Hemminger
2019-04-02 15:23 ` Stephen Hemminger
2019-04-03 16:36 ` [dpdk-dev] [PATCH v2 0/2] eal: hexdump cleanups Thomas Monjalon
2019-04-03 16:36 ` Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).