/*++ | |
Copyright (c) 2006, Intel Corporation | |
All rights reserved. This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
Module Name: | |
BdsLib.h | |
Abstract: | |
BDS library definition, include the file and data structure | |
--*/ | |
#ifndef _BDS_LIB_H_ | |
#define _BDS_LIB_H_ | |
extern EFI_HANDLE mBdsImageHandle; | |
// | |
// Constants which are variable names used to access variables | |
// | |
#define VarLegacyDevOrder L"LegacyDevOrder" | |
// | |
// Data structures and defines | |
// | |
#define FRONT_PAGE_QUESTION_ID 0x0000 | |
#define FRONT_PAGE_DATA_WIDTH 0x01 | |
// | |
// ConnectType | |
// | |
#define CONSOLE_OUT 0x00000001 | |
#define STD_ERROR 0x00000002 | |
#define CONSOLE_IN 0x00000004 | |
#define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR) | |
// | |
// Load Option Attributes defined in EFI Specification | |
// | |
#define LOAD_OPTION_ACTIVE 0x00000001 | |
#define LOAD_OPTION_FORCE_RECONNECT 0x00000002 | |
#define IS_LOAD_OPTION_TYPE(_c, _Mask) (BOOLEAN) (((_c) & (_Mask)) != 0) | |
// | |
// Define Maxmim characters that will be accepted | |
// | |
#define MAX_CHAR 480 | |
#define MAX_CHAR_SIZE (MAX_CHAR * 2) | |
#define MIN_ALIGNMENT_SIZE 4 | |
#define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0) | |
// | |
// This data structure is the part of BDS_CONNECT_ENTRY that we can hard code. | |
// | |
#define BDS_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('B', 'd', 'C', 'O') | |
typedef struct { | |
UINTN Signature; | |
LIST_ENTRY Link; | |
EFI_DEVICE_PATH_PROTOCOL *DevicePath; | |
CHAR16 *OptionName; | |
UINTN OptionNumber; | |
UINT16 BootCurrent; | |
UINT32 Attribute; | |
CHAR16 *Description; | |
VOID *LoadOptions; | |
UINT32 LoadOptionsSize; | |
} BDS_COMMON_OPTION; | |
typedef struct { | |
EFI_DEVICE_PATH_PROTOCOL *DevicePath; | |
UINTN ConnectType; | |
} BDS_CONSOLE_CONNECT_ENTRY; | |
// | |
// Lib Functions | |
// | |
// | |
// Bds boot relate lib functions | |
// | |
EFI_STATUS | |
BdsLibUpdateBootOrderList ( | |
IN LIST_ENTRY *BdsOptionList, | |
IN CHAR16 *VariableName | |
); | |
VOID | |
BdsLibBootNext ( | |
VOID | |
); | |
EFI_STATUS | |
BdsLibBootViaBootOption ( | |
IN BDS_COMMON_OPTION * Option, | |
IN EFI_DEVICE_PATH_PROTOCOL * DevicePath, | |
OUT UINTN *ExitDataSize, | |
OUT CHAR16 **ExitData OPTIONAL | |
); | |
EFI_STATUS | |
BdsLibEnumerateAllBootOption ( | |
IN OUT LIST_ENTRY *BdsBootOptionList | |
); | |
VOID | |
BdsLibBuildOptionFromHandle ( | |
IN EFI_HANDLE Handle, | |
IN LIST_ENTRY *BdsBootOptionList | |
); | |
VOID | |
BdsLibBuildOptionFromShell ( | |
IN EFI_HANDLE Handle, | |
IN LIST_ENTRY *BdsBootOptionList | |
); | |
// | |
// Bds misc lib functions | |
// | |
UINT16 | |
BdsLibGetTimeout ( | |
VOID | |
); | |
EFI_STATUS | |
BdsLibGetBootMode ( | |
OUT EFI_BOOT_MODE *BootMode | |
); | |
VOID | |
BdsLibLoadDrivers ( | |
IN LIST_ENTRY *BdsDriverLists | |
); | |
EFI_STATUS | |
BdsLibBuildOptionFromVar ( | |
IN LIST_ENTRY *BdsCommonOptionList, | |
IN CHAR16 *VariableName | |
); | |
VOID * | |
BdsLibGetVariableAndSize ( | |
IN CHAR16 *Name, | |
IN EFI_GUID *VendorGuid, | |
OUT UINTN *VariableSize | |
); | |
EFI_STATUS | |
BdsLibOutputStrings ( | |
IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *ConOut, | |
... | |
); | |
BDS_COMMON_OPTION * | |
BdsLibVariableToOption ( | |
IN OUT LIST_ENTRY *BdsCommonOptionList, | |
IN CHAR16 *VariableName | |
); | |
EFI_STATUS | |
BdsLibRegisterNewOption ( | |
IN LIST_ENTRY *BdsOptionList, | |
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, | |
IN CHAR16 *String, | |
IN CHAR16 *VariableName | |
); | |
// | |
// Bds connect or disconnect driver lib funcion | |
// | |
VOID | |
BdsLibConnectAllDriversToAllControllers ( | |
VOID | |
); | |
VOID | |
BdsLibConnectAll ( | |
VOID | |
); | |
EFI_STATUS | |
BdsLibConnectDevicePath ( | |
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect | |
); | |
EFI_STATUS | |
BdsLibConnectAllEfi ( | |
VOID | |
); | |
EFI_STATUS | |
BdsLibDisconnectAllEfi ( | |
VOID | |
); | |
// | |
// Bds console relate lib functions | |
// | |
VOID | |
BdsLibConnectAllConsoles ( | |
VOID | |
); | |
EFI_STATUS | |
BdsLibConnectAllDefaultConsoles ( | |
VOID | |
); | |
EFI_STATUS | |
BdsLibUpdateConsoleVariable ( | |
IN CHAR16 *ConVarName, | |
IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath, | |
IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath | |
); | |
EFI_STATUS | |
BdsLibConnectConsoleVariable ( | |
IN CHAR16 *ConVarName | |
); | |
// | |
// Bds device path relate lib functions | |
// | |
EFI_DEVICE_PATH_PROTOCOL * | |
BdsLibUnpackDevicePath ( | |
IN EFI_DEVICE_PATH_PROTOCOL *DevPath | |
); | |
BOOLEAN | |
BdsLibMatchDevicePaths ( | |
IN EFI_DEVICE_PATH_PROTOCOL *Multi, | |
IN EFI_DEVICE_PATH_PROTOCOL *Single | |
); | |
CHAR16 * | |
DevicePathToStr ( | |
EFI_DEVICE_PATH_PROTOCOL *DevPath | |
); | |
VOID * | |
EfiLibGetVariable ( | |
IN CHAR16 *Name, | |
IN EFI_GUID *VendorGuid | |
); | |
// | |
// Internal definitions | |
// | |
typedef struct { | |
CHAR16 *str; | |
UINTN len; | |
UINTN maxlen; | |
} POOL_PRINT; | |
typedef struct { | |
UINT8 Type; | |
UINT8 SubType; | |
VOID (*Function) (POOL_PRINT *, VOID *); | |
} DEVICE_PATH_STRING_TABLE; | |
// | |
// Internal functions | |
// | |
EFI_STATUS | |
BdsBootByDiskSignatureAndPartition ( | |
IN BDS_COMMON_OPTION * Option, | |
IN HARDDRIVE_DEVICE_PATH * HardDriveDevicePath, | |
IN UINT32 LoadOptionsSize, | |
IN VOID *LoadOptions, | |
OUT UINTN *ExitDataSize, | |
OUT CHAR16 **ExitData OPTIONAL | |
); | |
// | |
// Notes: EFI 64 shadow all option rom | |
// | |
#ifdef EFI64 | |
#define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom (); | |
VOID | |
ShadowAllOptionRom(); | |
#else | |
#define EFI64_SHADOW_ALL_LEGACY_ROM() | |
#endif | |
// | |
// BBS support macros and functions | |
// | |
#ifdef EFI32 | |
#define REFRESH_LEGACY_BOOT_OPTIONS \ | |
BdsDeleteAllInvalidLegacyBootOptions ();\ | |
BdsAddNonExistingLegacyBootOptions (); \ | |
BdsUpdateLegacyDevOrder () | |
#else | |
#define REFRESH_LEGACY_BOOT_OPTIONS | |
#endif | |
EFI_STATUS | |
BdsDeleteAllInvalidLegacyBootOptions ( | |
VOID | |
); | |
EFI_STATUS | |
BdsAddNonExistingLegacyBootOptions ( | |
VOID | |
); | |
EFI_STATUS | |
BdsUpdateLegacyDevOrder ( | |
VOID | |
); | |
EFI_STATUS | |
BdsRefreshBbsTableForBoot ( | |
IN BDS_COMMON_OPTION *Entry | |
); | |
#endif // _BDS_LIB_H_ |