All of lore.kernel.org
 help / color / mirror / Atom feed
From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: u-boot@lists.denx.de
Subject: [PATCH v8 06/18] efi_loader: add efi_create_indexed_name()
Date: Fri, 13 Nov 2020 13:14:59 +0900	[thread overview]
Message-ID: <20201113041511.48207-7-takahiro.akashi@linaro.org> (raw)
In-Reply-To: <20201113041511.48207-1-takahiro.akashi@linaro.org>

This function will be used from several places in UEFI subsystem
to generate some specific form of utf-16 variable name.
For example, L"Capsule0001"

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
---
 include/efi_loader.h       |  3 +++
 lib/efi_loader/efi_setup.c | 30 ++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/include/efi_loader.h b/include/efi_loader.h
index 7eea5566fdc9..6865a4847d53 100644
--- a/include/efi_loader.h
+++ b/include/efi_loader.h
@@ -804,6 +804,9 @@ bool efi_image_parse(void *efi, size_t len, struct efi_image_regions **regp,
 /* runtime implementation of memcpy() */
 void efi_memcpy_runtime(void *dest, const void *src, size_t n);
 
+/* commonly used helper function */
+u16 *efi_create_indexed_name(u16 *buffer, const u16 *name, unsigned int index);
+
 #else /* CONFIG_IS_ENABLED(EFI_LOADER) */
 
 /* Without CONFIG_EFI_LOADER we don't have a runtime section, stub it out */
diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
index 45226c5c1a53..6346eda771d0 100644
--- a/lib/efi_loader/efi_setup.c
+++ b/lib/efi_loader/efi_setup.c
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <charset.h>
 #include <bootm.h>
 #include <efi_loader.h>
 #include <efi_variable.h>
@@ -235,3 +236,32 @@ out:
 	efi_obj_list_initialized = ret;
 	return ret;
 }
+
+/**
+ * efi_create_indexed_name - create a string name with an index
+ * @buffer:	Buffer
+ * @name:	Name string
+ * @index:	Index
+ *
+ * Create a utf-16 string with @name, appending @index.
+ * For example, L"Capsule0001"
+ * This function is expected to be called only from several places
+ * in EFI subsystem. A caller should ensure that the buffer have
+ * enough space for a resulting string, including L"\0".
+ * No strict check against the length will be done here.
+ *
+ * Return: A pointer to the next position after the created string
+ *		in @buffer, or NULL otherwise
+ */
+u16 *efi_create_indexed_name(u16 *buffer, const u16 *name, unsigned int index)
+{
+	u16 *p;
+	char index_buf[5];
+
+	u16_strcpy(buffer, name);
+	p = buffer + utf16_strnlen(name, SIZE_MAX);
+	sprintf(index_buf, "%04X", index);
+	utf8_utf16_strcpy(&p, index_buf);
+
+	return p;
+}
-- 
2.28.0

  parent reply	other threads:[~2020-11-13  4:14 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-13  4:14 [PATCH v8 00/18] efi_loader: add capsule update support AKASHI Takahiro
2020-11-13  4:14 ` [PATCH v8 01/18] dfu: rename dfu_tftp_write() to dfu_write_by_name() AKASHI Takahiro
2020-11-13  4:14 ` [PATCH v8 02/18] dfu: modify an argument type for an address AKASHI Takahiro
2020-11-13  4:14 ` [PATCH v8 03/18] common: update: add a generic interface for FIT image AKASHI Takahiro
2020-11-13  4:14 ` [PATCH v8 04/18] dfu: export dfu_list AKASHI Takahiro
2020-11-13  4:14 ` [PATCH v8 05/18] efi_loader: add option to initialise EFI subsystem early AKASHI Takahiro
2020-11-13  4:14 ` AKASHI Takahiro [this message]
2020-11-13  4:15 ` [PATCH v8 07/18] efi_loader: define UpdateCapsule api AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 08/18] efi_loader: capsule: add capsule_on_disk support AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 09/18] efi_loader: capsule: add memory range capsule definitions AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 10/18] efi_loader: capsule: support firmware update AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 11/18] efi_loader: add firmware management protocol for FIT image AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 12/18] dfu: add dfu_write_by_alt() AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 13/18] efi_loader: add firmware management protocol for raw image AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 14/18] cmd: add "efidebug capsule" command AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 15/18] tools: add mkeficapsule command for UEFI capsule update AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 16/18] test/py: efi_capsule: test for FIT image capsule AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 17/18] test/py: efi_capsule: test for raw " AKASHI Takahiro
2020-11-13  4:15 ` [PATCH v8 18/18] sandbox: enable capsule update for testing AKASHI Takahiro
2020-11-13  7:18 ` [PATCH v8 00/18] efi_loader: add capsule update support Heinrich Schuchardt
2020-11-16  0:37   ` AKASHI Takahiro
2020-11-16 16:10     ` Tom Rini
2020-11-17  0:16       ` AKASHI Takahiro
2020-11-17  0:36         ` Tom Rini
2020-11-17  0:44           ` AKASHI Takahiro
2020-11-17  1:49             ` [BUG] Hang shortly after loading FDT when booting on RK3399 Jean Lucas
2020-11-17 12:43               ` Alper Nebi Yasak
2020-11-17 14:11                 ` Peter Robinson
2020-11-17 14:42                   ` Alper Nebi Yasak
2020-11-17 18:28                     ` Jean Lucas
2020-11-19  5:45                       ` Jean Lucas
2020-11-19  6:08                         ` Jean Lucas
2021-01-28 22:28                         ` Jan Palus
2021-01-29  0:56                           ` Jan Palus
2021-01-29 18:47                             ` Jan Palus
2020-11-17 23:50             ` [PATCH v8 00/18] efi_loader: add capsule update support AKASHI Takahiro
2020-11-17 23:59               ` Tom Rini
2020-11-18  0:26                 ` AKASHI Takahiro
2020-11-18  3:02                   ` Tom Rini
2020-11-18  3:11                     ` AKASHI Takahiro
2020-11-18 14:49                       ` Tom Rini
2020-11-19  0:51                         ` AKASHI Takahiro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201113041511.48207-7-takahiro.akashi@linaro.org \
    --to=takahiro.akashi@linaro.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.