From c69dd9dfad3eb97d5e21f520f3ba35d102ec4cfa Mon Sep 17 00:00:00 2001 From: klu2 Date: Thu, 17 Apr 2008 05:48:13 +0000 Subject: Porting Duet module from EDKI to EDKII git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5076 6f19259b-4bc3-4df7-8a09-765794883524 --- .../RtPlatformStatusCode/RtPlatformStatusCode.c | 146 +++++++++++++++++++++ .../RtPlatformStatusCode/RtPlatformStatusCode.inf | 47 +++++++ 2 files changed, 193 insertions(+) create mode 100644 DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.c create mode 100644 DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.inf (limited to 'DuetPkg/RtPlatformStatusCode') diff --git a/DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.c b/DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.c new file mode 100644 index 0000000000..bf00b02146 --- /dev/null +++ b/DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.c @@ -0,0 +1,146 @@ +/*++ + +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: + + RtPlatformStatusCode.c + +Abstract: + + Contains NT32 specific implementations required to use status codes. + +--*/ + +// +// Statements that include other files. +// +#include "Tiano.h" +#include "EfiCommonLib.h" +#include "EfiRuntimeLib.h" +#include "EfiStatusCode.h" +#include "EfiHobLib.h" +#include "RtMemoryStatusCodeLib.h" +#include "BsDataHubStatusCodeLib.h" + +// +// Consumed protocols +// +#include EFI_ARCH_PROTOCOL_CONSUMER (StatusCode) + +// +// GUID definitions +// +#include EFI_GUID_DEFINITION (Hob) + +// +// Globals only work at BootService Time. NOT at Runtime! +// +EFI_REPORT_STATUS_CODE mPeiReportStatusCode; + +// +// Function implementations +// +EFI_RUNTIMESERVICE +EFI_STATUS +EFIAPI +RtPlatformReportStatusCode ( + IN EFI_STATUS_CODE_TYPE CodeType, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ) +/*++ + +Routine Description: + + Call all status code listeners in the MonoStatusCode. + +Arguments: + + Same as ReportStatusCode service + +Returns: + + EFI_SUCCESS Always returns success. + +--*/ +{ + RtMemoryReportStatusCode (CodeType, Value, Instance, CallerId, Data); + if (EfiAtRuntime ()) { + // + // For now all we do is post code at runtime + // + return EFI_SUCCESS; + } + + BsDataHubReportStatusCode (CodeType, Value, Instance, CallerId, Data); + + // + // Call back into PEI to get status codes. This is because SecMain contains + // status code that reports to Win32. + // + if (mPeiReportStatusCode != NULL) { + return mPeiReportStatusCode (CodeType, Value, Instance, CallerId, Data); + } + + return EFI_SUCCESS; +} + +EFI_BOOTSERVICE +VOID +EFIAPI +RtPlatformInitializeStatusCode ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +/*++ + +Routine Description: + + Initialize the status code listeners. + +Arguments: + + (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT) + +Returns: + + None + +--*/ +{ + EFI_STATUS Status; + VOID *HobList; + VOID *Pointer; + + RtMemoryInitializeStatusCode (ImageHandle, SystemTable); + BsDataHubInitializeStatusCode (ImageHandle, SystemTable); + + // + // Play any prior status codes to the data hub. + // + PlaybackStatusCodes (BsDataHubReportStatusCode); + + // + // If PEI has a ReportStatusCode callback find it and use it before StdErr + // is connected. + // + mPeiReportStatusCode = NULL; + + Status = EfiLibGetSystemConfigurationTable (&gEfiHobListGuid, &HobList); + if (!EFI_ERROR (Status)) { + Status = GetNextGuidHob (&HobList, &gEfiStatusCodeRuntimeProtocolGuid, &Pointer, NULL); + if (!EFI_ERROR (Status)) { + mPeiReportStatusCode = (EFI_REPORT_STATUS_CODE) (*(UINTN *) Pointer); + } + } +} diff --git a/DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.inf b/DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.inf new file mode 100644 index 0000000000..d142cebab8 --- /dev/null +++ b/DuetPkg/RtPlatformStatusCode/RtPlatformStatusCode.inf @@ -0,0 +1,47 @@ +#/*++ +# +# 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: +# +# RtPlatformStatusCode.inf +# +# Abstract: +# +# Library selecting the listeners for the platform +# +#--*/ + +[defines] +BASE_NAME = RtPlatformStatusCodeLib +COMPONENT_TYPE = LIBRARY + +[sources.common] + RtPlatformStatusCode.c + +[includes.common] + $(EDK_SOURCE)\Foundation\Framework + $(EDK_SOURCE)\Foundation + $(EDK_SOURCE)\Foundation\Efi + . + $(EDK_SOURCE)\Sample\Platform\Generic\RuntimeDxe\StatusCode\Lib\Include + $(EDK_SOURCE)\Foundation\Include + $(EDK_SOURCE)\Foundation\Efi\Include + $(EDK_SOURCE)\Foundation\Framework\Include + $(EDK_SOURCE)\Foundation\Include\IndustryStandard + $(EDK_SOURCE)\Foundation\Core\Dxe + $(EDK_SOURCE)\Foundation\Library\Dxe\Include + +[libraries.common] + HobLib + RtMemoryStatusCodeLib + BsDataHubStatusCodeLib + +[nmake.common] -- cgit v1.2.3