3 Copyright (c) 2006, 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 // This data structure is the part of BDS_CONNECT_ENTRY that we can hard code.
65 #define BDS_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('B', 'd', 'C', 'O')
72 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
80 UINT32 LoadOptionsSize
;
85 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
87 } BDS_CONSOLE_CONNECT_ENTRY
;
94 // Bds boot relate lib functions
97 BdsLibUpdateBootOrderList (
98 IN LIST_ENTRY
*BdsOptionList
,
99 IN CHAR16
*VariableName
108 BdsLibBootViaBootOption (
109 IN BDS_COMMON_OPTION
* Option
,
110 IN EFI_DEVICE_PATH_PROTOCOL
* DevicePath
,
111 OUT UINTN
*ExitDataSize
,
112 OUT CHAR16
**ExitData OPTIONAL
116 BdsLibEnumerateAllBootOption (
117 IN OUT LIST_ENTRY
*BdsBootOptionList
121 BdsLibBuildOptionFromHandle (
122 IN EFI_HANDLE Handle
,
123 IN LIST_ENTRY
*BdsBootOptionList
127 BdsLibBuildOptionFromShell (
128 IN EFI_HANDLE Handle
,
129 IN LIST_ENTRY
*BdsBootOptionList
133 // Bds misc lib functions
142 OUT EFI_BOOT_MODE
*BootMode
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
245 BdsLibMatchDevicePaths (
246 IN EFI_DEVICE_PATH_PROTOCOL
*Multi
,
247 IN EFI_DEVICE_PATH_PROTOCOL
*Single
252 EFI_DEVICE_PATH_PROTOCOL
*DevPath
258 IN EFI_GUID
*VendorGuid
262 // Internal definitions
273 VOID (*Function
) (POOL_PRINT
*, VOID
*);
274 } DEVICE_PATH_STRING_TABLE
;
277 // Internal functions
280 BdsBootByDiskSignatureAndPartition (
281 IN BDS_COMMON_OPTION
* Option
,
282 IN HARDDRIVE_DEVICE_PATH
* HardDriveDevicePath
,
283 IN UINT32 LoadOptionsSize
,
284 IN VOID
*LoadOptions
,
285 OUT UINTN
*ExitDataSize
,
286 OUT CHAR16
**ExitData OPTIONAL
290 // Notes: EFI 64 shadow all option rom
293 #define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom ();
295 ShadowAllOptionRom();
297 #define EFI64_SHADOW_ALL_LEGACY_ROM()
301 // BBS support macros and functions
304 #define REFRESH_LEGACY_BOOT_OPTIONS \
305 BdsDeleteAllInvalidLegacyBootOptions ();\
306 BdsAddNonExistingLegacyBootOptions (); \
307 BdsUpdateLegacyDevOrder ()
309 #define REFRESH_LEGACY_BOOT_OPTIONS
313 BdsDeleteAllInvalidLegacyBootOptions (
318 BdsAddNonExistingLegacyBootOptions (
323 BdsUpdateLegacyDevOrder (
328 BdsRefreshBbsTableForBoot (
329 IN BDS_COMMON_OPTION
*Entry
332 #endif // _BDS_LIB_H_