#include <Protocol/GenericMemoryTest.h>\r
#include <Library/GenericBdsLib.h>\r
\r
-//\r
-// Bds AP Context data\r
-//\r
-#define EFI_BDS_ARCH_PROTOCOL_INSTANCE_SIGNATURE SIGNATURE_32 ('B', 'd', 's', 'A')\r
-typedef struct _EFI_BDS_ARCH_PROTOCOL_INSTANCE EFI_BDS_ARCH_PROTOCOL_INSTANCE;\r
-\r
-struct _EFI_BDS_ARCH_PROTOCOL_INSTANCE {\r
- UINTN Signature;\r
- EFI_HANDLE Handle;\r
- EFI_BDS_ARCH_PROTOCOL Bds;\r
- ///\r
- /// Save the current boot mode\r
- ///\r
- EFI_BOOT_MODE BootMode;\r
- ///\r
- /// Set true if boot with default settings\r
- ///\r
- BOOLEAN DefaultBoot;\r
- ///\r
- /// The system default timeout for choose the boot option\r
- ///\r
- UINT16 TimeoutDefault;\r
- ///\r
- /// Memory Test Level\r
- ///\r
- EXTENDMEM_COVERAGE_LEVEL MemoryTestLevel;\r
-};\r
-\r
/**\r
Platform Bds init. Include the platform firmware vendor, revision\r
and so crc check.\r
\r
- @param PrivateData The EFI_BDS_ARCH_PROTOCOL_INSTANCE instance\r
-\r
**/\r
VOID\r
EFIAPI\r
PlatformBdsInit (\r
- IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData\r
+ VOID\r
);\r
\r
/**\r
is driven by boot mode. IBV/OEM can customize this code for their specific\r
policy action.\r
\r
- @param PrivateData The EFI_BDS_ARCH_PROTOCOL_INSTANCE instance\r
@param DriverOptionList The header of the driver option link list\r
@param BootOptionList The header of the boot option link list\r
\r
VOID\r
EFIAPI\r
PlatformBdsPolicyBehavior (\r
- IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData,\r
IN LIST_ENTRY *DriverOptionList,\r
IN LIST_ENTRY *BootOptionList\r
);\r
Platform Bds init. Include the platform firmware vendor, revision\r
and so crc check.\r
\r
- @param PrivateData The EFI_BDS_ARCH_PROTOCOL_INSTANCE instance\r
-\r
**/\r
VOID\r
EFIAPI\r
PlatformBdsInit (\r
- IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData\r
+ VOID\r
)\r
{\r
- return;\r
}\r
\r
/**\r
VOID\r
)\r
{\r
- return;\r
}\r
\r
/**\r
IN OUT LIST_ENTRY *BdsDriverLists\r
)\r
{\r
- return;\r
}\r
\r
/**\r
IN BOOLEAN QuietBoot\r
)\r
{\r
- return;\r
}\r
\r
/**\r
is driven by boot mode. IBV/OEM can customize this code for their specific\r
policy action.\r
\r
- @param PrivateData The EFI_BDS_ARCH_PROTOCOL_INSTANCE instance\r
@param DriverOptionList The header of the driver option link list\r
@param BootOptionList The header of the boot option link list\r
\r
VOID\r
EFIAPI\r
PlatformBdsPolicyBehavior (\r
- IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData,\r
IN LIST_ENTRY *DriverOptionList,\r
IN LIST_ENTRY *BootOptionList\r
)\r
{\r
- return ;\r
}\r
\r
/**\r
IN BDS_COMMON_OPTION *Option\r
)\r
{\r
- return;\r
}\r
\r
/**\r
IN UINTN ExitDataSize\r
)\r
{\r
- return;\r
}\r
\r
/**\r
#include <Library/GenericBdsLib.h>\r
#include <Library/PlatformBdsLib.h>\r
\r
-#define EFI_BDS_ARCH_PROTOCOL_INSTANCE_FROM_THIS(_this) \\r
- CR ((_this), \\r
- EFI_BDS_ARCH_PROTOCOL_INSTANCE, \\r
- Bds, \\r
- EFI_BDS_ARCH_PROTOCOL_INSTANCE_SIGNATURE \\r
- )\r
-\r
#pragma pack(1)\r
\r
///\r
/// Please refer to the library useage of BdsLibGetBootMode, BdsLibGetTimeout \r
/// and PlatformBdsDiagnostics in BdsPlatform.c\r
///\r
-EFI_BDS_ARCH_PROTOCOL_INSTANCE gBdsInstanceTemplate = {\r
- EFI_BDS_ARCH_PROTOCOL_INSTANCE_SIGNATURE,\r
- NULL,\r
- {BdsEntry},\r
- 0xFFFF,\r
- TRUE,\r
- 0,\r
- EXTENSIVE\r
+EFI_HANDLE gBdsHandle = NULL;\r
+\r
+EFI_BDS_ARCH_PROTOCOL gBds = {\r
+ BdsEntry\r
};\r
\r
UINT16 *mBootNext = NULL;\r
//\r
// Install protocol interface\r
//\r
- Status = gBS->InstallProtocolInterface (\r
- &gBdsInstanceTemplate.Handle,\r
- &gEfiBdsArchProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- &gBdsInstanceTemplate.Bds\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &gBdsHandle,\r
+ &gEfiBdsArchProtocolGuid, &gBds,\r
+ NULL\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
IN EFI_BDS_ARCH_PROTOCOL *This\r
)\r
{\r
- EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData;\r
LIST_ENTRY DriverOptionList;\r
LIST_ENTRY BootOptionList;\r
UINTN BootNextSize;\r
//\r
InitializeHotkeyService ();\r
\r
- //\r
- // Get the BDS private data\r
- //\r
- PrivateData = EFI_BDS_ARCH_PROTOCOL_INSTANCE_FROM_THIS (This);\r
-\r
//\r
// Do the platform init, can be customized by OEM/IBV\r
//\r
PERF_START (0, "PlatformBds", "BDS", 0);\r
- PlatformBdsInit (PrivateData);\r
+ PlatformBdsInit ();\r
\r
InitializeHwErrRecSupport();\r
\r
//\r
// Setup some platform policy here\r
//\r
- PlatformBdsPolicyBehavior (PrivateData, &DriverOptionList, &BootOptionList);\r
+ PlatformBdsPolicyBehavior (&DriverOptionList, &BootOptionList);\r
PERF_END (0, "PlatformBds", "BDS", 0);\r
\r
//\r