From b7c51c9cf4864df6aabb99a1ae843becd577237c Mon Sep 17 00:00:00 2001 From: raywu Date: Fri, 15 Jun 2018 00:00:50 +0800 Subject: init. 1AQQW051 --- Core/PeiDebug.h | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 Core/PeiDebug.h (limited to 'Core/PeiDebug.h') diff --git a/Core/PeiDebug.h b/Core/PeiDebug.h new file mode 100644 index 0000000..b39a59f --- /dev/null +++ b/Core/PeiDebug.h @@ -0,0 +1,108 @@ +/*++ + +Copyright (c) 2004, 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: + + PeiDebug.h + +Abstract: + + PEI Debug macros. The work needs to be done in library. The Debug + macros them selves are standard for all files, including the core. + + There needs to be code linked in that produces the following macros: + + PeiDebugAssert(file, linenumber, assertion string) - worker function for + ASSERT. filename and line number of where this ASSERT() is located + is passed in along with the stringized version of the assertion. + + PeiDebugPrint - Worker function for debug print + + _DEBUG_SET_MEM(address, length, value) - Set memory at address to value + for legnth bytes. This macro is used to initialzed uninitialized memory + or memory that is free'ed, so it will not be used by mistake. + +--*/ + +#ifndef _PEIDEBUG_H_ +#define _PEIDEBUG_H_ + +#ifdef EFI_DEBUG + + VOID + PeiDebugAssert ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CHAR8 *FileName, + IN INTN LineNumber, + IN CHAR8 *Description + ); + + VOID + PeiDebugPrint ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN ErrorLevel, + IN CHAR8 *Format, + ... + ); + + #define _PEI_DEBUG_ASSERT(PeiST, assertion) \ + PeiDebugAssert (PeiST, __FILE__, __LINE__, #assertion) + + #define _PEI_DEBUG(PeiST, arg) PeiDebugPrint (PeiST, arg) + + // + // Define ASSERT() macro, if assertion is FALSE trigger the ASSERT + // +#ifndef PEI_ASSERT + #define PEI_ASSERT(PeiST, assertion) if(!(assertion)) \ + _PEI_DEBUG_ASSERT(PeiST, assertion) +#endif + + #define PEI_ASSERT_LOCKED(PeiST, l) if(!(l)->Lock) _PEI_DEBUG_ASSERT(PeiST, l not locked) + + // + // DEBUG((DebugLevel, "format string", ...)) - if DebugLevel is active do + // the a debug print. + // + + #define PEI_DEBUG(arg) PeiDebugPrint arg + + #define PEI_DEBUG_CODE(code) code + + #define PEI_CR(Record, TYPE, Field, Signature) \ + _CR(Record, TYPE, Field) + + + #define _PEI_DEBUG_SET_MEM(address, length, data) SetMem(address, length, data) + +#else + #define PEI_ASSERT(PeiST, a) + #define PEI_ASSERT_LOCKED(PeiST, l) + #define PEI_DEBUG(arg) + #define PEI_DEBUG_CODE(code) + #define PEI_CR(Record, TYPE, Field, Signature) \ + _CR(Record, TYPE, Field) + #define _PEI_DEBUG_SET_MEM(address, length, data) +#endif + +#ifndef ASSERT_PEI_ERROR +#define ASSERT_PEI_ERROR(PeiST, status) PEI_ASSERT(PeiST, !EFI_ERROR(status)) +#endif + +#ifdef EFI_DEBUG_CLEAR_MEMORY + #define PEI_DEBUG_SET_MEMORY(address,length) \ + _PEI_DEBUG_SET_MEM(address, length, EFI_BAD_POINTER_AS_BYTE) +#else + #define PEI_DEBUG_SET_MEMORY(address,length) +#endif + + +#endif -- cgit v1.2.3