| /*++ | |
| Copyright (c) 2007, 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. | |
| 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 | |
| // | |
| #define PEI_ASSERT(PeiST, assertion) if(!(assertion)) \ | |
| _PEI_DEBUG_ASSERT(PeiST, assertion) | |
| #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 | |
| #define ASSERT_PEI_ERROR(PeiST, status) PEI_ASSERT(PeiST, !EFI_ERROR(status)) | |
| #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 |