git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2433 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			396 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			396 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| Copyright (c) 2006 - 2007, 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)
 | |
| 
 | |
| //
 | |
| // Define maximum characters for boot option variable "BootXXXX"
 | |
| //
 | |
| #define BOOT_OPTION_MAX_CHAR 10
 | |
| 
 | |
| //
 | |
| // 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
 | |
|   );
 | |
| 
 | |
| 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
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| BdsLibSafeFreePool (
 | |
|   IN  VOID             *Buffer
 | |
|   );
 | |
| 
 | |
| EFI_DEVICE_PATH_PROTOCOL *
 | |
| BdsLibDelPartMatchInstance (
 | |
|   IN     EFI_DEVICE_PATH_PROTOCOL  *Multi,
 | |
|   IN     EFI_DEVICE_PATH_PROTOCOL  *Single
 | |
|   );
 | |
| 
 | |
| 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
 | |
| //
 | |
| #if   defined (MDE_CPU_IPF)
 | |
| #define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom ();
 | |
| VOID
 | |
| ShadowAllOptionRom();
 | |
| #else
 | |
| #define EFI64_SHADOW_ALL_LEGACY_ROM()
 | |
| #endif
 | |
| 
 | |
| //
 | |
| // BBS support macros and functions
 | |
| //
 | |
| #if   defined (MDE_CPU_IA32)
 | |
| #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
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| BdsDeleteBootOption (
 | |
|   IN UINTN                       OptionNumber,
 | |
|   IN OUT UINT16                  *BootOrder,
 | |
|   IN OUT UINTN                   *BootOrderSize
 | |
|   );
 | |
| 
 | |
| //
 | |
| //The interface functions relate with Setup Browser Reset Reminder feature
 | |
| //
 | |
| VOID
 | |
| EnableResetReminderFeature (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| DisableResetReminderFeature (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| EnableResetRequired (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| DisableResetRequired (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| BOOLEAN
 | |
| IsResetReminderFeatureEnable (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| BOOLEAN
 | |
| IsResetRequired (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| SetupResetReminder (
 | |
|   VOID
 | |
|   );
 | |
|   
 | |
| EFI_STATUS
 | |
| BdsLibGetHiiHandles (
 | |
|   IN     EFI_HII_PROTOCOL *Hii,
 | |
|   IN OUT UINT16           *HandleBufferLength,
 | |
|   OUT    EFI_HII_HANDLE   **HiiHandles
 | |
|   );
 | |
| 
 | |
| #endif // _BDS_LIB_H_
 |