Home | History | Annotate | Line # | Download | only in lib
guid.c revision 1.1
      1  1.1  jakllsch /*	$NetBSD: guid.c,v 1.1 2014/04/01 16:16:06 jakllsch 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  jakllsch 	{  &NullGuid,                  L"G0"},
     54  1.1  jakllsch 	{  &EfiGlobalVariable,         L"Efi"},
     55  1.1  jakllsch 
     56  1.1  jakllsch 	{  &VariableStoreProtocol,     L"varstore"},
     57  1.1  jakllsch 	{  &DevicePathProtocol,        L"dpath"},
     58  1.1  jakllsch 	{  &LoadedImageProtocol,       L"image"},
     59  1.1  jakllsch 	{  &TextInProtocol,            L"txtin"},
     60  1.1  jakllsch 	{  &TextOutProtocol,           L"txtout"},
     61  1.1  jakllsch 	{  &BlockIoProtocol,           L"blkio"},
     62  1.1  jakllsch 	{  &DiskIoProtocol,            L"diskio"},
     63  1.1  jakllsch 	{  &FileSystemProtocol,        L"fs"},
     64  1.1  jakllsch 	{  &LoadFileProtocol,          L"load"},
     65  1.1  jakllsch 	{  &DeviceIoProtocol,          L"DevIo"},
     66  1.1  jakllsch 
     67  1.1  jakllsch 	{  &GenericFileInfo,           L"GenFileInfo"},
     68  1.1  jakllsch 	{  &FileSystemInfo,            L"FileSysInfo"},
     69  1.1  jakllsch 
     70  1.1  jakllsch 	{  &UnicodeCollationProtocol,  L"unicode"},
     71  1.1  jakllsch 	{  &LegacyBootProtocol,        L"LegacyBoot"},
     72  1.1  jakllsch 	{  &SerialIoProtocol,          L"serialio"},
     73  1.1  jakllsch 	{  &VgaClassProtocol,          L"vgaclass"},
     74  1.1  jakllsch 	{  &SimpleNetworkProtocol,     L"net"},
     75  1.1  jakllsch 	{  &NetworkInterfaceIdentifierProtocol,    L"nii"},
     76  1.1  jakllsch 	{  &PxeBaseCodeProtocol,       L"pxebc"},
     77  1.1  jakllsch 	{  &PxeCallbackProtocol,       L"pxecb"},
     78  1.1  jakllsch 
     79  1.1  jakllsch 	{  &VariableStoreProtocol,     L"varstore"},
     80  1.1  jakllsch 	{  &LegacyBootProtocol,        L"LegacyBoot"},
     81  1.1  jakllsch 	{  &VgaClassProtocol,          L"VgaClass"},
     82  1.1  jakllsch 	{  &TextOutSpliterProtocol,    L"TxtOutSplit"},
     83  1.1  jakllsch 	{  &ErrorOutSpliterProtocol,   L"ErrOutSplit"},
     84  1.1  jakllsch 	{  &TextInSpliterProtocol,     L"TxtInSplit"},
     85  1.1  jakllsch 	{  &PcAnsiProtocol,            L"PcAnsi"},
     86  1.1  jakllsch 	{  &Vt100Protocol,             L"Vt100"},
     87  1.1  jakllsch 	{  &UnknownDevice,             L"Unknown Device"},
     88  1.1  jakllsch 
     89  1.1  jakllsch 	{  &EfiPartTypeSystemPartitionGuid,    L"ESP"},
     90  1.1  jakllsch 	{  &EfiPartTypeLegacyMbrGuid,          L"GPT MBR"},
     91  1.1  jakllsch 
     92  1.1  jakllsch 	{  &ShellInterfaceProtocol,    L"ShellInt"},
     93  1.1  jakllsch 	{  &SEnvId,                    L"SEnv"},
     94  1.1  jakllsch 	{  &SProtId,                   L"ShellProtId"},
     95  1.1  jakllsch 	{  &SMapId,                    L"ShellDevPathMap"},
     96  1.1  jakllsch 	{  &SAliasId,                  L"ShellAlias"},
     97  1.1  jakllsch 
     98  1.1  jakllsch 	{  NULL }
     99  1.1  jakllsch };
    100  1.1  jakllsch 
    101  1.1  jakllsch //
    102  1.1  jakllsch //
    103  1.1  jakllsch //
    104  1.1  jakllsch 
    105  1.1  jakllsch LIST_ENTRY          GuidList;
    106  1.1  jakllsch 
    107  1.1  jakllsch 
    108  1.1  jakllsch VOID
    109  1.1  jakllsch InitializeGuid (
    110  1.1  jakllsch     VOID
    111  1.1  jakllsch     )
    112  1.1  jakllsch {
    113  1.1  jakllsch }
    114  1.1  jakllsch 
    115  1.1  jakllsch INTN
    116  1.1  jakllsch CompareGuid(
    117  1.1  jakllsch     IN EFI_GUID     *Guid1,
    118  1.1  jakllsch     IN EFI_GUID     *Guid2
    119  1.1  jakllsch     )
    120  1.1  jakllsch /*++
    121  1.1  jakllsch 
    122  1.1  jakllsch Routine Description:
    123  1.1  jakllsch 
    124  1.1  jakllsch     Compares to GUIDs
    125  1.1  jakllsch 
    126  1.1  jakllsch Arguments:
    127  1.1  jakllsch 
    128  1.1  jakllsch     Guid1       - guid to compare
    129  1.1  jakllsch     Guid2       - guid to compare
    130  1.1  jakllsch 
    131  1.1  jakllsch Returns:
    132  1.1  jakllsch     = 0     if Guid1 == Guid2
    133  1.1  jakllsch 
    134  1.1  jakllsch --*/
    135  1.1  jakllsch {
    136  1.1  jakllsch     return RtCompareGuid (Guid1, Guid2);
    137  1.1  jakllsch }
    138  1.1  jakllsch 
    139  1.1  jakllsch 
    140  1.1  jakllsch VOID
    141  1.1  jakllsch GuidToString (
    142  1.1  jakllsch     OUT CHAR16      *Buffer,
    143  1.1  jakllsch     IN EFI_GUID     *Guid
    144  1.1  jakllsch     )
    145  1.1  jakllsch {
    146  1.1  jakllsch 
    147  1.1  jakllsch     UINTN           Index;
    148  1.1  jakllsch 
    149  1.1  jakllsch     //
    150  1.1  jakllsch     // Else, (for now) use additional internal function for mapping guids
    151  1.1  jakllsch     //
    152  1.1  jakllsch 
    153  1.1  jakllsch     for (Index=0; KnownGuids[Index].Guid; Index++) {
    154  1.1  jakllsch         if (CompareGuid(Guid, KnownGuids[Index].Guid) == 0) {
    155  1.1  jakllsch             SPrint (Buffer, 0, KnownGuids[Index].GuidName);
    156  1.1  jakllsch             return ;
    157  1.1  jakllsch         }
    158  1.1  jakllsch     }
    159  1.1  jakllsch 
    160  1.1  jakllsch     //
    161  1.1  jakllsch     // Else dump it
    162  1.1  jakllsch     //
    163  1.1  jakllsch 
    164  1.1  jakllsch     SPrint (Buffer, 0, L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
    165  1.1  jakllsch         Guid->Data1,
    166  1.1  jakllsch         Guid->Data2,
    167  1.1  jakllsch         Guid->Data3,
    168  1.1  jakllsch         Guid->Data4[0],
    169  1.1  jakllsch         Guid->Data4[1],
    170  1.1  jakllsch         Guid->Data4[2],
    171  1.1  jakllsch         Guid->Data4[3],
    172  1.1  jakllsch         Guid->Data4[4],
    173  1.1  jakllsch         Guid->Data4[5],
    174  1.1  jakllsch         Guid->Data4[6],
    175  1.1  jakllsch         Guid->Data4[7]
    176  1.1  jakllsch         );
    177  1.1  jakllsch }
    178