From patchwork Wed Aug 9 23:14:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Clark X-Patchwork-Id: 800029 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LVpG6QVP"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3xSRxF3lj7z9s4q for ; Thu, 10 Aug 2017 09:17:05 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 4530EC21C4E; Wed, 9 Aug 2017 23:15:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 09427C21D7D; Wed, 9 Aug 2017 23:15:36 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id BCF73C21C26; Wed, 9 Aug 2017 23:15:11 +0000 (UTC) Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by lists.denx.de (Postfix) with ESMTPS id AF468C21D9E for ; Wed, 9 Aug 2017 23:15:07 +0000 (UTC) Received: by mail-qk0-f195.google.com with SMTP id d145so7125182qkc.0 for ; Wed, 09 Aug 2017 16:15:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qxsZuDEPPDzS6t2imh1y0tIpypcXIKtJ47rkYhD6xes=; b=LVpG6QVPO5kPLECNS6bGpQezyje0h+S/rrF6E8emTsPlaUDPAppjbjaSb2KY/B2m5K bYlFY1arZx9UO0Nl4EwkkQZMiJ286t9+7UXZSHmQcYjkN0qytyp/2v/tdJ9KCP/TRnjD Fft9nzv0nYxiL6bp+v4PXuxOLJHsTKL76XjayCnxSwu5OKluQYMW5XIgItJ1soEp7Fc9 GB96+RYevqpnNSAEHa8jRCjMs81MQJz1FUAVCFWDB/JnxWW8LAqXleHZIr0nbMXzoR6u CgG3kK1SvkKLgPK2I5mXrSBWrTw8bVSraAZ/arUDjh/HYh4tpcYrjrH/JyLpsrdi03tb MzXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qxsZuDEPPDzS6t2imh1y0tIpypcXIKtJ47rkYhD6xes=; b=dfkxNqKhS3SJdlHyTvCXozvzxdCDxDGcYb8tfjMReJvhEfGCxd2qjuoLAe9iG0rNYr ThUrsvCGoxtNozNQrPUIrdkxhrDSI+mtZCVuDgaZWyaRQfsguXjtje2GggR3ohJrr305 YYEFj6la9bZ2kb2nwRCPstTYkaFtF/mVAgzYabwuDBrurw9XNs8wqfB+kYyMn+ZhC40I f6/RySlae6nllXFAgshdPclAfKBC7y3BCdZYgfzTs8MUj0oygdZ189OmYfpIzido82f3 ivRqpzQ/fGzVO/2HF0RtHGV3su3VDkXC+cscnXshYoqcbmudh78IGfvnRoTp2UMP//1r l1mQ== X-Gm-Message-State: AHYfb5i3q095JfrEW5baZ4WKpFRI38u0yA+68JZH9m7f9cQjfYmN7yrY OLxv4cfMbpJnSi3hxrA= X-Received: by 10.55.165.65 with SMTP id o62mr11796460qke.347.1502320506391; Wed, 09 Aug 2017 16:15:06 -0700 (PDT) Received: from localhost ([2601:184:4780:aac0:25f8:dd96:a084:785a]) by smtp.gmail.com with ESMTPSA id q15sm2739803qkl.26.2017.08.09.16.15.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 09 Aug 2017 16:15:05 -0700 (PDT) From: Rob Clark To: U-Boot Mailing List Date: Wed, 9 Aug 2017 19:14:34 -0400 Message-Id: <20170809231441.22691-5-robdclark@gmail.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170809231441.22691-1-robdclark@gmail.com> References: <20170809231441.22691-1-robdclark@gmail.com> Cc: Stefan Roese Subject: [U-Boot] [PATCH 4/5] vsprintf.c: add GUID printing X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" This works (roughly) the same way as linux's, but we currently always print lower-case (ie. we just keep %pUB and %pUL for compat with linux), mostly just because that is what uuid_bin_to_str() supports. %pUb: 01020304-0506-0708-090a-0b0c0d0e0f10 %pUl: 04030201-0605-0807-090a-0b0c0d0e0f10 It will be used by a later efi_loader paths for efi variables and for device-path-to-text protocol, and also quite useful for debug prints of protocol GUIDs. Signed-off-by: Rob Clark Tested-by: Heinrich Schuchardt --- examples/api/Makefile | 1 + include/config_fallbacks.h | 1 + lib/vsprintf.c | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/examples/api/Makefile b/examples/api/Makefile index 87c15d0f68..899527267d 100644 --- a/examples/api/Makefile +++ b/examples/api/Makefile @@ -35,6 +35,7 @@ EXT_COBJ-y += lib/string.o EXT_COBJ-y += lib/time.o EXT_COBJ-y += lib/vsprintf.o EXT_COBJ-y += lib/charset.o +EXT_COBJ-$(CONFIG_LIB_UUID) += lib/uuid.o EXT_SOBJ-$(CONFIG_PPC) += arch/powerpc/lib/ppcstring.o ifeq ($(ARCH),arm) EXT_SOBJ-$(CONFIG_USE_ARCH_MEMSET) += arch/arm/lib/memset.o diff --git a/include/config_fallbacks.h b/include/config_fallbacks.h index 961a83d758..56b9de09f2 100644 --- a/include/config_fallbacks.h +++ b/include/config_fallbacks.h @@ -57,6 +57,7 @@ #if (CONFIG_IS_ENABLED(PARTITION_UUIDS) || \ CONFIG_IS_ENABLED(EFI_PARTITION) || \ + CONFIG_IS_ENABLED(EFI_LOADER) || \ defined(CONFIG_RANDOM_UUID) || \ defined(CONFIG_CMD_UUID) || \ defined(CONFIG_BOOTP_PXE)) && \ diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 0678b49b01..71a995dee0 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -18,6 +18,7 @@ #include #include +#include #include #define noinline __attribute__((noinline)) @@ -366,6 +367,40 @@ static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width, } #endif +#ifdef CONFIG_LIB_UUID +/* + * This works (roughly) the same way as linux's, but we currently always + * print lower-case (ie. we just keep %pUB and %pUL for compat with linux), + * mostly just because that is what uuid_bin_to_str() supports. + * + * %pUb: 01020304-0506-0708-090a-0b0c0d0e0f10 + * %pUl: 04030201-0605-0807-090a-0b0c0d0e0f10 + */ +static char *uuid_string(char *buf, char *end, u8 *addr, int field_width, + int precision, int flags, const char *fmt) +{ + char uuid[UUID_STR_LEN + 1]; + int str_format = UUID_STR_FORMAT_STD; + + switch (*(++fmt)) { + case 'L': + case 'l': + str_format = UUID_STR_FORMAT_GUID; + break; + case 'B': + case 'b': + /* this is the default */ + break; + default: + break; + } + + uuid_bin_to_str(addr, uuid, str_format); + + return string(buf, end, uuid, field_width, precision, flags); +} +#endif + /* * Show a '%p' thing. A kernel extension is that the '%p' is followed * by an extra set of alphanumeric characters that are extended format @@ -399,8 +434,8 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, flags); #endif -#ifdef CONFIG_CMD_NET switch (*fmt) { +#ifdef CONFIG_CMD_NET case 'a': flags |= SPECIAL | ZEROPAD; @@ -430,8 +465,15 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, precision, flags); flags &= ~SPECIAL; break; - } #endif +#ifdef CONFIG_LIB_UUID + case 'U': + return uuid_string(buf, end, ptr, field_width, precision, + flags, fmt); +#endif + default: + break; + } flags |= SMALL; if (field_width == -1) { field_width = 2*sizeof(void *);