summaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efi_debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/efi/efi_debug.c')
-rw-r--r--src/interface/efi/efi_debug.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/interface/efi/efi_debug.c b/src/interface/efi/efi_debug.c
index 7f3c115d5..a7ba7e2ed 100644
--- a/src/interface/efi/efi_debug.c
+++ b/src/interface/efi/efi_debug.c
@@ -27,6 +27,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
*/
#include <stdio.h>
+#include <string.h>
+#include <ipxe/uuid.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/efi_driver.h>
#include <ipxe/efi/Protocol/DevicePath.h>
@@ -37,6 +39,24 @@ static EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *efidpt;
EFI_REQUIRE_PROTOCOL ( EFI_DEVICE_PATH_TO_TEXT_PROTOCOL, &efidpt );
/**
+ * Convert GUID to a printable string
+ *
+ * @v guid GUID
+ * @ret string Printable string
+ */
+const char * efi_guid_ntoa ( EFI_GUID *guid ) {
+ union {
+ union uuid uuid;
+ EFI_GUID guid;
+ } u;
+
+ /* Convert GUID to standard endianness */
+ memcpy ( &u.guid, guid, sizeof ( u.guid ) );
+ uuid_mangle ( &u.uuid );
+ return uuid_ntoa ( &u.uuid );
+}
+
+/**
* Print list of protocol handlers attached to a handle
*
* @v handle EFI handle
@@ -57,9 +77,8 @@ void dbg_efi_protocols ( EFI_HANDLE handle ) {
}
/* Dump list of protocols */
- for ( i = 0 ; i < count ; i++ ) {
- printf ( "%s\n", uuid_ntoa ( ( union uuid * ) protocols[i] ) );
- }
+ for ( i = 0 ; i < count ; i++ )
+ printf ( "%s\n", efi_guid_ntoa ( protocols[i] ) );
/* Free list */
bs->FreePool ( protocols );