1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
/*++
Copyright (c) 2005 - 2007, 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:
ShellDebug.c
Abstract:
Support for Debug primatives.
--*/
#include "EfiShellLib.h"
#include EFI_PROTOCOL_DEFINITION (DebugAssert)
EFI_DEBUG_ASSERT_PROTOCOL *mDebugAssert = NULL;
EFI_STATUS
EfiDebugAssertInit (
VOID
)
{
EFI_STATUS Status;
Status = LibLocateProtocol (&gEfiDebugAssertProtocolGuid, (VOID **) &mDebugAssert);
return Status;
}
VOID
EfiDebugAssert (
IN CHAR8 *FileName,
IN INTN LineNumber,
IN CHAR8 *Description
)
/*++
Routine Description:
Worker function for ASSERT(). If Error Logging hub is loaded log ASSERT
information. If Error Logging hub is not loaded BREAKPOINT().
Arguments:
FileName - File name of failing routine.
LineNumber - Line number of failing ASSERT().
Description - Descritption, usally the assertion,
Returns:
None
--*/
{
if (mDebugAssert != NULL) {
mDebugAssert->Assert (mDebugAssert, FileName, LineNumber, Description);
}
}
VOID
EfiDebugPrint (
IN UINTN ErrorLevel,
IN CHAR8 *Format,
...
)
/*++
Routine Description:
Worker function for DEBUG(). If Error Logging hub is loaded log ASSERT
information. If Error Logging hub is not loaded do nothing.
Arguments:
ErrorLevel - If error level is set do the debug print.
Format - String to use for the print, followed by Print arguments.
Returns:
None
--*/
{
VA_LIST Marker;
VA_START (Marker, Format);
if (mDebugAssert != NULL) {
mDebugAssert->Print (mDebugAssert, ErrorLevel, Format, Marker);
}
VA_END (Marker);
}
VOID
EFIDebugVariable (
VOID
)
/*++
Routine Description:
Initializes the EFIDebug variable
Arguments:
None
Returns:
None
--*/
{
EFI_STATUS Status;
UINT32 Attributes;
UINTN DataSize;
UINTN NewEFIDebug;
DataSize = sizeof (EFIDebug);
Status = RT->GetVariable (L"EFIDebug", &gEfiGenericVariableGuid, &Attributes, &DataSize, &NewEFIDebug);
if (!EFI_ERROR (Status)) {
EFIDebug = NewEFIDebug;
}
}
|