Add conditional check before output status code.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7603 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4 2009-02-23 14:31:09 +00:00
parent 1d0cab2ec2
commit 15cd6a822c
2 changed files with 39 additions and 27 deletions

View File

@ -48,22 +48,28 @@ InternalReportStatusCode (
IN EFI_STATUS_CODE_DATA *Data OPTIONAL
)
{
//
// If gStatusCode is NULL, then see if a Status Code Protocol instance is present
// in the handle database.
//
if (mReportStatusCode == NULL) {
mReportStatusCode = InternalGetReportStatusCode ();
if ((ReportProgressCodeEnabled() && ((Type) & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) ||
(ReportErrorCodeEnabled() && ((Type) & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) ||
(ReportDebugCodeEnabled() && ((Type) & EFI_STATUS_CODE_TYPE_MASK) == EFI_DEBUG_CODE)) {
//
// If gStatusCode is NULL, then see if a Status Code Protocol instance is present
// in the handle database.
//
if (mReportStatusCode == NULL) {
return EFI_UNSUPPORTED;
mReportStatusCode = InternalGetReportStatusCode ();
if (mReportStatusCode == NULL) {
return EFI_UNSUPPORTED;
}
}
//
// A Status Code Protocol is present in the handle database, so pass in all the
// parameters to the ReportStatusCode() service of the Status Code Protocol
//
return (*mReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);
}
//
// A Status Code Protocol is present in the handle database, so pass in all the
// parameters to the ReportStatusCode() service of the Status Code Protocol
//
return (*mReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);
return EFI_UNSUPPORTED;
}

View File

@ -67,22 +67,28 @@ InternalReportStatusCode (
CONST EFI_PEI_SERVICES **PeiServices;
EFI_STATUS Status;
PeiServices = GetPeiServicesTablePointer ();
Status = (*PeiServices)->ReportStatusCode (
PeiServices,
Type,
Value,
Instance,
(EFI_GUID *)CallerId,
Data
);
if (Status == EFI_NOT_AVAILABLE_YET) {
Status = OemHookStatusCodeInitialize ();
if (!EFI_ERROR (Status)) {
return OemHookStatusCodeReport (Type, Value, Instance, (EFI_GUID *) CallerId, Data);
if ((ReportProgressCodeEnabled() && ((Type) & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) ||
(ReportErrorCodeEnabled() && ((Type) & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) ||
(ReportDebugCodeEnabled() && ((Type) & EFI_STATUS_CODE_TYPE_MASK) == EFI_DEBUG_CODE)) {
PeiServices = GetPeiServicesTablePointer ();
Status = (*PeiServices)->ReportStatusCode (
PeiServices,
Type,
Value,
Instance,
(EFI_GUID *)CallerId,
Data
);
if (Status == EFI_NOT_AVAILABLE_YET) {
Status = OemHookStatusCodeInitialize ();
if (!EFI_ERROR (Status)) {
return OemHookStatusCodeReport (Type, Value, Instance, (EFI_GUID *) CallerId, Data);
}
}
return Status;
}
return Status;
return EFI_UNSUPPORTED;
}