diff options
Diffstat (limited to 'gnu-efi/gnu-efi-3.0/lib/guid.c')
-rw-r--r-- | gnu-efi/gnu-efi-3.0/lib/guid.c | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/gnu-efi/gnu-efi-3.0/lib/guid.c b/gnu-efi/gnu-efi-3.0/lib/guid.c new file mode 100644 index 0000000..92622b4 --- /dev/null +++ b/gnu-efi/gnu-efi-3.0/lib/guid.c @@ -0,0 +1,175 @@ +/*++ + +Copyright (c) 1998 Intel Corporation + +Module Name: + + misc.c + +Abstract: + + Misc EFI support functions + + + +Revision History + +--*/ + +#include "lib.h" + + +// +// Additional Known guids +// + +#define SHELL_INTERFACE_PROTOCOL \ + { 0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } + +#define ENVIRONMENT_VARIABLE_ID \ + { 0x47c7b224, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } + +#define DEVICE_PATH_MAPPING_ID \ + { 0x47c7b225, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } + +#define PROTOCOL_ID_ID \ + { 0x47c7b226, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } + +#define ALIAS_ID \ + { 0x47c7b227, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } + +static EFI_GUID ShellInterfaceProtocol = SHELL_INTERFACE_PROTOCOL; +static EFI_GUID SEnvId = ENVIRONMENT_VARIABLE_ID; +static EFI_GUID SMapId = DEVICE_PATH_MAPPING_ID; +static EFI_GUID SProtId = PROTOCOL_ID_ID; +static EFI_GUID SAliasId = ALIAS_ID; + +static struct { + EFI_GUID *Guid; + WCHAR *GuidName; +} KnownGuids[] = { + { &NullGuid, L"G0"}, + { &EfiGlobalVariable, L"Efi"}, + + { &VariableStoreProtocol, L"varstore"}, + { &DevicePathProtocol, L"dpath"}, + { &LoadedImageProtocol, L"image"}, + { &TextInProtocol, L"txtin"}, + { &TextOutProtocol, L"txtout"}, + { &BlockIoProtocol, L"blkio"}, + { &DiskIoProtocol, L"diskio"}, + { &FileSystemProtocol, L"fs"}, + { &LoadFileProtocol, L"load"}, + { &DeviceIoProtocol, L"DevIo"}, + + { &GenericFileInfo, L"GenFileInfo"}, + { &FileSystemInfo, L"FileSysInfo"}, + + { &UnicodeCollationProtocol, L"unicode"}, + { &LegacyBootProtocol, L"LegacyBoot"}, + { &SerialIoProtocol, L"serialio"}, + { &VgaClassProtocol, L"vgaclass"}, + { &SimpleNetworkProtocol, L"net"}, + { &NetworkInterfaceIdentifierProtocol, L"nii"}, + { &PxeBaseCodeProtocol, L"pxebc"}, + { &PxeCallbackProtocol, L"pxecb"}, + + { &VariableStoreProtocol, L"varstore"}, + { &LegacyBootProtocol, L"LegacyBoot"}, + { &VgaClassProtocol, L"VgaClass"}, + { &TextOutSpliterProtocol, L"TxtOutSplit"}, + { &ErrorOutSpliterProtocol, L"ErrOutSplit"}, + { &TextInSpliterProtocol, L"TxtInSplit"}, + { &PcAnsiProtocol, L"PcAnsi"}, + { &Vt100Protocol, L"Vt100"}, + { &UnknownDevice, L"Unknown Device"}, + + { &EfiPartTypeSystemPartitionGuid, L"ESP"}, + { &EfiPartTypeLegacyMbrGuid, L"GPT MBR"}, + + { &ShellInterfaceProtocol, L"ShellInt"}, + { &SEnvId, L"SEnv"}, + { &SProtId, L"ShellProtId"}, + { &SMapId, L"ShellDevPathMap"}, + { &SAliasId, L"ShellAlias"}, + + { NULL } +}; + +// +// +// + +LIST_ENTRY GuidList; + + +VOID +InitializeGuid ( + VOID + ) +{ +} + +INTN +CompareGuid( + IN EFI_GUID *Guid1, + IN EFI_GUID *Guid2 + ) +/*++ + +Routine Description: + + Compares to GUIDs + +Arguments: + + Guid1 - guid to compare + Guid2 - guid to compare + +Returns: + = 0 if Guid1 == Guid2 + +--*/ +{ + return RtCompareGuid (Guid1, Guid2); +} + + +VOID +GuidToString ( + OUT CHAR16 *Buffer, + IN EFI_GUID *Guid + ) +{ + + UINTN Index; + + // + // Else, (for now) use additional internal function for mapping guids + // + + for (Index=0; KnownGuids[Index].Guid; Index++) { + if (CompareGuid(Guid, KnownGuids[Index].Guid) == 0) { + SPrint (Buffer, 0, KnownGuids[Index].GuidName); + return ; + } + } + + // + // Else dump it + // + + SPrint (Buffer, 0, L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", + Guid->Data1, + Guid->Data2, + Guid->Data3, + Guid->Data4[0], + Guid->Data4[1], + Guid->Data4[2], + Guid->Data4[3], + Guid->Data4[4], + Guid->Data4[5], + Guid->Data4[6], + Guid->Data4[7] + ); +} |