From 25126a0530371f7a8e20bf663cc1beaf3eebd6f2 Mon Sep 17 00:00:00 2001 From: xli24 Date: Tue, 3 Nov 2009 02:39:10 +0000 Subject: Enable Report Status Code Router introduced in PI 1.2 for PEI and DXE. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9388 6f19259b-4bc3-4df7-8a09-765794883524 --- Nt32Pkg/Nt32Pkg.dsc | 8 +- Nt32Pkg/Nt32Pkg.fdf | 14 +++- .../WinNtOemHookStatusCodeHandlerDxe.c | 68 +++++++++++++++++ .../WinNtOemHookStatusCodeHandlerDxe.inf | 51 +++++++++++++ .../WinNtOemHookStatusCodeHandlerPei.c | 89 ++++++++++++++++++++++ .../WinNtOemHookStatusCodeHandlerPei.inf | 51 +++++++++++++ 6 files changed, 275 insertions(+), 6 deletions(-) create mode 100644 Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.c create mode 100644 Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.inf create mode 100644 Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.c create mode 100644 Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf (limited to 'Nt32Pkg') diff --git a/Nt32Pkg/Nt32Pkg.dsc b/Nt32Pkg/Nt32Pkg.dsc index 8b130f04c8..406ef8ffe5 100644 --- a/Nt32Pkg/Nt32Pkg.dsc +++ b/Nt32Pkg/Nt32Pkg.dsc @@ -363,7 +363,9 @@ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf } - IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf + MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf + IntelFrameworkModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf + Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf Nt32Pkg/BootModePei/BootModePei.inf Nt32Pkg/WinNtFlashMapPei/WinNtFlashMapPei.inf MdeModulePkg/Universal/Variable/Pei/VariablePei.inf @@ -400,7 +402,9 @@ IntelFrameworkModulePkg/Universal/DataHubStdErrDxe/DataHubStdErrDxe.inf Nt32Pkg/MiscSubClassPlatformDxe/MiscSubClassPlatformDxe.inf Nt32Pkg/TimerDxe/TimerDxe.inf - IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf + MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf + IntelFrameworkModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf + Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.inf MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf diff --git a/Nt32Pkg/Nt32Pkg.fdf b/Nt32Pkg/Nt32Pkg.fdf index 15d070a145..d2d8ccea76 100644 --- a/Nt32Pkg/Nt32Pkg.fdf +++ b/Nt32Pkg/Nt32Pkg.fdf @@ -1,6 +1,6 @@ # This is NT32 FDF file with UEFI HII features enabled # -# Copyright (c) 2007, Intel Corporation +# Copyright (c) 2007 - 2009, 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 @@ -154,7 +154,9 @@ FvNameGuid = 6D99E806-3D38-42c2-A095-5F4300BFD7DC ## APRIORI PEI { INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf - INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf + INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf + INF IntelFrameworkModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf + INF Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf } APRIORI DXE { INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf @@ -163,7 +165,9 @@ APRIORI DXE { INF MdeModulePkg/Core/Pei/PeiMain.inf INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf -INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf +INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf +INF IntelFrameworkModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf +INF Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf INF Nt32Pkg/BootModePei/BootModePei.inf INF Nt32Pkg/WinNtFlashMapPei/WinNtFlashMapPei.inf INF Nt32Pkg/WinNtAutoScanPei/WinNtAutoScanPei.inf @@ -194,7 +198,9 @@ INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf INF IntelFrameworkModulePkg/Universal/DataHubStdErrDxe/DataHubStdErrDxe.inf INF Nt32Pkg/MiscSubClassPlatformDxe/MiscSubClassPlatformDxe.inf INF Nt32Pkg/TimerDxe/TimerDxe.inf -INF IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf +INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf +INF IntelFrameworkModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf +INF Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.inf INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf diff --git a/Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.c b/Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.c new file mode 100644 index 0000000000..dce9f96576 --- /dev/null +++ b/Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.c @@ -0,0 +1,68 @@ +/** @file + OEM hook status code handler driver which produces general handler and hook it + onto the DXE status code router. + + Copyright (c) 2006 - 2009, 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. + +**/ + +// +// The package level header files this module uses +// +#include + +// +// The protocols, PPI and GUID defintions for this module +// +#include + +// +// The Library classes this module consumes +// +#include +#include +#include +#include + +/** + Entry point of OEM hook status code handler driver. + + This function is the entry point of this OEM hook status code handler driver. + It initializes registers OEM status code handler. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +WinNtOemHookStatusCodeHandlerDxeEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_RSC_HANDLER_PROTOCOL *RscHandlerProtocol; + + Status = gBS->LocateProtocol ( + &gEfiRscHandlerProtocolGuid, + NULL, + (VOID **) &RscHandlerProtocol + ); + ASSERT_EFI_ERROR (Status); + + OemHookStatusCodeInitialize (); + + RscHandlerProtocol->Register (OemHookStatusCodeReport, TPL_HIGH_LEVEL); + + return EFI_SUCCESS; +} diff --git a/Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.inf b/Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.inf new file mode 100644 index 0000000000..dfd3c062e9 --- /dev/null +++ b/Nt32Pkg/WinNtOemHookStatusCodeHandlerDxe/WinNtOemHookStatusCodeHandlerDxe.inf @@ -0,0 +1,51 @@ +#/** @file +# OEM hook status code handler driver which produces general handler and hook it +# onto the DXE status code router. +# +# Copyright (c) 2007 - 2009, 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. +# +# +#**/ + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = WinNtOemHookStatusCodeHandlerDxe + FILE_GUID = CA4233AD-847E-4E5D-AD3F-21CABFE5E23C + MODULE_TYPE = DXE_DRIVER + ENTRY_POINT = WinNtOemHookStatusCodeHandlerDxeEntry + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 +# +# HOB Guid C Name: gEfiWinNtThunkProtocolGuid Hob Type: GUID_EXTENSION +# + +[Sources.common] + WinNtOemHookStatusCodeHandlerDxe.c + + +[Packages] + Nt32Pkg/Nt32Pkg.dec + MdePkg/MdePkg.dec + IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec + +[LibraryClasses] + DebugLib + UefiDriverEntryPoint + UefiBootServicesTableLib + OemHookStatusCodeLib + +[Protocols] + gEfiRscHandlerProtocolGuid ## CONSUMES + +[Depex] + gEfiRscHandlerProtocolGuid diff --git a/Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.c b/Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.c new file mode 100644 index 0000000000..e9ab12a267 --- /dev/null +++ b/Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.c @@ -0,0 +1,89 @@ +/** @file + OEM hook status code handler PEIM which produces general handler and hook it + onto the PEI status code router. + + Copyright (c) 2006 - 2009, 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. + +**/ + +// +// The package level header files this module uses +// +#include + +// +// The protocols, PPI and GUID defintions for this module +// +#include +// +// The Library classes this module consumes +// +#include +#include +#include +#include + +EFI_STATUS +EFIAPI +OemHookStatusCodeReportWrapper ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE CodeType, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN CONST EFI_GUID *CallerId, OPTIONAL + IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL + ) +{ + return OemHookStatusCodeReport ( + CodeType, + Value, + Instance, + (EFI_GUID *) CallerId, + (EFI_STATUS_CODE_DATA *) Data + ); +} + +/** + Entry point of OEM hook status code handler PEIM. + + This function is the entry point of this OEM hook status code handler PEIM. + It initializes and registers OEM status code handler. + + @param FileHandle Handle of the file being invoked. + @param PeiServices Describes the list of possible PEI Services. + + @retval EFI_SUCESS The entry point executes successfully. + +**/ +EFI_STATUS +EFIAPI +WinNtOemHookStatusCodeHandlerPeiEntry ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + EFI_PEI_RSC_HANDLER_PPI *RscHandlerPpi; + + Status = PeiServicesLocatePpi ( + &gEfiPeiRscHandlerPpiGuid, + 0, + NULL, + (VOID **) &RscHandlerPpi + ); + ASSERT_EFI_ERROR (Status); + + OemHookStatusCodeInitialize (); + + Status = RscHandlerPpi->Register (OemHookStatusCodeReportWrapper); + ASSERT_EFI_ERROR (Status); + + return EFI_SUCCESS; +} diff --git a/Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf b/Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf new file mode 100644 index 0000000000..b5a18a7188 --- /dev/null +++ b/Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf @@ -0,0 +1,51 @@ +#/** @file +# OEM hook status code handler PEIM which produces general handler and hook it +# onto the PEI status code router. +# +# Copyright (c) 2007 - 2009, 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. + +# +# +#**/ + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = WinNtOemHookStatusCodeHandlerPei + FILE_GUID = D233D6BD-F1B1-425A-BF45-5CAF2B88EDDC + MODULE_TYPE = PEIM + ENTRY_POINT = WinNtOemHookStatusCodeHandlerPeiEntry + + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 +# + +[Sources.common] + WinNtOemHookStatusCodeHandlerPei.c + + +[Packages] + MdePkg/MdePkg.dec + IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec + Nt32Pkg/Nt32Pkg.dec + +[LibraryClasses] + PeimEntryPoint + PeiServicesLib + DebugLib + OemHookStatusCodeLib + +[Ppis] + gEfiPeiRscHandlerPpiGuid ## CONSUMES + +[Depex] + gEfiPeiRscHandlerPpiGuid -- cgit v1.2.3