\r
**/\r
\r
-EFI_SERIAL_IO_PROTOCOL *SerialIoProtocol;\r
+STATIC\r
+EFI_SERIAL_IO_PROTOCOL *mSerialIoProtocol;\r
\r
/**\r
Initialize serial status code worker.\r
Status = gBS->LocateProtocol (\r
&gEfiSerialIoProtocolGuid,\r
NULL,\r
- (VOID **) &SerialIoProtocol\r
+ (VOID **) &mSerialIoProtocol\r
);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
@param Data This optional parameter may be used to pass additional data\r
\r
- @return The function always return EFI_SUCCESS.\r
+ @retval EFI_SUCCESS Success to report status code to serial I/O.\r
+ @retval EFI_DEVICE_ERROR EFI serial device can not work after ExitBootService() is called .\r
\r
**/\r
EFI_STATUS\r
VA_LIST Marker;\r
EFI_DEBUG_INFO *DebugInfo;\r
\r
+\r
+ if (FeaturePcdGet (PcdStatusCodeUseEfiSerial) && EfiAtRuntime ()) {\r
+ return EFI_DEVICE_ERROR;\r
+ }\r
+\r
Buffer[0] = '\0';\r
\r
if (Data != NULL &&\r
//\r
// Print ERROR information into output buffer.\r
//\r
- CharCount = AsciiSPrint (Buffer, EFI_STATUS_CODE_DATA_MAX_SIZE, "ERROR: C%x:V%x I%x", CodeType, Value, Instance);\r
+ CharCount = AsciiSPrint (\r
+ Buffer, \r
+ EFI_STATUS_CODE_DATA_MAX_SIZE, \r
+ "ERROR: C%x:V%x I%x", \r
+ CodeType, \r
+ Value, \r
+ Instance\r
+ );\r
\r
//\r
- // Make sure we don't try to print values that weren't intended to be printed, especially NULL GUID pointers.\r
+ // Make sure we don't try to print values that weren't \r
+ // intended to be printed, especially NULL GUID pointers.\r
//\r
\r
if (CallerId != NULL) {\r
);\r
}\r
\r
- if (Data) {\r
+ if (Data != NULL) {\r
CharCount += AsciiSPrint (\r
&Buffer[CharCount - 1],\r
(EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),\r
"\n\r"\r
);\r
} else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) {\r
- CharCount = AsciiSPrint (Buffer, EFI_STATUS_CODE_DATA_MAX_SIZE, "PROGRESS CODE: V%x I%x\n\r", Value, Instance);\r
+ CharCount = AsciiSPrint (\r
+ Buffer, \r
+ EFI_STATUS_CODE_DATA_MAX_SIZE, \r
+ "PROGRESS CODE: V%x I%x\n\r", \r
+ Value, \r
+ Instance\r
+ );\r
} else {\r
- CharCount = AsciiSPrint (Buffer, EFI_STATUS_CODE_DATA_MAX_SIZE, "Undefined: C%x:V%x I%x\n\r", CodeType, Value, Instance);\r
+ CharCount = AsciiSPrint (\r
+ Buffer, \r
+ EFI_STATUS_CODE_DATA_MAX_SIZE, \r
+ "Undefined: C%x:V%x I%x\n\r", \r
+ CodeType, \r
+ Value, \r
+ Instance\r
+ );\r
}\r
\r
\r
SerialPortWrite ((UINT8 *) Buffer, CharCount);\r
}\r
if (FeaturePcdGet (PcdStatusCodeUseEfiSerial)) {\r
- SerialIoProtocol->Write (\r
- SerialIoProtocol,\r
+ mSerialIoProtocol->Write (\r
+ mSerialIoProtocol,\r
&CharCount,\r
Buffer\r
);\r