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
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.
18 BDS library definition, include the file and data structure
25 extern EFI_HANDLE mBdsImageHandle
;
28 // Constants which are variable names used to access variables
30 #define VarLegacyDevOrder L"LegacyDevOrder"
33 // Data structures and defines
35 #define FRONT_PAGE_QUESTION_ID 0x0000
36 #define FRONT_PAGE_DATA_WIDTH 0x01
41 #define CONSOLE_OUT 0x00000001
42 #define STD_ERROR 0x00000002
43 #define CONSOLE_IN 0x00000004
44 #define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)
47 // Load Option Attributes defined in EFI Specification
49 #define LOAD_OPTION_ACTIVE 0x00000001
50 #define LOAD_OPTION_FORCE_RECONNECT 0x00000002
51 #define IS_LOAD_OPTION_TYPE(_c, _Mask) (BOOLEAN) (((_c) & (_Mask)) != 0)
54 // Define Maxmim characters that will be accepted
57 #define MAX_CHAR_SIZE (MAX_CHAR * 2)
59 #define MIN_ALIGNMENT_SIZE 4
60 #define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0)
63 // Define maximum characters for boot option variable "BootXXXX"
65 #define BOOT_OPTION_MAX_CHAR 10
68 // This data structure is the part of BDS_CONNECT_ENTRY that we can hard code.
70 #define BDS_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('B', 'd', 'C', 'O')
77 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
85 UINT32 LoadOptionsSize
;
90 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
92 } BDS_CONSOLE_CONNECT_ENTRY
;
99 // Bds boot relate lib functions
102 BdsLibUpdateBootOrderList (
103 IN LIST_ENTRY
*BdsOptionList
,
104 IN CHAR16
*VariableName
113 BdsLibBootViaBootOption (
114 IN BDS_COMMON_OPTION
* Option
,
115 IN EFI_DEVICE_PATH_PROTOCOL
* DevicePath
,
116 OUT UINTN
*ExitDataSize
,
117 OUT CHAR16
**ExitData OPTIONAL
121 BdsLibEnumerateAllBootOption (
122 IN OUT LIST_ENTRY
*BdsBootOptionList
126 BdsLibBuildOptionFromHandle (
127 IN EFI_HANDLE Handle
,
128 IN LIST_ENTRY
*BdsBootOptionList
132 BdsLibBuildOptionFromShell (
133 IN EFI_HANDLE Handle
,
134 IN LIST_ENTRY
*BdsBootOptionList
138 // Bds misc lib functions
147 IN LIST_ENTRY
*BdsDriverLists
151 BdsLibBuildOptionFromVar (
152 IN LIST_ENTRY
*BdsCommonOptionList
,
153 IN CHAR16
*VariableName
157 BdsLibGetVariableAndSize (
159 IN EFI_GUID
*VendorGuid
,
160 OUT UINTN
*VariableSize
164 BdsLibOutputStrings (
165 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*ConOut
,
170 BdsLibVariableToOption (
171 IN OUT LIST_ENTRY
*BdsCommonOptionList
,
172 IN CHAR16
*VariableName
176 BdsLibRegisterNewOption (
177 IN LIST_ENTRY
*BdsOptionList
,
178 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
,
180 IN CHAR16
*VariableName
184 // Bds connect or disconnect driver lib funcion
187 BdsLibConnectAllDriversToAllControllers (
197 BdsLibConnectDevicePath (
198 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePathToConnect
202 BdsLibConnectAllEfi (
207 BdsLibDisconnectAllEfi (
212 // Bds console relate lib functions
215 BdsLibConnectAllConsoles (
220 BdsLibConnectAllDefaultConsoles (
225 BdsLibUpdateConsoleVariable (
226 IN CHAR16
*ConVarName
,
227 IN EFI_DEVICE_PATH_PROTOCOL
*CustomizedConDevicePath
,
228 IN EFI_DEVICE_PATH_PROTOCOL
*ExclusiveDevicePath
232 BdsLibConnectConsoleVariable (
233 IN CHAR16
*ConVarName
237 // Bds device path relate lib functions
239 EFI_DEVICE_PATH_PROTOCOL
*
240 BdsLibUnpackDevicePath (
241 IN EFI_DEVICE_PATH_PROTOCOL
*DevPath
249 EFI_DEVICE_PATH_PROTOCOL
*
250 BdsLibDelPartMatchInstance (
251 IN EFI_DEVICE_PATH_PROTOCOL
*Multi
,
252 IN EFI_DEVICE_PATH_PROTOCOL
*Single
256 BdsLibMatchDevicePaths (
257 IN EFI_DEVICE_PATH_PROTOCOL
*Multi
,
258 IN EFI_DEVICE_PATH_PROTOCOL
*Single
263 EFI_DEVICE_PATH_PROTOCOL
*DevPath
269 IN EFI_GUID
*VendorGuid
273 // Internal definitions
284 VOID (*Function
) (POOL_PRINT
*, VOID
*);
285 } DEVICE_PATH_STRING_TABLE
;
288 // Internal functions
291 BdsBootByDiskSignatureAndPartition (
292 IN BDS_COMMON_OPTION
* Option
,
293 IN HARDDRIVE_DEVICE_PATH
* HardDriveDevicePath
,
294 IN UINT32 LoadOptionsSize
,
295 IN VOID
*LoadOptions
,
296 OUT UINTN
*ExitDataSize
,
297 OUT CHAR16
**ExitData OPTIONAL
301 // Notes: EFI 64 shadow all option rom
303 #if defined (MDE_CPU_IPF)
304 #define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom ();
306 ShadowAllOptionRom();
308 #define EFI64_SHADOW_ALL_LEGACY_ROM()
312 // BBS support macros and functions
314 #if defined (MDE_CPU_IA32)
315 #define REFRESH_LEGACY_BOOT_OPTIONS \
316 BdsDeleteAllInvalidLegacyBootOptions ();\
317 BdsAddNonExistingLegacyBootOptions (); \
318 BdsUpdateLegacyDevOrder ()
320 #define REFRESH_LEGACY_BOOT_OPTIONS
324 BdsDeleteAllInvalidLegacyBootOptions (
329 BdsAddNonExistingLegacyBootOptions (
334 BdsUpdateLegacyDevOrder (
339 BdsRefreshBbsTableForBoot (
340 IN BDS_COMMON_OPTION
*Entry
344 BdsDeleteBootOption (
345 IN UINTN OptionNumber
,
346 IN OUT UINT16
*BootOrder
,
347 IN OUT UINTN
*BootOrderSize
351 //The interface functions relate with Setup Browser Reset Reminder feature
354 EnableResetReminderFeature (
359 DisableResetReminderFeature (
364 EnableResetRequired (
369 DisableResetRequired (
374 IsResetReminderFeatureEnable (
389 BdsLibGetHiiHandles (
390 IN EFI_HII_PROTOCOL
*Hii
,
391 IN OUT UINT16
*HandleBufferLength
,
392 OUT EFI_HII_HANDLE
**HiiHandles
395 #endif // _BDS_LIB_H_