/** @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 <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
\r
@param CallerId This optional parameter may be used to identify the caller.\r
This parameter allows the status code driver to apply different rules to different callers.\r
- Type EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.\r
+ Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0 Specification.\r
\r
\r
@param Data This optional parameter may be used to pass additional data\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