2 API implementation for instance of Report Status Code Library.
4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #include <Library/ReportStatusCodeLib.h>
10 #include <Library/BaseLib.h>
11 #include <Library/DebugLib.h>
12 #include <Library/UefiBootServicesTableLib.h>
13 #include <Library/BaseMemoryLib.h>
14 #include <Library/PcdLib.h>
15 #include <Library/DevicePathLib.h>
16 #include <Library/UefiRuntimeLib.h>
18 #include <Protocol/StatusCode.h>
20 #include <Guid/StatusCodeDataTypeId.h>
21 #include <Guid/StatusCodeDataTypeDebug.h>
22 #include <Guid/EventGroup.h>
24 EFI_STATUS_CODE_PROTOCOL
*mReportStatusCodeLibStatusCodeProtocol
= NULL
;
25 EFI_EVENT mReportStatusCodeLibVirtualAddressChangeEvent
;
26 EFI_EVENT mReportStatusCodeLibExitBootServicesEvent
;
27 BOOLEAN mHaveExitedBootServices
= FALSE
;
30 Locate the report status code service.
32 Retrieve ReportStatusCode() API of Report Status Code Protocol.
36 InternalGetReportStatusCode (
42 if (mReportStatusCodeLibStatusCodeProtocol
!= NULL
) {
46 if (mHaveExitedBootServices
) {
51 // Check gBS just in case ReportStatusCode is called before gBS is initialized.
53 if ((gBS
!= NULL
) && (gBS
->LocateProtocol
!= NULL
)) {
54 Status
= gBS
->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid
, NULL
, (VOID
**)&mReportStatusCodeLibStatusCodeProtocol
);
55 if (EFI_ERROR (Status
)) {
56 mReportStatusCodeLibStatusCodeProtocol
= NULL
;
62 Notification function of EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE.
64 @param Event Event whose notification function is being invoked.
65 @param Context Pointer to the notification function's context
70 ReportStatusCodeLibVirtualAddressChange (
75 if (mReportStatusCodeLibStatusCodeProtocol
== NULL
) {
79 EfiConvertPointer (0, (VOID
**)&mReportStatusCodeLibStatusCodeProtocol
);
83 Notification function of EVT_SIGNAL_EXIT_BOOT_SERVICES.
85 @param Event Event whose notification function is being invoked.
86 @param Context Pointer to the notification function's context
91 ReportStatusCodeLibExitBootServices (
97 // Locate the report status code service before enter runtime.
99 InternalGetReportStatusCode ();
101 mHaveExitedBootServices
= TRUE
;
105 The constructor function of Runtime DXE Report Status Code Lib.
107 This function allocates memory for extended status code data, caches
108 the report status code service, and registers events.
110 @param ImageHandle The firmware allocated handle for the EFI image.
111 @param SystemTable A pointer to the EFI System Table.
113 @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
118 ReportStatusCodeLibConstructor (
119 IN EFI_HANDLE ImageHandle
,
120 IN EFI_SYSTEM_TABLE
*SystemTable
126 // Cache the report status code service
128 InternalGetReportStatusCode ();
131 // Register notify function for EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE
133 Status
= gBS
->CreateEventEx (
136 ReportStatusCodeLibVirtualAddressChange
,
138 &gEfiEventVirtualAddressChangeGuid
,
139 &mReportStatusCodeLibVirtualAddressChangeEvent
141 ASSERT_EFI_ERROR (Status
);
144 // Register notify function for EVT_SIGNAL_EXIT_BOOT_SERVICES
146 Status
= gBS
->CreateEventEx (
149 ReportStatusCodeLibExitBootServices
,
151 &gEfiEventExitBootServicesGuid
,
152 &mReportStatusCodeLibExitBootServicesEvent
154 ASSERT_EFI_ERROR (Status
);
160 The destructor function of Runtime DXE Report Status Code Lib.
162 The destructor function frees memory allocated by constructor, and closes related events.
163 It will ASSERT() if that related operation fails and it will always return EFI_SUCCESS.
165 @param ImageHandle The firmware allocated handle for the EFI image.
166 @param SystemTable A pointer to the EFI System Table.
168 @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
173 ReportStatusCodeLibDestructor (
174 IN EFI_HANDLE ImageHandle
,
175 IN EFI_SYSTEM_TABLE
*SystemTable
180 ASSERT (gBS
!= NULL
);
181 Status
= gBS
->CloseEvent (mReportStatusCodeLibVirtualAddressChangeEvent
);
182 ASSERT_EFI_ERROR (Status
);
184 Status
= gBS
->CloseEvent (mReportStatusCodeLibExitBootServicesEvent
);
185 ASSERT_EFI_ERROR (Status
);
191 Internal worker function that reports a status code through the Report Status Code Protocol.
193 If status code service is not cached, then this function checks if Report Status Code
194 Protocol is available in system. If Report Status Code Protocol is not available, then
195 EFI_UNSUPPORTED is returned. If Report Status Code Protocol is present, then it is
196 cached in mReportStatusCodeLibStatusCodeProtocol. Finally this function reports status
197 code through the Report Status Code Protocol.
199 @param Type Status code type.
200 @param Value Status code value.
201 @param Instance Status code instance number.
202 @param CallerId Pointer to a GUID that identifies the caller of this
203 function. This is an optional parameter that may be
205 @param Data Pointer to the extended data buffer. This is an
206 optional parameter that may be NULL.
208 @retval EFI_SUCCESS The status code was reported.
209 @retval EFI_UNSUPPORTED Report Status Code Protocol is not available.
210 @retval EFI_UNSUPPORTED Status code type is not supported.
214 InternalReportStatusCode (
215 IN EFI_STATUS_CODE_TYPE Type
,
216 IN EFI_STATUS_CODE_VALUE Value
,
218 IN CONST EFI_GUID
*CallerId OPTIONAL
,
219 IN EFI_STATUS_CODE_DATA
*Data OPTIONAL
222 if ((ReportProgressCodeEnabled () && (((Type
) & EFI_STATUS_CODE_TYPE_MASK
) == EFI_PROGRESS_CODE
)) ||
223 (ReportErrorCodeEnabled () && (((Type
) & EFI_STATUS_CODE_TYPE_MASK
) == EFI_ERROR_CODE
)) ||
224 (ReportDebugCodeEnabled () && (((Type
) & EFI_STATUS_CODE_TYPE_MASK
) == EFI_DEBUG_CODE
)))
227 // If mReportStatusCodeLibStatusCodeProtocol is NULL, then check if Report Status Code Protocol is available in system.
229 InternalGetReportStatusCode ();
230 if (mReportStatusCodeLibStatusCodeProtocol
== NULL
) {
231 return EFI_UNSUPPORTED
;
235 // A Report Status Code Protocol is present in system, so pass in all the parameters to the service.
237 return mReportStatusCodeLibStatusCodeProtocol
->ReportStatusCode (Type
, Value
, Instance
, (EFI_GUID
*)CallerId
, Data
);
240 return EFI_UNSUPPORTED
;
244 Converts a status code to an 8-bit POST code value.
246 Converts the status code specified by CodeType and Value to an 8-bit POST code
247 and returns the 8-bit POST code in PostCode. If CodeType is an
248 EFI_PROGRESS_CODE or CodeType is an EFI_ERROR_CODE, then bits 0..4 of PostCode
249 are set to bits 16..20 of Value, and bits 5..7 of PostCode are set to bits
250 24..26 of Value., and TRUE is returned. Otherwise, FALSE is returned.
252 If PostCode is NULL, then ASSERT().
254 @param CodeType The type of status code being converted.
255 @param Value The status code value being converted.
256 @param PostCode A pointer to the 8-bit POST code value to return.
258 @retval TRUE The status code specified by CodeType and Value was converted
259 to an 8-bit POST code and returned in PostCode.
260 @retval FALSE The status code specified by CodeType and Value could not be
261 converted to an 8-bit POST code value.
267 IN EFI_STATUS_CODE_TYPE CodeType
,
268 IN EFI_STATUS_CODE_VALUE Value
,
273 // If PostCode is NULL, then ASSERT()
275 ASSERT (PostCode
!= NULL
);
278 // Convert Value to an 8 bit post code
280 if (((CodeType
& EFI_STATUS_CODE_TYPE_MASK
) == EFI_PROGRESS_CODE
) ||
281 ((CodeType
& EFI_STATUS_CODE_TYPE_MASK
) == EFI_ERROR_CODE
))
283 *PostCode
= (UINT8
)((((Value
& EFI_STATUS_CODE_CLASS_MASK
) >> 24) << 5) |
284 (((Value
& EFI_STATUS_CODE_SUBCLASS_MASK
) >> 16) & 0x1f));
292 Extracts ASSERT() information from a status code structure.
294 Converts the status code specified by CodeType, Value, and Data to the ASSERT()
295 arguments specified by Filename, Description, and LineNumber. If CodeType is
296 an EFI_ERROR_CODE, and CodeType has a severity of EFI_ERROR_UNRECOVERED, and
297 Value has an operation mask of EFI_SW_EC_ILLEGAL_SOFTWARE_STATE, extract
298 Filename, Description, and LineNumber from the optional data area of the
299 status code buffer specified by Data. The optional data area of Data contains
300 a Null-terminated ASCII string for the FileName, followed by a Null-terminated
301 ASCII string for the Description, followed by a 32-bit LineNumber. If the
302 ASSERT() information could be extracted from Data, then return TRUE.
303 Otherwise, FALSE is returned.
305 If Data is NULL, then ASSERT().
306 If Filename is NULL, then ASSERT().
307 If Description is NULL, then ASSERT().
308 If LineNumber is NULL, then ASSERT().
310 @param CodeType The type of status code being converted.
311 @param Value The status code value being converted.
312 @param Data Pointer to status code data buffer.
313 @param Filename Pointer to the source file name that generated the ASSERT().
314 @param Description Pointer to the description of the ASSERT().
315 @param LineNumber Pointer to source line number that generated the ASSERT().
317 @retval TRUE The status code specified by CodeType, Value, and Data was
318 converted ASSERT() arguments specified by Filename, Description,
320 @retval FALSE The status code specified by CodeType, Value, and Data could
321 not be converted to ASSERT() arguments.
326 ReportStatusCodeExtractAssertInfo (
327 IN EFI_STATUS_CODE_TYPE CodeType
,
328 IN EFI_STATUS_CODE_VALUE Value
,
329 IN CONST EFI_STATUS_CODE_DATA
*Data
,
330 OUT CHAR8
**Filename
,
331 OUT CHAR8
**Description
,
332 OUT UINT32
*LineNumber
335 EFI_DEBUG_ASSERT_DATA
*AssertData
;
337 ASSERT (Data
!= NULL
);
338 ASSERT (Filename
!= NULL
);
339 ASSERT (Description
!= NULL
);
340 ASSERT (LineNumber
!= NULL
);
342 if (((CodeType
& EFI_STATUS_CODE_TYPE_MASK
) == EFI_ERROR_CODE
) &&
343 ((CodeType
& EFI_STATUS_CODE_SEVERITY_MASK
) == EFI_ERROR_UNRECOVERED
) &&
344 ((Value
& EFI_STATUS_CODE_OPERATION_MASK
) == EFI_SW_EC_ILLEGAL_SOFTWARE_STATE
))
346 AssertData
= (EFI_DEBUG_ASSERT_DATA
*)(Data
+ 1);
347 *Filename
= (CHAR8
*)(AssertData
+ 1);
348 *Description
= *Filename
+ AsciiStrLen (*Filename
) + 1;
349 *LineNumber
= AssertData
->LineNumber
;
357 Extracts DEBUG() information from a status code structure.
359 Converts the status code specified by Data to the DEBUG() arguments specified
360 by ErrorLevel, Marker, and Format. If type GUID in Data is
361 EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID, then extract ErrorLevel, Marker, and
362 Format from the optional data area of the status code buffer specified by Data.
363 The optional data area of Data contains a 32-bit ErrorLevel followed by Marker
364 which is 12 UINTN parameters, followed by a Null-terminated ASCII string for
365 the Format. If the DEBUG() information could be extracted from Data, then
366 return TRUE. Otherwise, FALSE is returned.
368 If Data is NULL, then ASSERT().
369 If ErrorLevel is NULL, then ASSERT().
370 If Marker is NULL, then ASSERT().
371 If Format is NULL, then ASSERT().
373 @param Data Pointer to status code data buffer.
374 @param ErrorLevel Pointer to error level mask for a debug message.
375 @param Marker Pointer to the variable argument list associated with Format.
376 @param Format Pointer to a Null-terminated ASCII format string of a
379 @retval TRUE The status code specified by Data was converted DEBUG() arguments
380 specified by ErrorLevel, Marker, and Format.
381 @retval FALSE The status code specified by Data could not be converted to
387 ReportStatusCodeExtractDebugInfo (
388 IN CONST EFI_STATUS_CODE_DATA
*Data
,
389 OUT UINT32
*ErrorLevel
,
390 OUT BASE_LIST
*Marker
,
394 EFI_DEBUG_INFO
*DebugInfo
;
396 ASSERT (Data
!= NULL
);
397 ASSERT (ErrorLevel
!= NULL
);
398 ASSERT (Marker
!= NULL
);
399 ASSERT (Format
!= NULL
);
402 // If the GUID type is not EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID then return FALSE
404 if (!CompareGuid (&Data
->Type
, &gEfiStatusCodeDataTypeDebugGuid
)) {
409 // Retrieve the debug information from the status code record
411 DebugInfo
= (EFI_DEBUG_INFO
*)(Data
+ 1);
413 *ErrorLevel
= DebugInfo
->ErrorLevel
;
416 // The first 12 * sizeof (UINT64) bytes following EFI_DEBUG_INFO are for variable arguments
417 // of format in DEBUG string. Its address is returned in Marker and has to be 64-bit aligned.
418 // It must be noticed that EFI_DEBUG_INFO follows EFI_STATUS_CODE_DATA, whose size is
419 // 20 bytes. The size of EFI_DEBUG_INFO is 4 bytes, so we can ensure that Marker
420 // returned is 64-bit aligned.
421 // 64-bit aligned is a must, otherwise retrieving 64-bit parameter from BASE_LIST will
422 // cause unalignment exception.
424 *Marker
= (BASE_LIST
)(DebugInfo
+ 1);
425 *Format
= (CHAR8
*)(((UINT64
*)*Marker
) + 12);
431 Reports a status code.
433 Reports the status code specified by the parameters Type and Value. Status
434 code also require an instance, caller ID, and extended data. This function
435 passed in a zero instance, NULL extended data, and a caller ID of
436 gEfiCallerIdGuid, which is the GUID for the module.
438 ReportStatusCode()must actively prevent recusrsion. If ReportStatusCode()
439 is called while processing another any other Report Status Code Library function,
440 then ReportStatusCode() must return immediately.
442 @param Type Status code type.
443 @param Value Status code value.
445 @retval EFI_SUCCESS The status code was reported.
446 @retval EFI_DEVICE_ERROR There status code could not be reported due to a
448 @retval EFI_UNSUPPORTED Report status code is not supported
454 IN EFI_STATUS_CODE_TYPE Type
,
455 IN EFI_STATUS_CODE_VALUE Value
458 return InternalReportStatusCode (Type
, Value
, 0, &gEfiCallerIdGuid
, NULL
);
462 Reports a status code with a Device Path Protocol as the extended data.
464 Allocates and fills in the extended data section of a status code with the
465 Device Path Protocol specified by DevicePath. This function is responsible
466 for allocating a buffer large enough for the standard header and the device
467 path. The standard header is filled in with a GUID of
468 gEfiStatusCodeSpecificDataGuid. The status code is reported with a zero
469 instance and a caller ID of gEfiCallerIdGuid.
471 ReportStatusCodeWithDevicePath()must actively prevent recursion. If
472 ReportStatusCodeWithDevicePath() is called while processing another any other
473 Report Status Code Library function, then ReportStatusCodeWithDevicePath()
474 must return EFI_DEVICE_ERROR immediately.
476 If DevicePath is NULL, then ASSERT().
478 @param Type Status code type.
479 @param Value Status code value.
480 @param DevicePath Pointer to the Device Path Protocol to be reported.
482 @retval EFI_SUCCESS The status code was reported with the extended
483 data specified by DevicePath.
484 @retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the
485 extended data section.
486 @retval EFI_UNSUPPORTED Report status code is not supported
491 ReportStatusCodeWithDevicePath (
492 IN EFI_STATUS_CODE_TYPE Type
,
493 IN EFI_STATUS_CODE_VALUE Value
,
494 IN CONST EFI_DEVICE_PATH_PROTOCOL
*DevicePath
497 ASSERT (DevicePath
!= NULL
);
498 return ReportStatusCodeWithExtendedData (
502 GetDevicePathSize (DevicePath
)
507 Reports a status code with an extended data buffer.
509 Allocates and fills in the extended data section of a status code with the
510 extended data specified by ExtendedData and ExtendedDataSize. ExtendedData
511 is assumed to be one of the data structures specified in Related Definitions.
512 These data structure do not have the standard header, so this function is
513 responsible for allocating a buffer large enough for the standard header and
514 the extended data passed into this function. The standard header is filled
515 in with a GUID of gEfiStatusCodeSpecificDataGuid. The status code is reported
516 with a zero instance and a caller ID of gEfiCallerIdGuid.
518 ReportStatusCodeWithExtendedData()must actively prevent recursion. If
519 ReportStatusCodeWithExtendedData() is called while processing another any other
520 Report Status Code Library function, then ReportStatusCodeWithExtendedData()
521 must return EFI_DEVICE_ERROR immediately.
523 If ExtendedData is NULL, then ASSERT().
524 If ExtendedDataSize is 0, then ASSERT().
526 @param Type Status code type.
527 @param Value Status code value.
528 @param ExtendedData Pointer to the extended data buffer to be reported.
529 @param ExtendedDataSize The size, in bytes, of the extended data buffer to
532 @retval EFI_SUCCESS The status code was reported with the extended
533 data specified by ExtendedData and ExtendedDataSize.
534 @retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the
535 extended data section.
536 @retval EFI_UNSUPPORTED Report status code is not supported
541 ReportStatusCodeWithExtendedData (
542 IN EFI_STATUS_CODE_TYPE Type
,
543 IN EFI_STATUS_CODE_VALUE Value
,
544 IN CONST VOID
*ExtendedData
,
545 IN UINTN ExtendedDataSize
548 ASSERT (ExtendedData
!= NULL
);
549 ASSERT (ExtendedDataSize
!= 0);
550 return ReportStatusCodeEx (
562 Reports a status code with full parameters.
564 The function reports a status code. If ExtendedData is NULL and ExtendedDataSize
565 is 0, then an extended data buffer is not reported. If ExtendedData is not
566 NULL and ExtendedDataSize is not 0, then an extended data buffer is allocated.
567 ExtendedData is assumed not have the standard status code header, so this function
568 is responsible for allocating a buffer large enough for the standard header and
569 the extended data passed into this function. The standard header is filled in
570 with a GUID specified by ExtendedDataGuid. If ExtendedDataGuid is NULL, then a
571 GUID of gEfiStatusCodeSpecificDataGuid is used. The status code is reported with
572 an instance specified by Instance and a caller ID specified by CallerId. If
573 CallerId is NULL, then a caller ID of gEfiCallerIdGuid is used.
575 ReportStatusCodeEx()must actively prevent recursion. If
576 ReportStatusCodeEx() is called while processing another any
577 other Report Status Code Library function, then
578 ReportStatusCodeEx() must return EFI_DEVICE_ERROR immediately.
580 If ExtendedData is NULL and ExtendedDataSize is not zero, then ASSERT().
581 If ExtendedData is not NULL and ExtendedDataSize is zero, then ASSERT().
583 @param Type Status code type.
584 @param Value Status code value.
585 @param Instance Status code instance number.
586 @param CallerId Pointer to a GUID that identifies the caller of this
587 function. If this parameter is NULL, then a caller
588 ID of gEfiCallerIdGuid is used.
589 @param ExtendedDataGuid Pointer to the GUID for the extended data buffer.
590 If this parameter is NULL, then a the status code
591 standard header is filled in with
592 gEfiStatusCodeSpecificDataGuid.
593 @param ExtendedData Pointer to the extended data buffer. This is an
594 optional parameter that may be NULL.
595 @param ExtendedDataSize The size, in bytes, of the extended data buffer.
597 @retval EFI_SUCCESS The status code was reported.
598 @retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate
599 the extended data section if it was specified.
600 @retval EFI_UNSUPPORTED Report status code is not supported
606 IN EFI_STATUS_CODE_TYPE Type
,
607 IN EFI_STATUS_CODE_VALUE Value
,
609 IN CONST EFI_GUID
*CallerId OPTIONAL
,
610 IN CONST EFI_GUID
*ExtendedDataGuid OPTIONAL
,
611 IN CONST VOID
*ExtendedData OPTIONAL
,
612 IN UINTN ExtendedDataSize
616 EFI_STATUS_CODE_DATA
*StatusCodeData
;
617 UINT64 StatusCodeBuffer
[(MAX_EXTENDED_DATA_SIZE
/ sizeof (UINT64
)) + 1];
619 ASSERT (!((ExtendedData
== NULL
) && (ExtendedDataSize
!= 0)));
620 ASSERT (!((ExtendedData
!= NULL
) && (ExtendedDataSize
== 0)));
622 if (ExtendedDataSize
<= (MAX_EXTENDED_DATA_SIZE
- sizeof (EFI_STATUS_CODE_DATA
))) {
624 // Use Buffer instead of allocating if possible.
626 StatusCodeData
= (EFI_STATUS_CODE_DATA
*)StatusCodeBuffer
;
628 if (mHaveExitedBootServices
) {
629 return EFI_OUT_OF_RESOURCES
;
632 if ((gBS
== NULL
) || (gBS
->AllocatePool
== NULL
) || (gBS
->FreePool
== NULL
)) {
633 return EFI_UNSUPPORTED
;
637 // Allocate space for the Status Code Header and its buffer
639 StatusCodeData
= NULL
;
640 gBS
->AllocatePool (EfiBootServicesData
, sizeof (EFI_STATUS_CODE_DATA
) + ExtendedDataSize
, (VOID
**)&StatusCodeData
);
641 if (StatusCodeData
== NULL
) {
642 return EFI_OUT_OF_RESOURCES
;
647 // Fill in the extended data header
649 StatusCodeData
->HeaderSize
= (UINT16
)sizeof (EFI_STATUS_CODE_DATA
);
650 StatusCodeData
->Size
= (UINT16
)ExtendedDataSize
;
651 if (ExtendedDataGuid
== NULL
) {
652 ExtendedDataGuid
= &gEfiStatusCodeSpecificDataGuid
;
655 CopyGuid (&StatusCodeData
->Type
, ExtendedDataGuid
);
658 // Fill in the extended data buffer
660 if (ExtendedData
!= NULL
) {
661 CopyMem (StatusCodeData
+ 1, ExtendedData
, ExtendedDataSize
);
665 // Report the status code
667 if (CallerId
== NULL
) {
668 CallerId
= &gEfiCallerIdGuid
;
671 Status
= InternalReportStatusCode (Type
, Value
, Instance
, CallerId
, StatusCodeData
);
674 // Free the allocated buffer
676 if (StatusCodeData
!= (EFI_STATUS_CODE_DATA
*)StatusCodeBuffer
) {
677 gBS
->FreePool (StatusCodeData
);
684 Returns TRUE if status codes of type EFI_PROGRESS_CODE are enabled
686 This function returns TRUE if the REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED
687 bit of PcdReportStatusCodeProperyMask is set. Otherwise FALSE is returned.
689 @retval TRUE The REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED bit of
690 PcdReportStatusCodeProperyMask is set.
691 @retval FALSE The REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED bit of
692 PcdReportStatusCodeProperyMask is clear.
697 ReportProgressCodeEnabled (
701 return (BOOLEAN
)((PcdGet8 (PcdReportStatusCodePropertyMask
) & REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED
) != 0);
705 Returns TRUE if status codes of type EFI_ERROR_CODE are enabled
707 This function returns TRUE if the REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED
708 bit of PcdReportStatusCodeProperyMask is set. Otherwise FALSE is returned.
710 @retval TRUE The REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED bit of
711 PcdReportStatusCodeProperyMask is set.
712 @retval FALSE The REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED bit of
713 PcdReportStatusCodeProperyMask is clear.
718 ReportErrorCodeEnabled (
722 return (BOOLEAN
)((PcdGet8 (PcdReportStatusCodePropertyMask
) & REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED
) != 0);
726 Returns TRUE if status codes of type EFI_DEBUG_CODE are enabled
728 This function returns TRUE if the REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED
729 bit of PcdReportStatusCodeProperyMask is set. Otherwise FALSE is returned.
731 @retval TRUE The REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED bit of
732 PcdReportStatusCodeProperyMask is set.
733 @retval FALSE The REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED bit of
734 PcdReportStatusCodeProperyMask is clear.
739 ReportDebugCodeEnabled (
743 return (BOOLEAN
)((PcdGet8 (PcdReportStatusCodePropertyMask
) & REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED
) != 0);