Message ID | 1379093833-4949-3-git-send-email-nautsch2@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, Sep 13, 2013 at 2:37 PM, Andre Naujoks <nautsch2@gmail.com> wrote: > To be able to use the hex ascii functions in case sensitive environments > the array hex_asc_upper[] and the needed functions for hex_byte_pack_upper() > are introduced. > > Signed-off-by: Andre Naujoks <nautsch2@gmail.com> > --- > include/linux/kernel.h | 11 +++++++++++ > lib/hexdump.c | 2 ++ > 2 files changed, 13 insertions(+) > > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > index 482ad2d..672ddc4 100644 > --- a/include/linux/kernel.h > +++ b/include/linux/kernel.h > @@ -439,6 +439,17 @@ static inline char *hex_byte_pack(char *buf, u8 byte) > return buf; > } > > +extern const char hex_asc_upper[]; > +#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0f)] > +#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xf0) >> 4] Does using a macro instead of a real function (static inline) generates a better code? -- Thiago Farina -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, 15 Sep 2013 01:27:03 -0300 Thiago Farina <tfransosi@gmail.com> wrote: > On Fri, Sep 13, 2013 at 2:37 PM, Andre Naujoks <nautsch2@gmail.com> wrote: > > To be able to use the hex ascii functions in case sensitive environments > > the array hex_asc_upper[] and the needed functions for hex_byte_pack_upper() > > are introduced. > > > > Signed-off-by: Andre Naujoks <nautsch2@gmail.com> > > --- > > include/linux/kernel.h | 11 +++++++++++ > > lib/hexdump.c | 2 ++ > > 2 files changed, 13 insertions(+) > > > > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > > index 482ad2d..672ddc4 100644 > > --- a/include/linux/kernel.h > > +++ b/include/linux/kernel.h > > @@ -439,6 +439,17 @@ static inline char *hex_byte_pack(char *buf, u8 byte) > > return buf; > > } > > > > +extern const char hex_asc_upper[]; > > +#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0f)] > > +#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xf0) >> 4] > Does using a macro instead of a real function (static inline) > generates a better code? Yes, a static inline would be nicer, but these are derived from hex_asc_lo/hex_asc_hi. If we change one we should change the other and that becomes a separate cleanup. So I think this patch is OK as-is. Also, it would make sense to get all the *hex* stuff out of kernel.h and into a new header file (hexchar.h?). They're a clean self-contained thing and kernel.h is rather a dumping ground. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 09/15/2013 06:35 AM, Andrew Morton wrote: > On Sun, 15 Sep 2013 01:27:03 -0300 Thiago Farina <tfransosi@gmail.com> wrote: > >> On Fri, Sep 13, 2013 at 2:37 PM, Andre Naujoks <nautsch2@gmail.com> wrote: >>> To be able to use the hex ascii functions in case sensitive environments >>> the array hex_asc_upper[] and the needed functions for hex_byte_pack_upper() >>> are introduced. >>> >>> Signed-off-by: Andre Naujoks <nautsch2@gmail.com> >>> --- >>> include/linux/kernel.h | 11 +++++++++++ >>> lib/hexdump.c | 2 ++ >>> 2 files changed, 13 insertions(+) >>> >>> diff --git a/include/linux/kernel.h b/include/linux/kernel.h >>> index 482ad2d..672ddc4 100644 >>> --- a/include/linux/kernel.h >>> +++ b/include/linux/kernel.h >>> @@ -439,6 +439,17 @@ static inline char *hex_byte_pack(char *buf, u8 byte) >>> return buf; >>> } >>> >>> +extern const char hex_asc_upper[]; >>> +#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0f)] >>> +#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xf0) >> 4] >> Does using a macro instead of a real function (static inline) >> generates a better code? > > Yes, a static inline would be nicer, but these are derived from > hex_asc_lo/hex_asc_hi. If we change one we should change the other > and that becomes a separate cleanup. So I think this patch is > OK as-is. Is this an Acked-by? > Also, it would make sense to get all the *hex* stuff out of kernel.h > and into a new header file (hexchar.h?). They're a clean > self-contained thing and kernel.h is rather a dumping ground. Who is taking this series? Marc
On 19.09.2013 11:38, Marc Kleine-Budde wrote: > On 09/15/2013 06:35 AM, Andrew Morton wrote: >> On Sun, 15 Sep 2013 01:27:03 -0300 Thiago Farina <tfransosi@gmail.com> wrote: >> >>> On Fri, Sep 13, 2013 at 2:37 PM, Andre Naujoks <nautsch2@gmail.com> wrote: >>>> To be able to use the hex ascii functions in case sensitive environments >>>> the array hex_asc_upper[] and the needed functions for hex_byte_pack_upper() >>>> are introduced. >>>> >>>> Signed-off-by: Andre Naujoks <nautsch2@gmail.com> >>>> --- >>>> include/linux/kernel.h | 11 +++++++++++ >>>> lib/hexdump.c | 2 ++ >>>> 2 files changed, 13 insertions(+) >>>> >>>> diff --git a/include/linux/kernel.h b/include/linux/kernel.h >>>> index 482ad2d..672ddc4 100644 >>>> --- a/include/linux/kernel.h >>>> +++ b/include/linux/kernel.h >>>> @@ -439,6 +439,17 @@ static inline char *hex_byte_pack(char *buf, u8 byte) >>>> return buf; >>>> } >>>> >>>> +extern const char hex_asc_upper[]; >>>> +#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0f)] >>>> +#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xf0) >> 4] >>> Does using a macro instead of a real function (static inline) >>> generates a better code? >> >> Yes, a static inline would be nicer, but these are derived from >> hex_asc_lo/hex_asc_hi. If we change one we should change the other >> and that becomes a separate cleanup. So I think this patch is >> OK as-is. > > Is this an Acked-by? > >> Also, it would make sense to get all the *hex* stuff out of kernel.h >> and into a new header file (hexchar.h?). They're a clean >> self-contained thing and kernel.h is rather a dumping ground. > > Who is taking this series? Andre suggested that Dave Miller could take these three patches for 3.12 as they are mainly network fixes: http://marc.info/?l=linux-can&m=137909384116115&w=2 Regards, Oliver -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 482ad2d..672ddc4 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -439,6 +439,17 @@ static inline char *hex_byte_pack(char *buf, u8 byte) return buf; } +extern const char hex_asc_upper[]; +#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0f)] +#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xf0) >> 4] + +static inline char *hex_byte_pack_upper(char *buf, u8 byte) +{ + *buf++ = hex_asc_upper_hi(byte); + *buf++ = hex_asc_upper_lo(byte); + return buf; +} + static inline char * __deprecated pack_hex_byte(char *buf, u8 byte) { return hex_byte_pack(buf, byte); diff --git a/lib/hexdump.c b/lib/hexdump.c index 3f0494c..8499c81 100644 --- a/lib/hexdump.c +++ b/lib/hexdump.c @@ -14,6 +14,8 @@ const char hex_asc[] = "0123456789abcdef"; EXPORT_SYMBOL(hex_asc); +const char hex_asc_upper[] = "0123456789ABCDEF"; +EXPORT_SYMBOL(hex_asc_upper); /** * hex_to_bin - convert a hex digit to its real value
To be able to use the hex ascii functions in case sensitive environments the array hex_asc_upper[] and the needed functions for hex_byte_pack_upper() are introduced. Signed-off-by: Andre Naujoks <nautsch2@gmail.com> --- include/linux/kernel.h | 11 +++++++++++ lib/hexdump.c | 2 ++ 2 files changed, 13 insertions(+)