Home | History | Annotate | Line # | Download | only in lib
      1 /*	$NetBSD: guid.c,v 1.1.1.3 2021/09/30 18:50:09 jmcneill Exp $	*/
      2 
      3 /*++
      4 
      5 Copyright (c) 1998  Intel Corporation
      6 
      7 Module Name:
      8 
      9     misc.c
     10 
     11 Abstract:
     12 
     13     Misc EFI support functions
     14 
     15 
     16 
     17 Revision History
     18 
     19 --*/
     20 
     21 #include "lib.h"
     22 
     23 
     24 //
     25 // Additional Known guids
     26 //
     27 
     28 #define SHELL_INTERFACE_PROTOCOL \
     29     { 0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     30 
     31 #define ENVIRONMENT_VARIABLE_ID  \
     32     { 0x47c7b224, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     33 
     34 #define DEVICE_PATH_MAPPING_ID  \
     35     { 0x47c7b225, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     36 
     37 #define PROTOCOL_ID_ID  \
     38     { 0x47c7b226, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     39 
     40 #define ALIAS_ID  \
     41     { 0x47c7b227, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     42 
     43 static EFI_GUID ShellInterfaceProtocol = SHELL_INTERFACE_PROTOCOL;
     44 static EFI_GUID SEnvId                 = ENVIRONMENT_VARIABLE_ID;
     45 static EFI_GUID SMapId                 = DEVICE_PATH_MAPPING_ID;
     46 static EFI_GUID SProtId                = PROTOCOL_ID_ID;
     47 static EFI_GUID SAliasId               = ALIAS_ID;
     48 
     49 static struct {
     50     EFI_GUID        *Guid;
     51     WCHAR           *GuidName;
     52 } KnownGuids[] = {
     53 	{  &NullGuid,                                       L"G0" },
     54 	{  &gEfiGlobalVariableGuid,                         L"EfiVar" },
     55 
     56 	{  &VariableStoreProtocol,                          L"VarStore" },
     57 	{  &gEfiDevicePathProtocolGuid,                     L"DevPath" },
     58 	{  &gEfiLoadedImageProtocolGuid,                    L"LdImg" },
     59 	{  &gEfiSimpleTextInProtocolGuid,                   L"TxtIn" },
     60 	{  &gEfiSimpleTextOutProtocolGuid,                  L"TxtOut" },
     61 	{  &gEfiBlockIoProtocolGuid,                        L"BlkIo" },
     62 	{  &gEfiBlockIo2ProtocolGuid,                       L"BlkIo2" },
     63 	{  &gEfiDiskIoProtocolGuid,                         L"DskIo" },
     64 	{  &gEfiDiskIo2ProtocolGuid,                        L"DskIo2" },
     65 	{  &gEfiSimpleFileSystemProtocolGuid,               L"Fs" },
     66 	{  &gEfiLoadFileProtocolGuid,                       L"LdFile" },
     67 	{  &gEfiDeviceIoProtocolGuid,                       L"DevIo" },
     68 	{  &gEfiComponentNameProtocolGuid,                  L"CName" },
     69 	{  &gEfiComponentName2ProtocolGuid,                 L"CName2" },
     70 
     71 	{  &gEfiFileInfoGuid,                               L"FileInfo" },
     72 	{  &gEfiFileSystemInfoGuid,                         L"FsInfo" },
     73 	{  &gEfiFileSystemVolumeLabelInfoIdGuid,            L"FsVolInfo" },
     74 
     75 	{  &gEfiUnicodeCollationProtocolGuid,               L"Unicode" },
     76 	{  &LegacyBootProtocol,                             L"LegacyBoot" },
     77 	{  &gEfiSerialIoProtocolGuid,                       L"SerIo" },
     78 	{  &VgaClassProtocol,                               L"VgaClass"},
     79 	{  &gEfiSimpleNetworkProtocolGuid,                  L"Net" },
     80 	{  &gEfiNetworkInterfaceIdentifierProtocolGuid,     L"Nii" },
     81 	{  &gEfiPxeBaseCodeProtocolGuid,                    L"Pxe" },
     82 	{  &gEfiPxeBaseCodeCallbackProtocolGuid,            L"PxeCb" },
     83 
     84 	{  &TextOutSpliterProtocol,                         L"TxtOutSplit" },
     85 	{  &ErrorOutSpliterProtocol,                        L"ErrOutSplit" },
     86 	{  &TextInSpliterProtocol,                          L"TxtInSplit" },
     87 	{  &gEfiPcAnsiGuid,                                 L"PcAnsi" },
     88 	{  &gEfiVT100Guid,                                  L"Vt100" },
     89 	{  &gEfiVT100PlusGuid,                              L"Vt100Plus" },
     90 	{  &gEfiVTUTF8Guid,                                 L"VtUtf8" },
     91 	{  &UnknownDevice,                                  L"UnknownDev" },
     92 
     93 	{  &EfiPartTypeSystemPartitionGuid,                 L"ESP" },
     94 	{  &EfiPartTypeLegacyMbrGuid,                       L"GPT MBR" },
     95 
     96 	{  &ShellInterfaceProtocol,                         L"ShellInt" },
     97 	{  &SEnvId,                                         L"SEnv" },
     98 	{  &SProtId,                                        L"ShellProtId" },
     99 	{  &SMapId,                                         L"ShellDevPathMap" },
    100 	{  &SAliasId,                                       L"ShellAlias" },
    101 
    102 	{  NULL, L"" }
    103 };
    104 
    105 //
    106 //
    107 //
    108 
    109 LIST_ENTRY          GuidList;
    110 
    111 
    112 VOID
    113 InitializeGuid (
    114     VOID
    115     )
    116 {
    117 }
    118 
    119 INTN
    120 CompareGuid(
    121     IN EFI_GUID     *Guid1,
    122     IN EFI_GUID     *Guid2
    123     )
    124 /*++
    125 
    126 Routine Description:
    127 
    128     Compares to GUIDs
    129 
    130 Arguments:
    131 
    132     Guid1       - guid to compare
    133     Guid2       - guid to compare
    134 
    135 Returns:
    136     = 0     if Guid1 == Guid2
    137 
    138 --*/
    139 {
    140     return RtCompareGuid (Guid1, Guid2);
    141 }
    142 
    143 
    144 VOID
    145 GuidToString (
    146     OUT CHAR16      *Buffer,
    147     IN EFI_GUID     *Guid
    148     )
    149 {
    150 
    151     UINTN           Index;
    152 
    153     //
    154     // Else, (for now) use additional internal function for mapping guids
    155     //
    156 
    157     for (Index=0; KnownGuids[Index].Guid; Index++) {
    158         if (CompareGuid(Guid, KnownGuids[Index].Guid) == 0) {
    159             UnicodeSPrint (Buffer, 0, KnownGuids[Index].GuidName);
    160             return ;
    161         }
    162     }
    163 
    164     //
    165     // Else dump it
    166     //
    167 
    168     UnicodeSPrint (Buffer, 0, L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
    169         Guid->Data1,
    170         Guid->Data2,
    171         Guid->Data3,
    172         Guid->Data4[0],
    173         Guid->Data4[1],
    174         Guid->Data4[2],
    175         Guid->Data4[3],
    176         Guid->Data4[4],
    177         Guid->Data4[5],
    178         Guid->Data4[6],
    179         Guid->Data4[7]
    180         );
    181 }
    182