/** @file\r
OEM hook status code library functions with no library constructor/destructor\r
\r
- Copyright (c) 2006, Intel Corporation\r
+ Copyright (c) 2006 - 2010, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
//\r
// The package level header files this module uses\r
//\r
-#include <FrameworkPei.h>\r
-#include <FrameworkModulePei.h>\r
#include <WinNtPeim.h>\r
\r
//\r
// The protocols, PPI and GUID defintions for this module\r
//\r
#include <Guid/StatusCodeDataTypeId.h>\r
+#include <Guid/StatusCodeDataTypeDebug.h>\r
#include <Ppi/NtThunk.h>\r
//\r
// The Library classes this module consumes\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/ReportStatusCodeLib.h>\r
#include <Library/PeiServicesLib.h>\r
-#include <DebugInfo.h>\r
\r
//\r
// Cache of WinNtThunk protocol\r
//\r
-STATIC\r
EFI_WIN_NT_THUNK_PROTOCOL *mWinNt;\r
\r
//\r
// Cache of standard output handle .\r
//\r
-STATIC\r
HANDLE mStdOut;\r
\r
/**\r
UINT32 ErrorLevel;\r
UINT32 LineNumber;\r
UINTN CharCount;\r
- VA_LIST Marker;\r
- EFI_DEBUG_INFO *DebugInfo;\r
+ BASE_LIST Marker;\r
\r
Buffer[0] = '\0';\r
\r
//\r
CharCount = AsciiSPrint (\r
Buffer,\r
- EFI_STATUS_CODE_DATA_MAX_SIZE,\r
+ sizeof (Buffer),\r
"\n\rASSERT!: %a (%d): %a\n\r",\r
Filename,\r
LineNumber,\r
mStdOut,\r
Buffer,\r
CharCount,\r
- &CharCount,\r
+ (LPDWORD)&CharCount,\r
NULL\r
);\r
\r
//\r
// Print DEBUG() information into output buffer.\r
//\r
- CharCount = AsciiVSPrint (\r
+ CharCount = AsciiBSPrint (\r
Buffer,\r
- EFI_STATUS_CODE_DATA_MAX_SIZE,\r
+ sizeof (Buffer),\r
Format,\r
Marker\r
);\r
- } else if (Data != NULL &&\r
- CompareGuid (&Data->Type, &gEfiStatusCodeSpecificDataGuid) &&\r
- (CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_DEBUG_CODE) {\r
- //\r
- // Print specific data into output buffer.\r
- //\r
- DebugInfo = (EFI_DEBUG_INFO *) (Data + 1);\r
- Marker = (VA_LIST) (DebugInfo + 1);\r
- Format = (CHAR8 *) (((UINT64 *) Marker) + 12);\r
-\r
- CharCount = AsciiVSPrint (Buffer, EFI_STATUS_CODE_DATA_MAX_SIZE, Format, Marker);\r
} else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) {\r
//\r
// Print ERROR information into output buffer.\r
//\r
CharCount = AsciiSPrint (\r
Buffer,\r
- EFI_STATUS_CODE_DATA_MAX_SIZE,\r
+ sizeof (Buffer),\r
"ERROR: C%x:V%x I%x",\r
CodeType,\r
Value,\r
if (CallerId != NULL) {\r
CharCount += AsciiSPrint (\r
&Buffer[CharCount - 1],\r
- (EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),\r
+ (sizeof (Buffer) - (sizeof (Buffer[0]) * CharCount)),\r
" %g",\r
CallerId\r
);\r
if (Data != NULL) {\r
CharCount += AsciiSPrint (\r
&Buffer[CharCount - 1],\r
- (EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),\r
- " %x",\r
+ (sizeof (Buffer) - (sizeof (Buffer[0]) * CharCount)),\r
+ " %p",\r
Data\r
);\r
}\r
\r
CharCount += AsciiSPrint (\r
&Buffer[CharCount - 1],\r
- (EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),\r
+ (sizeof (Buffer) - (sizeof (Buffer[0]) * CharCount)),\r
"\n\r"\r
);\r
} else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) {\r
CharCount = AsciiSPrint (\r
Buffer,\r
- EFI_STATUS_CODE_DATA_MAX_SIZE,\r
+ sizeof (Buffer),\r
"PROGRESS CODE: V%x I%x\n\r",\r
Value,\r
Instance\r
} else {\r
CharCount = AsciiSPrint (\r
Buffer,\r
- EFI_STATUS_CODE_DATA_MAX_SIZE,\r
+ sizeof (Buffer),\r
"Undefined: C%x:V%x I%x\n\r",\r
CodeType,\r
Value,\r
mStdOut,\r
Buffer,\r
CharCount,\r
- &CharCount,\r
+ (LPDWORD)&CharCount,\r
NULL\r
);\r
\r