MdeModulePkg: Add a PEIM to install Debug PPI

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1549

Add a PEIM to install Debug PPI so that PEI debug library
instance can locate gEdkiiDebugPpiGuid to implement the
debug functions. Using this PPI can reduce the size of
PEIMs which consume the debug library.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Zhichao Gao <zhichao.gao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Michael Turner <Michael.Turner@microsoft.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Reviewed-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Zhichao Gao 2019-03-14 17:03:49 +08:00 committed by Liming Gao
parent 52e22c60ea
commit 2bc8224463
4 changed files with 227 additions and 0 deletions

View File

@ -0,0 +1,56 @@
/** @file
Header file of Debug services instances.
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
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.
**/
#ifndef __DEBUG_SERVICE_H__
#define __DEBUG_SERVICE_H__
#include <Ppi/Debug.h>
/**
Print a debug message to debug output device if the specified error level
is enabled.
@param[in] ErrorLevel The error level of the debug message.
@param[in] Format Format string for the debug message to print.
@param[in] Marker BASE_LIST marker for the variable argument list.
**/
VOID
EFIAPI
PeiDebugBPrint(
IN UINTN ErrorLevel,
IN CONST CHAR8 *Format,
IN BASE_LIST Marker
);
/**
Prints an assert message containing a filename, line number, and description.
This may be followed by a breakpoint or a dead loop.
@param[in] FileName The pointer to the name of the source file that
generated the assert condition.
@param[in] LineNumber The line number in the source file that generated
the assert condition
@param[in] Description The pointer to the description of the assert condition.
**/
VOID
EFIAPI
PeiDebugAssert(
IN CONST CHAR8 *FileName,
IN UINTN LineNumber,
IN CONST CHAR8 *Description
);
#endif

View File

@ -0,0 +1,100 @@
/** @file
This driver installs gEdkiiDebugPpiGuid PPI to provide
debug services for PEIMs.
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
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.
**/
#include <Uefi/UefiBaseType.h>
#include <Library/PeimEntryPoint.h>
#include <Library/PeiServicesLib.h>
#include <Library/DebugLib.h>
#include <Ppi/Debug.h>
#include "DebugService.h"
EDKII_DEBUG_PPI mDebugPpi = {
PeiDebugBPrint,
PeiDebugAssert
};
EFI_PEI_PPI_DESCRIPTOR mDebugServicePpi = {
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEdkiiDebugPpiGuid,
(VOID *)&mDebugPpi
};
/**
Print a debug message to debug output device if the specified error level
is enabled.
@param[in] ErrorLevel The error level of the debug message.
@param[in] Format Format string for the debug message to print.
@param[in] Marker BASE_LIST marker for the variable argument list.
**/
VOID
EFIAPI
PeiDebugBPrint(
IN UINTN ErrorLevel,
IN CONST CHAR8 *Format,
IN BASE_LIST Marker
)
{
DebugBPrint(ErrorLevel, Format, Marker);
}
/**
Print an assert message containing a filename, line number, and description.
This may be followed by a breakpoint or a dead loop.
@param[in] FileName The pointer to the name of the source file that
generated the assert condition.
@param[in] LineNumber The line number in the source file that generated
the assert condition
@param[in] Description The pointer to the description of the assert condition.
**/
VOID
EFIAPI
PeiDebugAssert(
IN CONST CHAR8 *FileName,
IN UINTN LineNumber,
IN CONST CHAR8 *Description
)
{
DebugAssert(FileName, LineNumber, Description);
}
/**
Entry point of Debug Service PEIM
This funciton installs EDKII DEBUG PPI
@param FileHandle Handle of the file being invoked.
@param PeiServices Describes the list of possible PEI Services.
@retval EFI_SUCESS The entry point of Debug Service PEIM executes successfully.
@retval Others Some error occurs during the execution of this function.
**/
EFI_STATUS
EFIAPI
DebugSerivceInitialize (
IN EFI_PEI_FILE_HANDLE FileHandle,
IN CONST EFI_PEI_SERVICES **PeiServices
)
{
return PeiServicesInstallPpi (&mDebugServicePpi);
}

View File

@ -0,0 +1,51 @@
## @file
# Debug services for PEI phase
#
# This module installs gEdkiiDebugPpiGuid PPI to provide
# debug services for PEIMs.
#
# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
#
# 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 = DebugServicePei
MODULE_UNI_FILE = DebugServicePei.uni
FILE_GUID = B73F81B9-1DFC-487C-824C-0509EE2B0128
MODULE_TYPE = PEIM
VERSION_STRING = 1.0
ENTRY_POINT = DebugSerivceInitialize
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64 EBC
#
[Sources]
DebugServicePei.c
DebugService.h
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
PeimEntryPoint
PeiServicesLib
DebugLib
[Ppis]
gEdkiiDebugPpiGuid ## PRODUCE
[Depex]
TRUE

View File

@ -0,0 +1,20 @@
///** @file
// This driver installs gEdkiiDebugPpiGuid PPI to provide
// debug services for PEIMs.
//
// Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
//
// 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.
//
//**/
#string STR_MODULE_ABSTRACT #language en-US "Provide debug services at PEI phase."
#string STR_MODULE_DESCRIPTION #language en-US "It produces gEdkiiDebugPpiGuid to print message to debug output device"