aboutsummaryrefslogtreecommitdiffstats
path: root/lib/vsprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vsprintf.c')
-rw-r--r--lib/vsprintf.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 0d461c7c14db..46d34b0b74a8 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -118,6 +118,7 @@ long long simple_strtoll(const char *cp, char **endp, unsigned int base)
118 118
119 return simple_strtoull(cp, endp, base); 119 return simple_strtoull(cp, endp, base);
120} 120}
121EXPORT_SYMBOL(simple_strtoll);
121 122
122/** 123/**
123 * strict_strtoul - convert a string to an unsigned long strictly 124 * strict_strtoul - convert a string to an unsigned long strictly
@@ -408,12 +409,12 @@ enum format_type {
408}; 409};
409 410
410struct printf_spec { 411struct printf_spec {
411 u16 type; 412 u8 type; /* format_type enum */
412 s16 field_width; /* width of output field */
413 u8 flags; /* flags to number() */ 413 u8 flags; /* flags to number() */
414 u8 base; 414 u8 base; /* number base, 8, 10 or 16 only */
415 s8 precision; /* # of digits/chars */ 415 u8 qualifier; /* number qualifier, one of 'hHlLtzZ' */
416 u8 qualifier; 416 s16 field_width; /* width of output field */
417 s16 precision; /* # of digits/chars */
417}; 418};
418 419
419static char *number(char *buf, char *end, unsigned long long num, 420static char *number(char *buf, char *end, unsigned long long num,
@@ -609,6 +610,12 @@ static char *resource_string(char *buf, char *end, struct resource *res,
609 .precision = -1, 610 .precision = -1,
610 .flags = SPECIAL | SMALL | ZEROPAD, 611 .flags = SPECIAL | SMALL | ZEROPAD,
611 }; 612 };
613 static const struct printf_spec bus_spec = {
614 .base = 16,
615 .field_width = 2,
616 .precision = -1,
617 .flags = SMALL | ZEROPAD,
618 };
612 static const struct printf_spec dec_spec = { 619 static const struct printf_spec dec_spec = {
613 .base = 10, 620 .base = 10,
614 .precision = -1, 621 .precision = -1,
@@ -629,7 +636,7 @@ static char *resource_string(char *buf, char *end, struct resource *res,
629 * 64-bit res (sizeof==8): 20 chars in dec, 18 in hex ("0x" + 16) */ 636 * 64-bit res (sizeof==8): 20 chars in dec, 18 in hex ("0x" + 16) */
630#define RSRC_BUF_SIZE ((2 * sizeof(resource_size_t)) + 4) 637#define RSRC_BUF_SIZE ((2 * sizeof(resource_size_t)) + 4)
631#define FLAG_BUF_SIZE (2 * sizeof(res->flags)) 638#define FLAG_BUF_SIZE (2 * sizeof(res->flags))
632#define DECODED_BUF_SIZE sizeof("[mem - 64bit pref disabled]") 639#define DECODED_BUF_SIZE sizeof("[mem - 64bit pref window disabled]")
633#define RAW_BUF_SIZE sizeof("[mem - flags 0x]") 640#define RAW_BUF_SIZE sizeof("[mem - flags 0x]")
634 char sym[max(2*RSRC_BUF_SIZE + DECODED_BUF_SIZE, 641 char sym[max(2*RSRC_BUF_SIZE + DECODED_BUF_SIZE,
635 2*RSRC_BUF_SIZE + FLAG_BUF_SIZE + RAW_BUF_SIZE)]; 642 2*RSRC_BUF_SIZE + FLAG_BUF_SIZE + RAW_BUF_SIZE)];
@@ -651,6 +658,9 @@ static char *resource_string(char *buf, char *end, struct resource *res,
651 } else if (res->flags & IORESOURCE_DMA) { 658 } else if (res->flags & IORESOURCE_DMA) {
652 p = string(p, pend, "dma ", str_spec); 659 p = string(p, pend, "dma ", str_spec);
653 specp = &dec_spec; 660 specp = &dec_spec;
661 } else if (res->flags & IORESOURCE_BUS) {
662 p = string(p, pend, "bus ", str_spec);
663 specp = &bus_spec;
654 } else { 664 } else {
655 p = string(p, pend, "??? ", str_spec); 665 p = string(p, pend, "??? ", str_spec);
656 specp = &mem_spec; 666 specp = &mem_spec;
@@ -666,6 +676,8 @@ static char *resource_string(char *buf, char *end, struct resource *res,
666 p = string(p, pend, " 64bit", str_spec); 676 p = string(p, pend, " 64bit", str_spec);
667 if (res->flags & IORESOURCE_PREFETCH) 677 if (res->flags & IORESOURCE_PREFETCH)
668 p = string(p, pend, " pref", str_spec); 678 p = string(p, pend, " pref", str_spec);
679 if (res->flags & IORESOURCE_WINDOW)
680 p = string(p, pend, " window", str_spec);
669 if (res->flags & IORESOURCE_DISABLED) 681 if (res->flags & IORESOURCE_DISABLED)
670 p = string(p, pend, " disabled", str_spec); 682 p = string(p, pend, " disabled", str_spec);
671 } else { 683 } else {