diff options
Diffstat (limited to 'lib/vsprintf.c')
-rw-r--r-- | lib/vsprintf.c | 24 |
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 | } |
121 | EXPORT_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 | ||
410 | struct printf_spec { | 411 | struct 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 | ||
419 | static char *number(char *buf, char *end, unsigned long long num, | 420 | static 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 { |