Series Reviewed-by: Samer EL-Haj-Mahmoud <el...@hpe.com> On 2016/3/7 11:23, Cinnamon Shia wrote: > Support UEFI shell execution break. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Cinnamon Shia <cinnamon.s...@hpe.com> > --- > PerformancePkg/Dp_App/Dp.c | 36 ++++++++++++++++------ > PerformancePkg/Dp_App/DpInternal.h | 27 ++++++++++++----- > PerformancePkg/Dp_App/DpTrace.c | 62 > ++++++++++++++++++++++++++++++++------ > 3 files changed, 99 insertions(+), 26 deletions(-) > > diff --git a/PerformancePkg/Dp_App/Dp.c b/PerformancePkg/Dp_App/Dp.c > index e052216..e36a032 100644 > --- a/PerformancePkg/Dp_App/Dp.c > +++ b/PerformancePkg/Dp_App/Dp.c > @@ -14,7 +14,7 @@ > timer information to calculate elapsed time for each measurement. > > Copyright (c) 2009 - 2015, Intel Corporation. All rights > reserved.<BR> > - (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR> > + (C) Copyright 2015-2016 Hewlett Packard Enterprise Development > + LP<BR> > 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 @@ -195,11 +195,11 @@ InitCumulativeData ( > > @param[in] ImageHandle The image handle. > @param[in] SystemTable The system table. > - > + > @retval EFI_SUCCESS Command completed successfully. > @retval EFI_INVALID_PARAMETER Command usage error. > + @retval EFI_ABORTED The user aborts the operation. > @retval value Unknown error. > - > **/ > EFI_STATUS > EFIAPI > @@ -443,7 +443,10 @@ InitializeDp ( > ProcessCumulative (CustomCumulativeData); > } else if (AllMode) { > if (TraceMode) { > - DumpAllTrace( Number2Display, ExcludeMode); > + Status = DumpAllTrace( Number2Display, ExcludeMode); > + if (Status == EFI_ABORTED) { > + goto Done; > + } > } > if (ProfileMode) { > DumpAllProfile( Number2Display, ExcludeMode); @@ -451,7 > +454,10 @@ InitializeDp ( > } > else if (RawMode) { > if (TraceMode) { > - DumpRawTrace( Number2Display, ExcludeMode); > + Status = DumpRawTrace( Number2Display, ExcludeMode); > + if (Status == EFI_ABORTED) { > + goto Done; > + } > } > if (ProfileMode) { > DumpRawProfile( Number2Display, ExcludeMode); @@ -463,11 > +469,21 @@ InitializeDp ( > ProcessPhases ( Ticker ); > if ( ! SummaryMode) { > Status = ProcessHandles ( ExcludeMode); > - if ( ! EFI_ERROR( Status)) { > - ProcessPeims ( ); > - ProcessGlobal ( ); > - ProcessCumulative (NULL); > + if (Status == EFI_ABORTED) { > + goto Done; > } > + > + Status = ProcessPeims (); > + if (Status == EFI_ABORTED) { > + goto Done; > + } > + > + Status = ProcessGlobal (); > + if (Status == EFI_ABORTED) { > + goto Done; > + } > + > + ProcessCumulative (NULL); > } > } > if (ProfileMode) { > @@ -480,6 +496,8 @@ InitializeDp ( > } > } > > +Done: > + > // > // Free the memory allocate from HiiGetString > // > diff --git a/PerformancePkg/Dp_App/DpInternal.h > b/PerformancePkg/Dp_App/DpInternal.h > index 0e97e1e..53c5fb2 100644 > --- a/PerformancePkg/Dp_App/DpInternal.h > +++ b/PerformancePkg/Dp_App/DpInternal.h > @@ -7,7 +7,7 @@ > DpUtilities.c, DpTrace.c, and DpProfile.c are included here. > > Copyright (c) 2009 - 2014, Intel Corporation. All rights > reserved.<BR> > - (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR> > + (C) Copyright 2015-2016 Hewlett Packard Enterprise Development > + LP<BR> > 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 @@ -215,8 +215,11 @@ GatherStatistics( > @param[in] Limit The number of records to print. Zero is ALL. > @param[in] ExcludeFlag TRUE to exclude individual Cumulative items > from display. > > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > + @return Others from a call to gBS->LocateHandleBuffer(). > **/ > -VOID > +EFI_STATUS > DumpAllTrace( > IN UINTN Limit, > IN BOOLEAN ExcludeFlag > @@ -238,9 +241,11 @@ DumpAllTrace( > > @param[in] Limit The number of records to print. Zero is ALL. > @param[in] ExcludeFlag TRUE to exclude individual Cumulative items > from display. > - > + > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > **/ > -VOID > +EFI_STATUS > DumpRawTrace( > IN UINTN Limit, > IN BOOLEAN ExcludeFlag > @@ -262,8 +267,10 @@ ProcessPhases( > Gather and print Handle data. > > @param[in] ExcludeFlag TRUE to exclude individual Cumulative items > from display. > - > - @return Status from a call to gBS->LocateHandle(). > + > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > + @return Others from a call to gBS->LocateHandleBuffer(). > **/ > EFI_STATUS > ProcessHandles( > @@ -276,8 +283,10 @@ ProcessHandles( > > Only prints complete PEIM records > > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > **/ > -VOID > +EFI_STATUS > ProcessPeims( > VOID > ); > @@ -290,8 +299,10 @@ ProcessPeims( > Increment TIndex for every record, even skipped ones, so that we have an > indication of every measurement record taken. > > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > **/ > -VOID > +EFI_STATUS > ProcessGlobal( > VOID > ); > diff --git a/PerformancePkg/Dp_App/DpTrace.c > b/PerformancePkg/Dp_App/DpTrace.c index 632904f..fc21cdc 100644 > --- a/PerformancePkg/Dp_App/DpTrace.c > +++ b/PerformancePkg/Dp_App/DpTrace.c > @@ -136,8 +136,11 @@ GatherStatistics( > @param[in] Limit The number of records to print. Zero is ALL. > @param[in] ExcludeFlag TRUE to exclude individual Cumulative items > from display. > > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > + @return Others from a call to gBS->LocateHandleBuffer(). > **/ > -VOID > +EFI_STATUS > DumpAllTrace( > IN UINTN Limit, > IN BOOLEAN ExcludeFlag > @@ -257,12 +260,17 @@ DumpAllTrace( > ElapsedTime > ); > } > + if (ShellGetExecutionBreakFlag ()) { > + Status = EFI_ABORTED; > + break; > + } > } > } > if (HandleBuffer != NULL) { > FreePool (HandleBuffer); > } > SafeFreePool ((VOID *) IncFlag); > + return Status; > } > > /** > @@ -281,9 +289,11 @@ DumpAllTrace( > > @param[in] Limit The number of records to print. Zero is ALL. > @param[in] ExcludeFlag TRUE to exclude individual Cumulative items > from display. > - > + > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > **/ > -VOID > +EFI_STATUS > DumpRawTrace( > IN UINTN Limit, > IN BOOLEAN ExcludeFlag > @@ -298,6 +308,9 @@ DumpRawTrace( > > EFI_STRING StringPtr; > EFI_STRING StringPtrUnknown; > + EFI_STATUS Status; > + > + Status = EFI_SUCCESS; > > StringPtrUnknown = HiiGetString (gHiiHandle, STRING_TOKEN > (STR_ALIT_UNKNOWN), NULL); > StringPtr = HiiGetString (gHiiHandle, STRING_TOKEN > (STR_DP_SECTION_RAWTRACE), NULL); @@ -361,7 +374,12 @@ DumpRawTrace( > Measurement.Module > ); > } > + if (ShellGetExecutionBreakFlag ()) { > + Status = EFI_ABORTED; > + break; > + } > } > + return Status; > } > > /** > @@ -509,8 +527,10 @@ ProcessPhases( > Gather and print Handle data. > > @param[in] ExcludeFlag TRUE to exclude individual Cumulative items > from display. > - > - @return Status from a call to gBS->LocateHandle(). > + > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > + @return Others from a call to gBS->LocateHandleBuffer(). > **/ > EFI_STATUS > ProcessHandles( > @@ -608,6 +628,10 @@ ProcessHandles( > ); > } > } > + if (ShellGetExecutionBreakFlag ()) { > + Status = EFI_ABORTED; > + break; > + } > } > } > if (HandleBuffer != NULL) { > @@ -620,9 +644,11 @@ ProcessHandles( > Gather and print PEIM data. > > Only prints complete PEIM records > - > + > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > **/ > -VOID > +EFI_STATUS > ProcessPeims( > VOID > ) > @@ -634,6 +660,9 @@ ProcessPeims( > UINTN LogEntryKey; > UINTN TIndex; > EFI_STRING StringPtrUnknown; > + EFI_STATUS Status; > + > + Status = EFI_SUCCESS; > > StringPtrUnknown = HiiGetString (gHiiHandle, STRING_TOKEN > (STR_ALIT_UNKNOWN), NULL); > StringPtr = HiiGetString (gHiiHandle, STRING_TOKEN > (STR_DP_SECTION_PEIMS), NULL); @@ -687,7 +716,12 @@ ProcessPeims( > ); > } > } > + if (ShellGetExecutionBreakFlag ()) { > + Status = EFI_ABORTED; > + break; > + } > } > + return Status; > } > > /** > @@ -697,9 +731,11 @@ ProcessPeims( > Only prints records where Handle is NULL > Increment TIndex for every record, even skipped ones, so that we have an > indication of every measurement record taken. > - > + > + @retval EFI_SUCCESS The operation was successful. > + @retval EFI_ABORTED The user aborts the operation. > **/ > -VOID > +EFI_STATUS > ProcessGlobal( > VOID > ) > @@ -711,6 +747,9 @@ ProcessGlobal( > UINTN LogEntryKey; > UINTN Index; // Index, or number, of the > measurement record being processed > EFI_STRING StringPtrUnknown; > + EFI_STATUS Status; > + > + Status = EFI_SUCCESS; > > StringPtrUnknown = HiiGetString (gHiiHandle, STRING_TOKEN > (STR_ALIT_UNKNOWN), NULL); > StringPtr = HiiGetString (gHiiHandle, STRING_TOKEN > (STR_DP_SECTION_GENERAL), NULL); @@ -770,8 +809,13 @@ ProcessGlobal( > } > } > } > + if (ShellGetExecutionBreakFlag ()) { > + Status = EFI_ABORTED; > + break; > + } > Index++; > } > + return Status; > } > > /** >
_______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel