lib/vsprintf.c: add %pa format specifier for phys_addr_t types
Add the %pa format specifier for printing a phys_addr_t type and its derivative types (such as resource_size_t), since the physical address size on some platforms can vary based on build options, regardless of the native integer type. Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org> Cc: Rob Landley <rob@landley.net> Cc: George Spelvin <linux@horizon.com> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Stephen Boyd <sboyd@codeaurora.org> Cc: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
f3cbd435b0
commit
7d7992108d
@@ -1030,6 +1030,7 @@ int kptr_restrict __read_mostly;
|
||||
* N no separator
|
||||
* The maximum supported length is 64 bytes of the input. Consider
|
||||
* to use print_hex_dump() for the larger input.
|
||||
* - 'a' For a phys_addr_t type and its derivative types (passed by reference)
|
||||
*
|
||||
* Note: The difference between 'S' and 'F' is that on ia64 and ppc64
|
||||
* function pointers are really function descriptors, which contain a
|
||||
@@ -1120,6 +1121,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||
return netdev_feature_string(buf, end, ptr, spec);
|
||||
}
|
||||
break;
|
||||
case 'a':
|
||||
spec.flags |= SPECIAL | SMALL | ZEROPAD;
|
||||
spec.field_width = sizeof(phys_addr_t) * 2 + 2;
|
||||
spec.base = 16;
|
||||
return number(buf, end,
|
||||
(unsigned long long) *((phys_addr_t *)ptr), spec);
|
||||
}
|
||||
spec.flags |= SMALL;
|
||||
if (spec.field_width == -1) {
|
||||
|
||||
Reference in New Issue
Block a user