Reuse the string of hexadecimal numbers to simplify printnum implementation --- tools/firmware/hvmloader/util.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index d5cd277..741b9c2 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -315,23 +315,15 @@ cpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) : "0" (idx) ); } +static const char hex_digits[] = "0123456789abcdef"; + /* Write a two-character hex representation of ''byte'' to digits[]. Pre-condition: sizeof(digits) >= 2 */ void byte_to_hex(char *digits, uint8_t byte) { - uint8_t nybbel = byte >> 4; - - if ( nybbel > 9 ) - digits[0] = ''a'' + nybbel-10; - else - digits[0] = ''0'' + nybbel; - - nybbel = byte & 0x0f; - if ( nybbel > 9 ) - digits[1] = ''a'' + nybbel-10; - else - digits[1] = ''0'' + nybbel; + digits[0] = hex_digits[byte >> 4]; + digits[1] = hex_digits[byte & 0x0f]; } /* Convert an array of 16 unsigned bytes to a DCE/OSF formatted UUID @@ -518,13 +510,13 @@ void pci_write(uint32_t devfn, uint32_t reg, uint32_t len, uint32_t val) } } -static char *printnum(char *p, unsigned long num, int base) +static char *printnum(char *p, unsigned long num, unsigned base) { unsigned long n; if ( (n = num/base) > 0 ) p = printnum(p, n, base); - *p++ = "0123456789abcdef"[(int)(num % base)]; + *p++ = hex_digits[num % base]; *p = ''\0''; return p; } -- 1.7.9.5
Needs a signed-off-by line, but you can also add my: Acked-by: Keir Fraser <keir@xen.org> When you resubmit. I don''t know why my reply is mangled as below. -- Keir On 14/02/2013 13:09, "Frediano Ziglio" <frediano.ziglio@citrix.com> wrote:>Reuse the string of hexadecimal numbers to simplify printnum> implementation--- tools/firmware/hvmloader/util.c | 20> ++++++--------------1 file changed, 6 insertions(+), 14 deletions(-) diff> --git a/tools/firmware/hvmloader/util.c > b/tools/firmware/hvmloader/util.cindex d5cd277..741b9c2 100644 ---> a/tools/firmware/hvmloader/util.c+++ b/tools/firmware/hvmloader/util.c @@> -315,23 +315,15 @@ cpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t > *ecx, uint32_t *edx): "0" (idx) ); } +static const char> hex_digits[] = "0123456789abcdef";+ /* Write a two-character hex> representation of ''byte'' to digits[].Pre-condition: sizeof(digits) >= 2> */void byte_to_hex(char *digits, uint8_t byte) { - uint8_t nybbel > byte >> 4; - - if ( nybbel > 9 ) - digits[0] = ''a'' + nybbel-10; -> else- digits[0] = ''0'' + nybbel; - - nybbel = byte & 0x0f; - if (> nybbel > 9 )- digits[1] = ''a'' + nybbel-10; - else -> digits[1] = ''0'' + nybbel;+ digits[0] = hex_digits[byte >> 4]; +> digits[1] = hex_digits[byte & 0x0f];} /* Convert an array of 16 unsigned> bytes to a DCE/OSF formatted UUID@@ -518,13 +510,13 @@ void> pci_write(uint32_t devfn, uint32_t reg, uint32_t len, uint32_t val)} }>-static char *printnum(char *p, unsigned long num, int base) +static char> *printnum(char *p, unsigned long num, unsigned base){ unsigned long n;>if ( (n = num/base) > 0 ) p = printnum(p, n, base); - *p++ > "0123456789abcdef"[(int)(num % base)]; + *p++ = hex_digits[num % base];> *p = ''\0'';return p; } -- 1.7.9.5
Reuse the string of hexadecimal numbers to simplify printnum implementation Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com> Acked-by: Keir Fraser <keir@xen.org> --- tools/firmware/hvmloader/util.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index d5cd277..741b9c2 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -315,23 +315,15 @@ cpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) : "0" (idx) ); } +static const char hex_digits[] = "0123456789abcdef"; + /* Write a two-character hex representation of ''byte'' to digits[]. Pre-condition: sizeof(digits) >= 2 */ void byte_to_hex(char *digits, uint8_t byte) { - uint8_t nybbel = byte >> 4; - - if ( nybbel > 9 ) - digits[0] = ''a'' + nybbel-10; - else - digits[0] = ''0'' + nybbel; - - nybbel = byte & 0x0f; - if ( nybbel > 9 ) - digits[1] = ''a'' + nybbel-10; - else - digits[1] = ''0'' + nybbel; + digits[0] = hex_digits[byte >> 4]; + digits[1] = hex_digits[byte & 0x0f]; } /* Convert an array of 16 unsigned bytes to a DCE/OSF formatted UUID @@ -518,13 +510,13 @@ void pci_write(uint32_t devfn, uint32_t reg, uint32_t len, uint32_t val) } } -static char *printnum(char *p, unsigned long num, int base) +static char *printnum(char *p, unsigned long num, unsigned base) { unsigned long n; if ( (n = num/base) > 0 ) p = printnum(p, n, base); - *p++ = "0123456789abcdef"[(int)(num % base)]; + *p++ = hex_digits[num % base]; *p = ''\0''; return p; } -- 1.7.9.5
On Thu, 2013-02-14 at 13:54 +0000, Frediano Ziglio wrote:> Reuse the string of hexadecimal numbers to simplify printnum implementation > > Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com> > Acked-by: Keir Fraser <keir@xen.org>Applied.