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