xref: /netbsd-src/sys/external/bsd/gnu-efi/dist/lib/guid.c (revision 1eb4b21779cd330f45cea12cb60eb09e852039cb)
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
InitializeGuid(VOID)113 InitializeGuid (
114     VOID
115     )
116 {
117 }
118 
119 INTN
CompareGuid(IN EFI_GUID * Guid1,IN EFI_GUID * Guid2)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
GuidToString(OUT CHAR16 * Buffer,IN EFI_GUID * Guid)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