]> git.proxmox.com Git - mirror_edk2.git/blob - Nt32Pkg/Include/Library/EdkGenericBdsLib.h
Update following library class/Protocol for puting 'Framework' as prefix
[mirror_edk2.git] / Nt32Pkg / Include / Library / EdkGenericBdsLib.h
1 /*++
2
3 Copyright (c) 2006 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 BdsLib.h
15
16 Abstract:
17
18 BDS library definition, include the file and data structure
19
20 --*/
21
22 #ifndef _BDS_LIB_H_
23 #define _BDS_LIB_H_
24
25 #include <Protocol/SimpleTextOut.h>
26 #include <Protocol/FrameworkHii.h>
27
28 extern EFI_HANDLE mBdsImageHandle;
29
30 //
31 // Constants which are variable names used to access variables
32 //
33 #define VarLegacyDevOrder L"LegacyDevOrder"
34
35 //
36 // Data structures and defines
37 //
38 #define FRONT_PAGE_QUESTION_ID 0x0000
39 #define FRONT_PAGE_DATA_WIDTH 0x01
40
41 //
42 // ConnectType
43 //
44 #define CONSOLE_OUT 0x00000001
45 #define STD_ERROR 0x00000002
46 #define CONSOLE_IN 0x00000004
47 #define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)
48
49 //
50 // Load Option Attributes defined in EFI Specification
51 //
52 #define IS_LOAD_OPTION_TYPE(_c, _Mask) (BOOLEAN) (((_c) & (_Mask)) != 0)
53
54 //
55 // Define Maxmim characters that will be accepted
56 //
57 #define MAX_CHAR 480
58 #define MAX_CHAR_SIZE (MAX_CHAR * 2)
59
60 #define MIN_ALIGNMENT_SIZE 4
61 #define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0)
62
63 //
64 // Define maximum characters for boot option variable "BootXXXX"
65 //
66 #define BOOT_OPTION_MAX_CHAR 10
67
68 //
69 // This data structure is the part of BDS_CONNECT_ENTRY that we can hard code.
70 //
71 #define BDS_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('B', 'd', 'C', 'O')
72
73 typedef struct {
74
75 UINTN Signature;
76 LIST_ENTRY Link;
77
78 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
79
80 CHAR16 *OptionName;
81 UINTN OptionNumber;
82 UINT16 BootCurrent;
83 UINT32 Attribute;
84 CHAR16 *Description;
85 VOID *LoadOptions;
86 UINT32 LoadOptionsSize;
87
88 } BDS_COMMON_OPTION;
89
90 typedef struct {
91 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
92 UINTN ConnectType;
93 } BDS_CONSOLE_CONNECT_ENTRY;
94
95 //
96 // Lib Functions
97 //
98
99 //
100 // Bds boot relate lib functions
101 //
102 EFI_STATUS
103 BdsLibUpdateBootOrderList (
104 IN LIST_ENTRY *BdsOptionList,
105 IN CHAR16 *VariableName
106 );
107
108 VOID
109 BdsLibBootNext (
110 VOID
111 );
112
113 EFI_STATUS
114 BdsLibBootViaBootOption (
115 IN BDS_COMMON_OPTION * Option,
116 IN EFI_DEVICE_PATH_PROTOCOL * DevicePath,
117 OUT UINTN *ExitDataSize,
118 OUT CHAR16 **ExitData OPTIONAL
119 );
120
121 EFI_STATUS
122 BdsLibEnumerateAllBootOption (
123 IN OUT LIST_ENTRY *BdsBootOptionList
124 );
125
126 VOID
127 BdsLibBuildOptionFromHandle (
128 IN EFI_HANDLE Handle,
129 IN LIST_ENTRY *BdsBootOptionList
130 );
131
132 VOID
133 BdsLibBuildOptionFromShell (
134 IN EFI_HANDLE Handle,
135 IN LIST_ENTRY *BdsBootOptionList
136 );
137
138 //
139 // Bds misc lib functions
140 //
141 UINT16
142 BdsLibGetTimeout (
143 VOID
144 );
145
146 VOID
147 BdsLibLoadDrivers (
148 IN LIST_ENTRY *BdsDriverLists
149 );
150
151 EFI_STATUS
152 BdsLibBuildOptionFromVar (
153 IN LIST_ENTRY *BdsCommonOptionList,
154 IN CHAR16 *VariableName
155 );
156
157 VOID *
158 BdsLibGetVariableAndSize (
159 IN CHAR16 *Name,
160 IN EFI_GUID *VendorGuid,
161 OUT UINTN *VariableSize
162 );
163
164 EFI_STATUS
165 BdsLibOutputStrings (
166 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut,
167 ...
168 );
169
170 BDS_COMMON_OPTION *
171 BdsLibVariableToOption (
172 IN OUT LIST_ENTRY *BdsCommonOptionList,
173 IN CHAR16 *VariableName
174 );
175
176 EFI_STATUS
177 BdsLibRegisterNewOption (
178 IN LIST_ENTRY *BdsOptionList,
179 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
180 IN CHAR16 *String,
181 IN CHAR16 *VariableName
182 );
183
184 //
185 // Bds connect or disconnect driver lib funcion
186 //
187 VOID
188 BdsLibConnectAllDriversToAllControllers (
189 VOID
190 );
191
192 VOID
193 BdsLibConnectAll (
194 VOID
195 );
196
197 EFI_STATUS
198 BdsLibConnectDevicePath (
199 IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect
200 );
201
202 EFI_STATUS
203 BdsLibConnectAllEfi (
204 VOID
205 );
206
207 EFI_STATUS
208 BdsLibDisconnectAllEfi (
209 VOID
210 );
211
212 //
213 // Bds console relate lib functions
214 //
215 VOID
216 BdsLibConnectAllConsoles (
217 VOID
218 );
219
220 EFI_STATUS
221 BdsLibConnectAllDefaultConsoles (
222 VOID
223 );
224
225 EFI_STATUS
226 BdsLibUpdateConsoleVariable (
227 IN CHAR16 *ConVarName,
228 IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath,
229 IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath
230 );
231
232 EFI_STATUS
233 BdsLibConnectConsoleVariable (
234 IN CHAR16 *ConVarName
235 );
236
237 //
238 // Bds device path relate lib functions
239 //
240 EFI_DEVICE_PATH_PROTOCOL *
241 BdsLibUnpackDevicePath (
242 IN EFI_DEVICE_PATH_PROTOCOL *DevPath
243 );
244
245 VOID
246 BdsLibSafeFreePool (
247 IN VOID *Buffer
248 );
249
250 EFI_DEVICE_PATH_PROTOCOL *
251 BdsLibDelPartMatchInstance (
252 IN EFI_DEVICE_PATH_PROTOCOL *Multi,
253 IN EFI_DEVICE_PATH_PROTOCOL *Single
254 );
255
256 BOOLEAN
257 BdsLibMatchDevicePaths (
258 IN EFI_DEVICE_PATH_PROTOCOL *Multi,
259 IN EFI_DEVICE_PATH_PROTOCOL *Single
260 );
261
262 CHAR16 *
263 DevicePathToStr (
264 EFI_DEVICE_PATH_PROTOCOL *DevPath
265 );
266
267 VOID *
268 EfiLibGetVariable (
269 IN CHAR16 *Name,
270 IN EFI_GUID *VendorGuid
271 );
272
273 //
274 // Internal definitions
275 //
276 typedef struct {
277 CHAR16 *str;
278 UINTN len;
279 UINTN maxlen;
280 } POOL_PRINT;
281
282 typedef struct {
283 UINT8 Type;
284 UINT8 SubType;
285 VOID (*Function) (POOL_PRINT *, VOID *);
286 } DEVICE_PATH_STRING_TABLE;
287
288 //
289 // Internal functions
290 //
291 EFI_STATUS
292 BdsBootByDiskSignatureAndPartition (
293 IN BDS_COMMON_OPTION * Option,
294 IN HARDDRIVE_DEVICE_PATH * HardDriveDevicePath,
295 IN UINT32 LoadOptionsSize,
296 IN VOID *LoadOptions,
297 OUT UINTN *ExitDataSize,
298 OUT CHAR16 **ExitData OPTIONAL
299 );
300
301 //
302 // Notes: EFI 64 shadow all option rom
303 //
304 #if defined (MDE_CPU_IPF)
305 #define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom ();
306 VOID
307 ShadowAllOptionRom();
308 #else
309 #define EFI64_SHADOW_ALL_LEGACY_ROM()
310 #endif
311
312 //
313 // BBS support macros and functions
314 //
315 #if defined (MDE_CPU_IA32)
316 #define REFRESH_LEGACY_BOOT_OPTIONS \
317 BdsDeleteAllInvalidLegacyBootOptions ();\
318 BdsAddNonExistingLegacyBootOptions (); \
319 BdsUpdateLegacyDevOrder ()
320 #else
321 #define REFRESH_LEGACY_BOOT_OPTIONS
322 #endif
323
324 EFI_STATUS
325 BdsDeleteAllInvalidLegacyBootOptions (
326 VOID
327 );
328
329 EFI_STATUS
330 BdsAddNonExistingLegacyBootOptions (
331 VOID
332 );
333
334 EFI_STATUS
335 BdsUpdateLegacyDevOrder (
336 VOID
337 );
338
339 EFI_STATUS
340 BdsRefreshBbsTableForBoot (
341 IN BDS_COMMON_OPTION *Entry
342 );
343
344 EFI_STATUS
345 BdsDeleteBootOption (
346 IN UINTN OptionNumber,
347 IN OUT UINT16 *BootOrder,
348 IN OUT UINTN *BootOrderSize
349 );
350
351 //
352 //The interface functions relate with Setup Browser Reset Reminder feature
353 //
354 VOID
355 EnableResetReminderFeature (
356 VOID
357 );
358
359 VOID
360 DisableResetReminderFeature (
361 VOID
362 );
363
364 VOID
365 EnableResetRequired (
366 VOID
367 );
368
369 VOID
370 DisableResetRequired (
371 VOID
372 );
373
374 BOOLEAN
375 IsResetReminderFeatureEnable (
376 VOID
377 );
378
379 BOOLEAN
380 IsResetRequired (
381 VOID
382 );
383
384 VOID
385 SetupResetReminder (
386 VOID
387 );
388
389 EFI_STATUS
390 BdsLibGetHiiHandles (
391 IN EFI_HII_PROTOCOL *Hii,
392 IN OUT UINT16 *HandleBufferLength,
393 OUT EFI_HII_HANDLE **HiiHandles
394 );
395
396 #endif // _BDS_LIB_H_