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