* [PATCH 01/12] lib: create common ascii hex array
@ 2008-05-12 19:05 Harvey Harrison
2008-05-12 20:41 ` Paul Mundt
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Harvey Harrison @ 2008-05-12 19:05 UTC (permalink / raw)
To: Andrew Morton
Cc: LKML, James Bottomley, linux-scsi, Bartlomiej Zolnierkiewicz,
linux-ide, linux-netdev, David Miller, Jeff Garzik, Ingo Molnar,
Jason Wessel, David Howells, ralf, Paul Mundt, Paul Mackerras
Add a common hex array in hexdump.c so everyone can use it.
Add a common hi/lo helper to avoid the shifting masking that is
done to get the upper and lower nibbles of a byte value.
Pull the pack_hex_byte helper from kgdb as it is opencoded many
places in the tree that will be consolidated.
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
Andrew, please drop the two patches in -mm titled:
lib-add-ascii-hex-helper-functions.patch
lib-add-ascii-hex-helper-functions-update.patch
As this patch series drops the _u8/u16/u32/u64 helpers that were close
the simple_strtol etc. The remaining changes are all pretty trivial
and provide a nice cleanup.
arch/sh/kernel/kgdb_stub.c | 8 --------
drivers/pnp/support.c | 8 ++++----
include/linux/kernel.h | 12 +++++++++++-
kernel/kgdb.c | 8 --------
lib/hexdump.c | 7 +++++--
5 files changed, 20 insertions(+), 23 deletions(-)
diff --git a/arch/sh/kernel/kgdb_stub.c b/arch/sh/kernel/kgdb_stub.c
index d453c3a..832641b 100644
--- a/arch/sh/kernel/kgdb_stub.c
+++ b/arch/sh/kernel/kgdb_stub.c
@@ -330,14 +330,6 @@ static char *ebin_to_mem(const char *buf, char *mem, int count)
return mem;
}
-/* Pack a hex byte */
-static char *pack_hex_byte(char *pkt, int byte)
-{
- *pkt++ = hexchars[(byte >> 4) & 0xf];
- *pkt++ = hexchars[(byte & 0xf)];
- return pkt;
-}
-
/* Scan for the start char '$', read the packet and check the checksum */
static void get_packet(char *buffer, int buflen)
{
diff --git a/drivers/pnp/support.c b/drivers/pnp/support.c
index 3eba85e..95b076c 100644
--- a/drivers/pnp/support.c
+++ b/drivers/pnp/support.c
@@ -45,10 +45,10 @@ void pnp_eisa_id_to_string(u32 id, char *str)
str[0] = 'A' + ((id >> 26) & 0x3f) - 1;
str[1] = 'A' + ((id >> 21) & 0x1f) - 1;
str[2] = 'A' + ((id >> 16) & 0x1f) - 1;
- str[3] = hex_asc((id >> 12) & 0xf);
- str[4] = hex_asc((id >> 8) & 0xf);
- str[5] = hex_asc((id >> 4) & 0xf);
- str[6] = hex_asc((id >> 0) & 0xf);
+ str[3] = hex_asc_hi(id >> 8);
+ str[4] = hex_asc_lo(id >> 8);
+ str[5] = hex_asc_hi(id);
+ str[6] = hex_asc_lo(id);
str[7] = '\0';
}
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 4d46e29..792bf0a 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -276,7 +276,17 @@ extern void print_hex_dump(const char *level, const char *prefix_str,
const void *buf, size_t len, bool ascii);
extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
const void *buf, size_t len);
-#define hex_asc(x) "0123456789abcdef"[x]
+
+extern const char hex_asc[];
+#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
+#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
+
+static inline char *pack_hex_byte(char *buf, u8 byte)
+{
+ *buf++ = hex_asc_hi(byte);
+ *buf++ = hex_asc_lo(byte);
+ return buf;
+}
#define pr_emerg(fmt, arg...) \
printk(KERN_EMERG fmt, ##arg)
diff --git a/kernel/kgdb.c b/kernel/kgdb.c
index 39e31a0..14787de 100644
--- a/kernel/kgdb.c
+++ b/kernel/kgdb.c
@@ -346,14 +346,6 @@ static void put_packet(char *buffer)
}
}
-static char *pack_hex_byte(char *pkt, u8 byte)
-{
- *pkt++ = hexchars[byte >> 4];
- *pkt++ = hexchars[byte & 0xf];
-
- return pkt;
-}
-
/*
* Convert the memory pointed to by mem into hex, placing result in buf.
* Return a pointer to the last char put in buf (null). May return an error.
diff --git a/lib/hexdump.c b/lib/hexdump.c
index 3435465..f07c0db 100644
--- a/lib/hexdump.c
+++ b/lib/hexdump.c
@@ -12,6 +12,9 @@
#include <linux/kernel.h>
#include <linux/module.h>
+const char hex_asc[] = "0123456789abcdef";
+EXPORT_SYMBOL(hex_asc);
+
/**
* hex_dump_to_buffer - convert a blob of data to "hex ASCII" in memory
* @buf: data blob to dump
@@ -93,8 +96,8 @@ void hex_dump_to_buffer(const void *buf, size_t len, int rowsize,
for (j = 0; (j < rowsize) && (j < len) && (lx + 4) < linebuflen;
j++) {
ch = ptr[j];
- linebuf[lx++] = hex_asc(ch >> 4);
- linebuf[lx++] = hex_asc(ch & 0x0f);
+ linebuf[lx++] = hex_asc_hi(ch);
+ linebuf[lx++] = hex_asc_lo(ch);
linebuf[lx++] = ' ';
}
ascii_column = 3 * rowsize + 2;
--
1.5.5.1.404.g981f6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 01/12] lib: create common ascii hex array
2008-05-12 19:05 [PATCH 01/12] lib: create common ascii hex array Harvey Harrison
@ 2008-05-12 20:41 ` Paul Mundt
2008-05-13 9:55 ` Ilpo Järvinen
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Paul Mundt @ 2008-05-12 20:41 UTC (permalink / raw)
To: Harvey Harrison
Cc: Andrew Morton, LKML, James Bottomley, linux-scsi,
Bartlomiej Zolnierkiewicz, linux-ide, linux-netdev, David Miller,
Jeff Garzik, Ingo Molnar, Jason Wessel, David Howells, ralf,
Paul Mackerras
On Mon, May 12, 2008 at 12:05:34PM -0700, Harvey Harrison wrote:
> Add a common hex array in hexdump.c so everyone can use it.
>
> Add a common hi/lo helper to avoid the shifting masking that is
> done to get the upper and lower nibbles of a byte value.
>
> Pull the pack_hex_byte helper from kgdb as it is opencoded many
> places in the tree that will be consolidated.
>
> Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Acked-by: Paul Mundt <lethal@linux-sh.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 01/12] lib: create common ascii hex array
2008-05-12 19:05 [PATCH 01/12] lib: create common ascii hex array Harvey Harrison
2008-05-12 20:41 ` Paul Mundt
@ 2008-05-13 9:55 ` Ilpo Järvinen
2008-05-13 16:53 ` Harvey Harrison
2008-05-14 11:26 ` David Howells
2008-05-15 9:51 ` Ralf Baechle
3 siblings, 1 reply; 6+ messages in thread
From: Ilpo Järvinen @ 2008-05-13 9:55 UTC (permalink / raw)
To: Harvey Harrison
Cc: Andrew Morton, LKML, James Bottomley, linux-scsi,
Bartlomiej Zolnierkiewicz, linux-ide, linux-netdev, David Miller,
Jeff Garzik, Ingo Molnar, Jason Wessel, David Howells, ralf,
Paul Mundt, Paul Mackerras
On Mon, 12 May 2008, Harvey Harrison wrote:
> Add a common hex array in hexdump.c so everyone can use it.
>
> Add a common hi/lo helper to avoid the shifting masking that is
> done to get the upper and lower nibbles of a byte value.
>
> Pull the pack_hex_byte helper from kgdb as it is opencoded many
> places in the tree that will be consolidated.
>
> Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
> ---
>
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index 4d46e29..792bf0a 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -276,7 +276,17 @@ extern void print_hex_dump(const char *level, const char *prefix_str,
> const void *buf, size_t len, bool ascii);
> extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
> const void *buf, size_t len);
> -#define hex_asc(x) "0123456789abcdef"[x]
> +
> +extern const char hex_asc[];
> +#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
> +#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
> +
> +static inline char *pack_hex_byte(char *buf, u8 byte)
> +{
> + *buf++ = hex_asc_hi(byte);
> + *buf++ = hex_asc_lo(byte);
> + return buf;
> +}
Any idea how much this will bloat kernel once it has, lets say 100
users? 5k, 10k?
--
i.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 01/12] lib: create common ascii hex array
2008-05-13 9:55 ` Ilpo Järvinen
@ 2008-05-13 16:53 ` Harvey Harrison
0 siblings, 0 replies; 6+ messages in thread
From: Harvey Harrison @ 2008-05-13 16:53 UTC (permalink / raw)
To: Ilpo Järvinen
Cc: Andrew Morton, LKML, James Bottomley, linux-scsi,
Bartlomiej Zolnierkiewicz, linux-ide, linux-netdev, David Miller,
Jeff Garzik, Ingo Molnar, Jason Wessel, David Howells, ralf,
Paul Mundt, Paul Mackerras
On Tue, 2008-05-13 at 12:55 +0300, Ilpo Järvinen wrote:
> On Mon, 12 May 2008, Harvey Harrison wrote:
>
> > Add a common hex array in hexdump.c so everyone can use it.
> >
> > Add a common hi/lo helper to avoid the shifting masking that is
> > done to get the upper and lower nibbles of a byte value.
> >
> > Pull the pack_hex_byte helper from kgdb as it is opencoded many
> > places in the tree that will be consolidated.
> >
> > Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
> > ---
> >
> > -#define hex_asc(x) "0123456789abcdef"[x]
> > +
> > +extern const char hex_asc[];
> > +#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
> > +#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
> > +
> > +static inline char *pack_hex_byte(char *buf, u8 byte)
> > +{
> > + *buf++ = hex_asc_hi(byte);
> > + *buf++ = hex_asc_lo(byte);
> > + return buf;
> > +}
>
> Any idea how much this will bloat kernel once it has, lets say 100
> users? 5k, 10k?
>
No more than the existing users do open-coding the same thing all over
the place. If it becomes a problem, this can be out-of-lined, but
the savings are not much.
Harvey
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 01/12] lib: create common ascii hex array
2008-05-12 19:05 [PATCH 01/12] lib: create common ascii hex array Harvey Harrison
2008-05-12 20:41 ` Paul Mundt
2008-05-13 9:55 ` Ilpo Järvinen
@ 2008-05-14 11:26 ` David Howells
2008-05-15 9:51 ` Ralf Baechle
3 siblings, 0 replies; 6+ messages in thread
From: David Howells @ 2008-05-14 11:26 UTC (permalink / raw)
To: Harvey Harrison
Cc: dhowells, Andrew Morton, LKML, James Bottomley, linux-scsi,
Bartlomiej Zolnierkiewicz, linux-ide, linux-netdev, David Miller,
Jeff Garzik, Ingo Molnar, Jason Wessel, ralf, Paul Mundt,
Paul Mackerras
Harvey Harrison <harvey.harrison@gmail.com> wrote:
> Add a common hex array in hexdump.c so everyone can use it.
>
> Add a common hi/lo helper to avoid the shifting masking that is
> done to get the upper and lower nibbles of a byte value.
>
> Pull the pack_hex_byte helper from kgdb as it is opencoded many
> places in the tree that will be consolidated.
>
> Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Acked-by: David Howells <dhowells@redhat.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 01/12] lib: create common ascii hex array
2008-05-12 19:05 [PATCH 01/12] lib: create common ascii hex array Harvey Harrison
` (2 preceding siblings ...)
2008-05-14 11:26 ` David Howells
@ 2008-05-15 9:51 ` Ralf Baechle
3 siblings, 0 replies; 6+ messages in thread
From: Ralf Baechle @ 2008-05-15 9:51 UTC (permalink / raw)
To: Harvey Harrison
Cc: Andrew Morton, LKML, James Bottomley, linux-scsi,
Bartlomiej Zolnierkiewicz, linux-ide, linux-netdev, David Miller,
Jeff Garzik, Ingo Molnar, Jason Wessel, David Howells,
Paul Mundt, Paul Mackerras
On Mon, May 12, 2008 at 12:05:34PM -0700, Harvey Harrison wrote:
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Ralf
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-05-15 9:53 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-12 19:05 [PATCH 01/12] lib: create common ascii hex array Harvey Harrison
2008-05-12 20:41 ` Paul Mundt
2008-05-13 9:55 ` Ilpo Järvinen
2008-05-13 16:53 ` Harvey Harrison
2008-05-14 11:26 ` David Howells
2008-05-15 9:51 ` Ralf Baechle
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).