diff options
Diffstat (limited to 'lib/efi_selftest/efi_selftest_console.c')
-rw-r--r-- | lib/efi_selftest/efi_selftest_console.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/efi_selftest/efi_selftest_console.c b/lib/efi_selftest/efi_selftest_console.c index ffd88a1e26..3187e104c4 100644 --- a/lib/efi_selftest/efi_selftest_console.c +++ b/lib/efi_selftest/efi_selftest_console.c @@ -70,6 +70,28 @@ static void printx(u64 p, int prec, u16 **buf) *buf = pos; } +/** + * print_guid() - print GUID to an u16 string + * + * @p: GUID to print + * @buf: pointer to buffer address, + * on return position of terminating zero word + */ +static void print_uuid(u8 *p, u16 **buf) +{ + int i; + const u8 seq[] = { + 3, 2, 1, 0, '-', 5, 4, '-', 7, 6, '-', + 8, 9, 10, 11, 12, 13, 14, 15 }; + + for (i = 0; i < sizeof(seq); ++i) { + if (seq[i] == '-') + *(*buf)++ = u'-'; + else + printx(p[seq[i]], 2, buf); + } +} + /* * Print an unsigned 32bit value as decimal number to an u16 string * @@ -212,6 +234,9 @@ void efi_st_printc(int color, const char *fmt, ...) con_out->output_string(con_out, u); pos = buf; break; + case 'U': + print_uuid(va_arg(args, void*), &pos); + break; default: --c; printx((uintptr_t)va_arg(args, void *), |