bool WorkerRunnable::Dispatch(JSContext* aCx) { bool ok; if (!aCx) { ok = PreDispatch(nullptr, mWorkerPrivate); if (ok) { ok = DispatchInternal(); } PostDispatch(nullptr, mWorkerPrivate, ok); return ok; } JSAutoRequest ar(aCx); JS::Rooted<JSObject*> global(aCx, JS::CurrentGlobalOrNull(aCx)); Maybe<JSAutoCompartment> ac; if (global) { ac.emplace(aCx, global); } ok = PreDispatch(aCx, mWorkerPrivate); if (ok && !DispatchInternal()) { ok = false; } PostDispatch(aCx, mWorkerPrivate, ok); return ok; }
bool WorkerRunnable::Dispatch() { bool ok = PreDispatch(mWorkerPrivate); if (ok) { ok = DispatchInternal(); } PostDispatch(mWorkerPrivate, ok); return ok; }
EFI_STATUS ResumeExecComd ( VOID ) /*++ Routine Description: Resume SCT execution by executing "sct -c" in sct passive mode. Arguments: None Returns: EFI_SUCCESS - Operation succeeded. EFI_OUT_OF_RESOURCES - Memory allocation failed. Others - Some failure happened. --*/ { EFI_STATUS Status; EFI_TIME StartTime; EFI_TIME EndTime; CHAR16 *Buffer; Buffer = EFI_SCT_CONTINUE_EXECUTION_NAME; // // PreDispatch: to get cmd and parameters // Status = PreDispatch (Buffer); if (EFI_ERROR (Status)) { (gEasFT->Cmd)->ComdResult = FAIL; EFI_ENTS_DEBUG ((EFI_ENTS_D_ERROR, L"Error in ResumeExecComd: PreDispatch error - %r", Status)); Status = PostDispatch (); if (EFI_ERROR (Status)) { EFI_ENTS_DEBUG ((EFI_ENTS_D_ERROR, L"Error in ResumeExecComd: PostDispatch status - %r\n", Status)); } return Status; } // // Resume SCT execution by executing "sct -c" in sct passive mode. // RT->GetTime (&StartTime, NULL); Status = ShellExecute (mImageHandle, (gEasFT->Cmd)->ComdArg, FALSE); RT->GetTime (&EndTime, NULL); EFI_ENTS_DEBUG ((EFI_ENTS_D_TRACE, L"dispatch:(%s)", (gEasFT->Cmd)->ComdArg)); Print (L"dispatch:(%s) - %r\n", (gEasFT->Cmd)->ComdArg, Status); if (Status == EFI_OUT_OF_RESOURCES) { return EFI_OUT_OF_RESOURCES; } Status = RecordMessage ( &((gEasFT->Cmd)->ComdRuntimeInfo), &(gEasFT->Cmd)->ComdRuntimeInfoSize, L"TEST_EXEC (%s) Status - %r", (gEasFT->Cmd)->ComdArg, Status ); if (Status == EFI_OUT_OF_RESOURCES) { return EFI_OUT_OF_RESOURCES; } Status = RecordMessage ( &((gEasFT->Cmd)->ComdOutput), &(gEasFT->Cmd)->ComdOutputSize, L"StartTime - %02d-%02d-%04d %02d:%02d:%02d, EndTime - %02d-%02d-%04d %02d:%02d:%02d", StartTime.Day, StartTime.Month, StartTime.Year, StartTime.Hour, StartTime.Minute, StartTime.Second, EndTime.Day, EndTime.Month, EndTime.Year, EndTime.Hour, EndTime.Minute, EndTime.Second ); if (Status == EFI_OUT_OF_RESOURCES) { return EFI_OUT_OF_RESOURCES; } // // For remote SCT execution, the potential reset during the execution will cause no ACK generation, so // after "sct -c" execution finish, corresponding ACK needs to be sent to inform remote EMS side application. // Status = PostDispatch (); if (EFI_ERROR (Status)) { EFI_ENTS_DEBUG ((EFI_ENTS_D_ERROR, L"Error in ResumeExecComd: PostDispatch status - %r\n", Status)); } return Status; }