]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
boot: Add device_path_to_str
authorJan Janssen <medhefgo@web.de>
Sun, 5 Jun 2022 13:31:01 +0000 (15:31 +0200)
committerJan Janssen <medhefgo@web.de>
Wed, 12 Oct 2022 11:19:34 +0000 (13:19 +0200)
src/boot/efi/util.c
src/boot/efi/util.h

index e17a8e18a4cfcfe8828527f8f029149313f67963..5547d288de1b2bb5bc07e17476b4d6696bd7f689 100644 (file)
@@ -769,6 +769,25 @@ EFI_STATUS make_file_device_path(EFI_HANDLE device, const char16_t *file, EFI_DE
         return EFI_SUCCESS;
 }
 
+EFI_STATUS device_path_to_str(const EFI_DEVICE_PATH *dp, char16_t **ret) {
+        EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *dp_to_text;
+        EFI_STATUS err;
+
+        assert(dp);
+        assert(ret);
+
+        err = BS->LocateProtocol(&(EFI_GUID) EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID, NULL, (void **) &dp_to_text);
+        if (err != EFI_SUCCESS)
+                return err;
+
+        char16_t *str = dp_to_text->ConvertDevicePathToText(dp, false, false);
+        if (!str)
+                return EFI_OUT_OF_RESOURCES;
+
+        *ret = str;
+        return EFI_SUCCESS;
+}
+
 #if defined(__i386__) || defined(__x86_64__)
 bool in_hypervisor(void) {
         uint32_t eax, ebx, ecx, edx;
index be79b205a42264956ea88155958345660813f9ca..b33c50f9fc7e27ddf701f3f641d18cd06c4bf432 100644 (file)
@@ -207,6 +207,7 @@ static inline void beep(UINTN beep_count) {}
 
 EFI_STATUS open_volume(EFI_HANDLE device, EFI_FILE **ret_file);
 EFI_STATUS make_file_device_path(EFI_HANDLE device, const char16_t *file, EFI_DEVICE_PATH **ret_dp);
+EFI_STATUS device_path_to_str(const EFI_DEVICE_PATH *dp, char16_t **ret);
 
 #if defined(__i386__) || defined(__x86_64__)
 bool in_hypervisor(void);