boot: Add GUID format helper macro

This commit is contained in:
Jan Janssen
2023-02-22 21:56:20 +01:00
parent 0b92662821
commit ea592abfc6
3 changed files with 10 additions and 21 deletions
+1 -20
View File
@@ -294,26 +294,7 @@ char16_t *disk_get_part_uuid(EFI_HANDLE *handle) {
if (hd.SignatureType != SIGNATURE_TYPE_GUID)
continue;
return xasprintf(
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
hd.Signature[3],
hd.Signature[2],
hd.Signature[1],
hd.Signature[0],
hd.Signature[5],
hd.Signature[4],
hd.Signature[7],
hd.Signature[6],
hd.Signature[8],
hd.Signature[9],
hd.Signature[10],
hd.Signature[11],
hd.Signature[12],
hd.Signature[13],
hd.Signature[14],
hd.Signature[15]);
return xasprintf(GUID_FORMAT_STR, GUID_FORMAT_VAL(hd.SignatureGuid));
}
return NULL;
+4 -1
View File
@@ -54,7 +54,10 @@ typedef struct {
uint32_t PartitionNumber;
uint64_t PartitionStart;
uint64_t PartitionSize;
uint8_t Signature[16];
union {
uint8_t Signature[16];
EFI_GUID SignatureGuid;
};
uint8_t MBRType;
uint8_t SignatureType;
} _packed_ HARDDRIVE_DEVICE_PATH;
+5
View File
@@ -119,6 +119,11 @@ static inline void unload_imagep(EFI_HANDLE *image) {
#define LOADER_GUID \
{ 0x4a67b082, 0x0a4c, 0x41cf, { 0xb6, 0xc7, 0x44, 0x0b, 0x29, 0xbb, 0x8c, 0x4f } }
/* Note that GUID is evaluated multiple times! */
#define GUID_FORMAT_STR "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X"
#define GUID_FORMAT_VAL(g) (g).Data1, (g).Data2, (g).Data3, (g).Data4[0], (g).Data4[1], \
(g).Data4[2], (g).Data4[3], (g).Data4[4], (g).Data4[5], (g).Data4[6], (g).Data4[7]
void print_at(size_t x, size_t y, size_t attr, const char16_t *str);
void clear_screen(size_t attr);