summaryrefslogtreecommitdiff
path: root/Core/PeiDebug.h
diff options
context:
space:
mode:
Diffstat (limited to 'Core/PeiDebug.h')
-rw-r--r--Core/PeiDebug.h108
1 files changed, 108 insertions, 0 deletions
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