ShellPkg: Apply uncrustify changes

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737

Apply uncrustify changes to .c/.h files in the ShellPkg package

Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
Michael Kubacki
2021-12-05 14:54:13 -08:00
committed by mergify[bot]
parent c411b485b6
commit 47d20b54f9
211 changed files with 30269 additions and 27004 deletions

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,6 @@
#ifndef _DP_H_
#define _DP_H_
#include <Uefi.h>
#include <Guid/Performance.h>
@ -36,32 +35,32 @@
#include <Library/UefiHiiServicesLib.h>
#include <Library/PerformanceLib.h>
extern EFI_HII_HANDLE mDpHiiHandle;
extern EFI_HII_HANDLE mDpHiiHandle;
#define DP_MAJOR_VERSION 2
#define DP_MINOR_VERSION 5
#define DP_MAJOR_VERSION 2
#define DP_MINOR_VERSION 5
/**
* The value assigned to DP_DEBUG controls which debug output
* is generated. Set it to ZERO to disable.
**/
#define DP_DEBUG 0
#define DP_DEBUG 0
#define DEFAULT_THRESHOLD 1000 ///< One millisecond.
#define DEFAULT_DISPLAYCOUNT 50
#define MAXIMUM_DISPLAYCOUNT 999999 ///< Arbitrary maximum reasonable number.
#define DEFAULT_THRESHOLD 1000 ///< One millisecond.
#define DEFAULT_DISPLAYCOUNT 50
#define MAXIMUM_DISPLAYCOUNT 999999 ///< Arbitrary maximum reasonable number.
#define PERF_MAXDUR 0xFFFFFFFFFFFFFFFFULL
#define PERF_MAXDUR 0xFFFFFFFFFFFFFFFFULL
/// Determine whether 0 <= C < L. If L == 0, return true regardless of C.
#define WITHIN_LIMIT( C, L) ( ((L) == 0) || ((C) < (L)) )
#define WITHIN_LIMIT(C, L) ( ((L) == 0) || ((C) < (L)) )
/// Structure for storing Timer specific information.
typedef struct {
UINT64 StartCount; ///< Value timer is initialized with.
UINT64 EndCount; ///< Value timer has just before it wraps.
UINT32 Frequency; ///< Timer count frequency in KHz.
BOOLEAN CountUp; ///< TRUE if the counter counts up.
UINT64 StartCount; ///< Value timer is initialized with.
UINT64 EndCount; ///< Value timer has just before it wraps.
UINT32 Frequency; ///< Timer count frequency in KHz.
BOOLEAN CountUp; ///< TRUE if the counter counts up.
} TIMER_INFO;
/** Initialize one PERF_CUM_DATA structure instance for token t.
@ -73,40 +72,40 @@ typedef struct {
* - PERF_INIT_CUM_DATA(pointer) A pointer -- CHAR8 *pointer;
* - PERF_INIT_CUM_DATA(array) Address of an array -- CHAR8 array[N];
**/
#define PERF_INIT_CUM_DATA(t) { 0ULL, PERF_MAXDUR, 0ULL, (t), 0U }
#define PERF_INIT_CUM_DATA(t) { 0ULL, PERF_MAXDUR, 0ULL, (t), 0U }
typedef struct {
UINT64 Duration; ///< Cumulative duration for this item.
UINT64 MinDur; ///< Smallest duration encountered.
UINT64 MaxDur; ///< Largest duration encountered.
CHAR8 *Name; ///< ASCII name of this item.
UINT32 Count; ///< Total number of measurements accumulated.
UINT64 Duration; ///< Cumulative duration for this item.
UINT64 MinDur; ///< Smallest duration encountered.
UINT64 MaxDur; ///< Largest duration encountered.
CHAR8 *Name; ///< ASCII name of this item.
UINT32 Count; ///< Total number of measurements accumulated.
} PERF_CUM_DATA;
typedef struct {
UINT32 NumTrace; ///< Number of recorded TRACE performance measurements.
UINT32 NumIncomplete; ///< Number of measurements with no END value.
UINT32 NumSummary; ///< Number of summary section measurements.
UINT32 NumHandles; ///< Number of measurements with handles.
UINT32 NumPEIMs; ///< Number of measurements of PEIMs.
UINT32 NumGlobal; ///< Number of measurements with END value and NULL handle.
UINT32 NumTrace; ///< Number of recorded TRACE performance measurements.
UINT32 NumIncomplete; ///< Number of measurements with no END value.
UINT32 NumSummary; ///< Number of summary section measurements.
UINT32 NumHandles; ///< Number of measurements with handles.
UINT32 NumPEIMs; ///< Number of measurements of PEIMs.
UINT32 NumGlobal; ///< Number of measurements with END value and NULL handle.
} PERF_SUMMARY_DATA;
typedef struct {
CONST VOID *Handle;
CONST CHAR8 *Token; ///< Measured token string name.
CONST CHAR8 *Module; ///< Module string name.
UINT64 StartTimeStamp; ///< Start time point.
UINT64 EndTimeStamp; ///< End time point.
UINT32 Identifier; ///< Identifier.
CONST VOID *Handle;
CONST CHAR8 *Token; ///< Measured token string name.
CONST CHAR8 *Module; ///< Module string name.
UINT64 StartTimeStamp; ///< Start time point.
UINT64 EndTimeStamp; ///< End time point.
UINT32 Identifier; ///< Identifier.
} MEASUREMENT_RECORD;
typedef struct {
CHAR8 *Name; ///< Measured token string name.
UINT64 CumulativeTime; ///< Accumulated Elapsed Time.
UINT64 MinTime; ///< Minimum Elapsed Time.
UINT64 MaxTime; ///< Maximum Elapsed Time.
UINT32 Count; ///< Number of measurements accumulated.
CHAR8 *Name; ///< Measured token string name.
UINT64 CumulativeTime; ///< Accumulated Elapsed Time.
UINT64 MinTime; ///< Minimum Elapsed Time.
UINT64 MaxTime; ///< Maximum Elapsed Time.
UINT32 Count; ///< Number of measurements accumulated.
} PROFILE_RECORD;
/**
@ -122,8 +121,8 @@ typedef struct {
**/
SHELL_STATUS
RunDp (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
);
/**
@ -135,6 +134,7 @@ RunDp (
**/
EFI_HII_HANDLE
InitializeHiiPackage (
EFI_HANDLE ImageHandle
EFI_HANDLE ImageHandle
);
#endif // _DP_H_
#endif // _DP_H_

View File

@ -16,7 +16,7 @@
// the resource section. Thus the application can use '-?' option to show help message in
// Shell.
//
GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_DP);
GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_DP);
/**
Entry point of Tftp standalone application.
@ -31,11 +31,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (S
EFI_STATUS
EFIAPI
DpAppInitialize (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_STATUS Status;
mDpHiiHandle = InitializeHiiPackage (ImageHandle);
if (mDpHiiHandle == NULL) {
return EFI_ABORTED;

View File

@ -25,10 +25,10 @@
SHELL_STATUS
EFIAPI
DpCommandHandler (
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN EFI_SYSTEM_TABLE *SystemTable,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
IN EFI_SHELL_PROTOCOL *Shell
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN EFI_SYSTEM_TABLE *SystemTable,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
IN EFI_SHELL_PROTOCOL *Shell
)
{
gEfiShellParametersProtocol = ShellParameters;
@ -49,14 +49,14 @@ DpCommandHandler (
CHAR16 *
EFIAPI
DpCommandGetHelp (
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN CONST CHAR8 *Language
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN CONST CHAR8 *Language
)
{
return HiiGetString (mDpHiiHandle, STRING_TOKEN (STR_GET_HELP_DP), Language);
}
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mDpDynamicCommand = {
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mDpDynamicCommand = {
L"dp",
DpCommandHandler,
DpCommandGetHelp
@ -77,11 +77,12 @@ EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mDpDynamicCommand = {
EFI_STATUS
EFIAPI
DpCommandInitialize (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_STATUS Status;
mDpHiiHandle = InitializeHiiPackage (ImageHandle);
if (mDpHiiHandle == NULL) {
return EFI_ABORTED;
@ -108,10 +109,11 @@ DpCommandInitialize (
EFI_STATUS
EFIAPI
DpUnload (
IN EFI_HANDLE ImageHandle
)
IN EFI_HANDLE ImageHandle
)
{
EFI_STATUS Status;
EFI_STATUS Status;
Status = gBS->UninstallProtocolInterface (
ImageHandle,
&gEfiShellDynamicCommandProtocolGuid,
@ -120,6 +122,7 @@ DpUnload (
if (EFI_ERROR (Status)) {
return Status;
}
HiiRemovePackages (mDpHiiHandle);
return EFI_SUCCESS;
}

View File

@ -10,31 +10,32 @@
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _DP_INTELNAL_H_
#define _DP_INTELNAL_H_
#define DP_GAUGE_STRING_LENGTH 36
#define DP_GAUGE_STRING_LENGTH 36
//
/// Module-Global Variables
///@{
extern EFI_HII_HANDLE mDpHiiHandle;
extern CHAR16 mGaugeString[DP_GAUGE_STRING_LENGTH + 1];
extern CHAR16 mUnicodeToken[DXE_PERFORMANCE_STRING_SIZE];
extern UINT64 mInterestThreshold;
extern BOOLEAN mShowId;
extern UINT8 *mBootPerformanceTable;
extern UINTN mBootPerformanceTableLength;
extern MEASUREMENT_RECORD *mMeasurementList;
extern UINTN mMeasurementNum;
extern EFI_HII_HANDLE mDpHiiHandle;
extern CHAR16 mGaugeString[DP_GAUGE_STRING_LENGTH + 1];
extern CHAR16 mUnicodeToken[DXE_PERFORMANCE_STRING_SIZE];
extern UINT64 mInterestThreshold;
extern BOOLEAN mShowId;
extern UINT8 *mBootPerformanceTable;
extern UINTN mBootPerformanceTableLength;
extern MEASUREMENT_RECORD *mMeasurementList;
extern UINTN mMeasurementNum;
extern PERF_SUMMARY_DATA SummaryData; ///< Create the SummaryData structure and init. to ZERO.
/// Items for which to gather cumulative statistics.
extern PERF_CUM_DATA CumData[];
extern PERF_CUM_DATA CumData[];
/// Number of items for which we are gathering cumulative statistics.
extern UINT32 const NumCum;
extern UINT32 const NumCum;
///@}
@ -60,7 +61,7 @@ extern UINT32 const NumCum;
**/
UINT64
GetDuration (
IN OUT MEASUREMENT_RECORD *Measurement
IN OUT MEASUREMENT_RECORD *Measurement
);
/**
@ -75,8 +76,8 @@ GetDuration (
@retval FALSE The measurement record is NOT for an EFI Phase.
**/
BOOLEAN
IsPhase(
IN MEASUREMENT_RECORD *Measurement
IsPhase (
IN MEASUREMENT_RECORD *Measurement
);
/**
@ -89,8 +90,8 @@ IsPhase(
**/
BOOLEAN
IsCorePerf(
IN MEASUREMENT_RECORD *Measurement
IsCorePerf (
IN MEASUREMENT_RECORD *Measurement
);
/**
@ -107,8 +108,8 @@ IsCorePerf(
**/
VOID
DpGetShortPdbFileName (
IN CHAR8 *PdbFileName,
OUT CHAR16 *UnicodeBuffer
IN CHAR8 *PdbFileName,
OUT CHAR16 *UnicodeBuffer
);
/**
@ -129,7 +130,7 @@ DpGetShortPdbFileName (
**/
VOID
DpGetNameFromHandle (
IN EFI_HANDLE Handle
IN EFI_HANDLE Handle
);
/**
@ -147,7 +148,7 @@ DpGetNameFromHandle (
**/
UINT64
DurationInMicroSeconds (
IN UINT64 Duration
IN UINT64 Duration
);
/**
@ -164,8 +165,8 @@ DurationInMicroSeconds (
@retval >=0 Return value is the index into CumData where Token is found.
**/
INTN
GetCumulativeItem(
IN MEASUREMENT_RECORD *Measurement
GetCumulativeItem (
IN MEASUREMENT_RECORD *Measurement
);
/**
@ -186,8 +187,8 @@ GetCumulativeItem(
**/
VOID
GatherStatistics(
IN OUT PERF_CUM_DATA *CustomCumulativeData OPTIONAL
GatherStatistics (
IN OUT PERF_CUM_DATA *CustomCumulativeData OPTIONAL
);
/**
@ -212,9 +213,9 @@ GatherStatistics(
@return Others from a call to gBS->LocateHandleBuffer().
**/
EFI_STATUS
DumpAllTrace(
IN UINTN Limit,
IN BOOLEAN ExcludeFlag
DumpAllTrace (
IN UINTN Limit,
IN BOOLEAN ExcludeFlag
);
/**
@ -237,9 +238,9 @@ DumpAllTrace(
@retval EFI_ABORTED The user aborts the operation.
**/
EFI_STATUS
DumpRawTrace(
IN UINTN Limit,
IN BOOLEAN ExcludeFlag
DumpRawTrace (
IN UINTN Limit,
IN BOOLEAN ExcludeFlag
);
/**
@ -247,11 +248,10 @@ DumpRawTrace(
**/
VOID
ProcessPhases(
ProcessPhases (
VOID
);
/**
Gather and print Handle data.
@ -262,11 +262,10 @@ ProcessPhases(
@return Others from a call to gBS->LocateHandleBuffer().
**/
EFI_STATUS
ProcessHandles(
IN BOOLEAN ExcludeFlag
ProcessHandles (
IN BOOLEAN ExcludeFlag
);
/**
Gather and print PEIM data.
@ -276,7 +275,7 @@ ProcessHandles(
@retval EFI_ABORTED The user aborts the operation.
**/
EFI_STATUS
ProcessPeims(
ProcessPeims (
VOID
);
@ -292,7 +291,7 @@ ProcessPeims(
@retval EFI_ABORTED The user aborts the operation.
**/
EFI_STATUS
ProcessGlobal(
ProcessGlobal (
VOID
);
@ -308,8 +307,8 @@ ProcessGlobal(
**/
VOID
ProcessCumulative(
IN PERF_CUM_DATA *CustomCumulativeData OPTIONAL
ProcessCumulative (
IN PERF_CUM_DATA *CustomCumulativeData OPTIONAL
);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -55,23 +55,24 @@
**/
UINT64
GetDuration (
IN OUT MEASUREMENT_RECORD *Measurement
IN OUT MEASUREMENT_RECORD *Measurement
)
{
UINT64 Duration;
BOOLEAN Error;
UINT64 Duration;
BOOLEAN Error;
if (Measurement->EndTimeStamp == 0) {
return 0;
}
Duration = Measurement->EndTimeStamp - Measurement->StartTimeStamp;
Error = (BOOLEAN)(Duration > Measurement->EndTimeStamp);
Error = (BOOLEAN)(Duration > Measurement->EndTimeStamp);
if (Error) {
DEBUG ((DEBUG_ERROR, ALit_TimerLibError));
Duration = 0;
}
return Duration;
}
@ -87,18 +88,18 @@ GetDuration (
@retval FALSE The measurement record is NOT for an EFI Phase.
**/
BOOLEAN
IsPhase(
IN MEASUREMENT_RECORD *Measurement
IsPhase (
IN MEASUREMENT_RECORD *Measurement
)
{
BOOLEAN RetVal;
BOOLEAN RetVal;
RetVal = (BOOLEAN)(
((AsciiStrCmp (Measurement->Token, ALit_SEC) == 0) ||
(AsciiStrCmp (Measurement->Token, ALit_PEI) == 0) ||
(AsciiStrCmp (Measurement->Token, ALit_DXE) == 0) ||
(AsciiStrCmp (Measurement->Token, ALit_BDS) == 0))
);
((AsciiStrCmp (Measurement->Token, ALit_SEC) == 0) ||
(AsciiStrCmp (Measurement->Token, ALit_PEI) == 0) ||
(AsciiStrCmp (Measurement->Token, ALit_DXE) == 0) ||
(AsciiStrCmp (Measurement->Token, ALit_BDS) == 0))
);
return RetVal;
}
@ -112,24 +113,24 @@ IsPhase(
**/
BOOLEAN
IsCorePerf(
IN MEASUREMENT_RECORD *Measurement
IsCorePerf (
IN MEASUREMENT_RECORD *Measurement
)
{
BOOLEAN RetVal;
BOOLEAN RetVal;
RetVal = (BOOLEAN)(
((Measurement->Identifier == MODULE_START_ID) ||
(Measurement->Identifier == MODULE_END_ID) ||
(Measurement->Identifier == MODULE_LOADIMAGE_START_ID) ||
(Measurement->Identifier == MODULE_LOADIMAGE_END_ID) ||
(Measurement->Identifier == MODULE_DB_START_ID) ||
(Measurement->Identifier == MODULE_DB_END_ID) ||
(Measurement->Identifier == MODULE_DB_SUPPORT_START_ID) ||
(Measurement->Identifier == MODULE_DB_SUPPORT_END_ID) ||
(Measurement->Identifier == MODULE_DB_STOP_START_ID) ||
(Measurement->Identifier == MODULE_DB_STOP_START_ID))
);
((Measurement->Identifier == MODULE_START_ID) ||
(Measurement->Identifier == MODULE_END_ID) ||
(Measurement->Identifier == MODULE_LOADIMAGE_START_ID) ||
(Measurement->Identifier == MODULE_LOADIMAGE_END_ID) ||
(Measurement->Identifier == MODULE_DB_START_ID) ||
(Measurement->Identifier == MODULE_DB_END_ID) ||
(Measurement->Identifier == MODULE_DB_SUPPORT_START_ID) ||
(Measurement->Identifier == MODULE_DB_SUPPORT_END_ID) ||
(Measurement->Identifier == MODULE_DB_STOP_START_ID) ||
(Measurement->Identifier == MODULE_DB_STOP_START_ID))
);
return RetVal;
}
@ -147,14 +148,14 @@ IsCorePerf(
**/
VOID
DpGetShortPdbFileName (
IN CHAR8 *PdbFileName,
OUT CHAR16 *UnicodeBuffer
IN CHAR8 *PdbFileName,
OUT CHAR16 *UnicodeBuffer
)
{
UINTN IndexA; // Current work location within an ASCII string.
UINTN IndexU; // Current work location within a Unicode string.
UINTN StartIndex;
UINTN EndIndex;
UINTN IndexA; // Current work location within an ASCII string.
UINTN IndexU; // Current work location within a Unicode string.
UINTN StartIndex;
UINTN EndIndex;
ZeroMem (UnicodeBuffer, (DP_GAUGE_STRING_LENGTH + 1) * sizeof (CHAR16));
@ -162,8 +163,9 @@ DpGetShortPdbFileName (
StrnCpyS (UnicodeBuffer, DP_GAUGE_STRING_LENGTH + 1, L" ", 1);
} else {
StartIndex = 0;
for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
;
for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++) {
}
for (IndexA = 0; PdbFileName[IndexA] != 0; IndexA++) {
if ((PdbFileName[IndexA] == '\\') || (PdbFileName[IndexA] == '/')) {
StartIndex = IndexA + 1;
@ -176,7 +178,7 @@ DpGetShortPdbFileName (
IndexU = 0;
for (IndexA = StartIndex; IndexA < EndIndex; IndexA++) {
UnicodeBuffer[IndexU] = (CHAR16) PdbFileName[IndexA];
UnicodeBuffer[IndexU] = (CHAR16)PdbFileName[IndexA];
IndexU++;
if (IndexU >= DP_GAUGE_STRING_LENGTH) {
UnicodeBuffer[DP_GAUGE_STRING_LENGTH] = 0;
@ -204,26 +206,26 @@ DpGetShortPdbFileName (
**/
VOID
DpGetNameFromHandle (
IN EFI_HANDLE Handle
IN EFI_HANDLE Handle
)
{
EFI_STATUS Status;
EFI_LOADED_IMAGE_PROTOCOL *Image;
CHAR8 *PdbFileName;
EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
EFI_STRING StringPtr;
EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_GUID *NameGuid;
CHAR16 *NameString;
UINTN StringSize;
CHAR8 *PlatformLanguage;
CHAR8 *BestLanguage;
EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2;
EFI_STATUS Status;
EFI_LOADED_IMAGE_PROTOCOL *Image;
CHAR8 *PdbFileName;
EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
EFI_STRING StringPtr;
EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_GUID *NameGuid;
CHAR16 *NameString;
UINTN StringSize;
CHAR8 *PlatformLanguage;
CHAR8 *BestLanguage;
EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2;
Image = NULL;
Image = NULL;
LoadedImageDevicePath = NULL;
DevicePath = NULL;
DevicePath = NULL;
//
// Method 1: Get the name string from image PDB
@ -231,14 +233,14 @@ DpGetNameFromHandle (
Status = gBS->HandleProtocol (
Handle,
&gEfiLoadedImageProtocolGuid,
(VOID **) &Image
(VOID **)&Image
);
if (EFI_ERROR (Status)) {
Status = gBS->OpenProtocol (
Handle,
&gEfiDriverBindingProtocolGuid,
(VOID **) &DriverBinding,
(VOID **)&DriverBinding,
NULL,
NULL,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
@ -247,7 +249,7 @@ DpGetNameFromHandle (
Status = gBS->HandleProtocol (
DriverBinding->ImageHandle,
&gEfiLoadedImageProtocolGuid,
(VOID **) &Image
(VOID **)&Image
);
}
}
@ -267,14 +269,14 @@ DpGetNameFromHandle (
Status = gBS->HandleProtocol (
Handle,
&gEfiComponentName2ProtocolGuid,
(VOID **) &ComponentName2
(VOID **)&ComponentName2
);
if (!EFI_ERROR (Status)) {
//
// Firstly use platform language setting, secondly use driver's first supported language.
//
GetVariable2 (L"PlatformLang", &gEfiGlobalVariableGuid, (VOID**)&PlatformLanguage, NULL);
BestLanguage = GetBestLanguage(
GetVariable2 (L"PlatformLang", &gEfiGlobalVariableGuid, (VOID **)&PlatformLanguage, NULL);
BestLanguage = GetBestLanguage (
ComponentName2->SupportedLanguages,
FALSE,
(PlatformLanguage != NULL) ? PlatformLanguage : "",
@ -299,7 +301,7 @@ DpGetNameFromHandle (
Status = gBS->HandleProtocol (
Handle,
&gEfiLoadedImageDevicePathProtocolGuid,
(VOID **) &LoadedImageDevicePath
(VOID **)&LoadedImageDevicePath
);
if (!EFI_ERROR (Status) && (LoadedImageDevicePath != NULL)) {
DevicePath = LoadedImageDevicePath;
@ -313,10 +315,11 @@ DpGetNameFromHandle (
//
NameGuid = NULL;
while (!IsDevicePathEndType (DevicePath)) {
NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *) DevicePath);
NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)DevicePath);
if (NameGuid != NULL) {
break;
}
DevicePath = NextDevicePathNode (DevicePath);
}
@ -326,13 +329,13 @@ DpGetNameFromHandle (
//
NameString = NULL;
StringSize = 0;
Status = GetSectionFromAnyFv (
NameGuid,
EFI_SECTION_USER_INTERFACE,
0,
(VOID **) &NameString,
&StringSize
);
Status = GetSectionFromAnyFv (
NameGuid,
EFI_SECTION_USER_INTERFACE,
0,
(VOID **)&NameString,
&StringSize
);
if (!EFI_ERROR (Status)) {
//
@ -347,6 +350,7 @@ DpGetNameFromHandle (
//
UnicodeSPrint (mGaugeString, sizeof (mGaugeString), L"%g", NameGuid);
}
return;
} else {
//
@ -386,7 +390,7 @@ DpGetNameFromHandle (
**/
UINT64
DurationInMicroSeconds (
IN UINT64 Duration
IN UINT64 Duration
)
{
return DivU64x32 (Duration, 1000);
@ -406,17 +410,18 @@ DurationInMicroSeconds (
@retval >=0 Return value is the index into CumData where Token is found.
**/
INTN
GetCumulativeItem(
IN MEASUREMENT_RECORD *Measurement
GetCumulativeItem (
IN MEASUREMENT_RECORD *Measurement
)
{
INTN Index;
INTN Index;
for( Index = 0; Index < (INTN)NumCum; ++Index) {
for ( Index = 0; Index < (INTN)NumCum; ++Index) {
if (AsciiStrCmp (Measurement->Token, CumData[Index].Name) == 0) {
return Index; // Exit, we found a match
}
}
// If the for loop exits, Token was not found.
return -1; // Indicate failure
}

View File

@ -7,16 +7,16 @@
#include <Guid/ExtendedFirmwarePerformance.h>
// ASCII String literals which probably don't need translation
CHAR8 const ALit_TimerLibError[] = "Timer library instance error!\n";
CHAR8 const ALit_SEC[] = SEC_TOK;
CHAR8 const ALit_DXE[] = DXE_TOK;
CHAR8 const ALit_PEI[] = PEI_TOK;
CHAR8 const ALit_BDS[] = BDS_TOK;
CHAR8 const ALit_START_IMAGE[] = START_IMAGE_TOK;
CHAR8 const ALit_LOAD_IMAGE[] = LOAD_IMAGE_TOK;
CHAR8 const ALit_DB_START[] = DRIVERBINDING_START_TOK;
CHAR8 const ALit_DB_SUPPORT[] = DRIVERBINDING_SUPPORT_TOK;
CHAR8 const ALit_DB_STOP[] = DRIVERBINDING_STOP_TOK;
CHAR8 const ALit_TimerLibError[] = "Timer library instance error!\n";
CHAR8 const ALit_SEC[] = SEC_TOK;
CHAR8 const ALit_DXE[] = DXE_TOK;
CHAR8 const ALit_PEI[] = PEI_TOK;
CHAR8 const ALit_BDS[] = BDS_TOK;
CHAR8 const ALit_START_IMAGE[] = START_IMAGE_TOK;
CHAR8 const ALit_LOAD_IMAGE[] = LOAD_IMAGE_TOK;
CHAR8 const ALit_DB_START[] = DRIVERBINDING_START_TOK;
CHAR8 const ALit_DB_SUPPORT[] = DRIVERBINDING_SUPPORT_TOK;
CHAR8 const ALit_DB_STOP[] = DRIVERBINDING_STOP_TOK;
CHAR8 const ALit_BdsTO[] = "BdsTimeOut";
CHAR8 const ALit_PEIM[] = "PEIM";
CHAR8 const ALit_BdsTO[] = "BdsTimeOut";
CHAR8 const ALit_PEIM[] = "PEIM";

View File

@ -4,23 +4,24 @@
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _LITERALS_H_
#define _LITERALS_H_
// ASCII String literals which probably don't need translation
extern CHAR8 const ALit_TimerLibError[];
extern CHAR8 const ALit_SEC[];
extern CHAR8 const ALit_DXE[];
extern CHAR8 const ALit_SHELL[];
extern CHAR8 const ALit_PEI[];
extern CHAR8 const ALit_BDS[];
extern CHAR8 const ALit_PEIM[];
extern CHAR8 const ALit_START_IMAGE[];
extern CHAR8 const ALit_LOAD_IMAGE[];
extern CHAR8 const ALit_DB_START[];
extern CHAR8 const ALit_DB_SUPPORT[];
extern CHAR8 const ALit_DB_STOP[];
extern CHAR8 const ALit_BdsTO[];
extern CHAR8 const ALit_PEIM[];
extern CHAR8 const ALit_TimerLibError[];
extern CHAR8 const ALit_SEC[];
extern CHAR8 const ALit_DXE[];
extern CHAR8 const ALit_SHELL[];
extern CHAR8 const ALit_PEI[];
extern CHAR8 const ALit_BDS[];
extern CHAR8 const ALit_PEIM[];
extern CHAR8 const ALit_START_IMAGE[];
extern CHAR8 const ALit_LOAD_IMAGE[];
extern CHAR8 const ALit_DB_START[];
extern CHAR8 const ALit_DB_SUPPORT[];
extern CHAR8 const ALit_DB_STOP[];
extern CHAR8 const ALit_BdsTO[];
extern CHAR8 const ALit_PEIM[];
#endif // _LITERALS_H_
#endif // _LITERALS_H_

View File

@ -11,7 +11,7 @@
#include "Http.h"
#define IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH 32
#define IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH 32
//
// Constant strings and definitions related to the message
@ -37,17 +37,17 @@
//
// Buffer size. Note that larger buffer does not mean better speed.
//
#define DEFAULT_BUF_SIZE SIZE_32KB
#define MAX_BUF_SIZE SIZE_4MB
#define DEFAULT_BUF_SIZE SIZE_32KB
#define MAX_BUF_SIZE SIZE_4MB
#define MIN_PARAM_COUNT 2
#define MAX_PARAM_COUNT 4
#define MIN_PARAM_COUNT 2
#define MAX_PARAM_COUNT 4
#define NEED_REDIRECTION(Code) \
(((Code >= HTTP_STATUS_300_MULTIPLE_CHOICES) \
&& (Code <= HTTP_STATUS_307_TEMPORARY_REDIRECT)) \
|| (Code == HTTP_STATUS_308_PERMANENT_REDIRECT))
#define CLOSE_HTTP_HANDLE(ControllerHandle,HttpChildHandle) \
#define CLOSE_HTTP_HANDLE(ControllerHandle, HttpChildHandle) \
do { \
if (HttpChildHandle) { \
CloseProtocolAndDestroyServiceChild ( \
@ -69,13 +69,13 @@ typedef enum {
#define USER_AGENT_HDR "Mozilla/5.0 (EDK2; Linux) Gecko/20100101 Firefox/79.0"
#define TIMER_MAX_TIMEOUT_S 10
#define TIMER_MAX_TIMEOUT_S 10
//
// File name to use when Uri ends with "/".
//
#define DEFAULT_HTML_FILE L"index.html"
#define DEFAULT_HTTP_PROTO L"http"
#define DEFAULT_HTML_FILE L"index.html"
#define DEFAULT_HTTP_PROTO L"http"
//
// String to delete the HTTP progress message to be able to update it :
@ -85,20 +85,20 @@ typedef enum {
L"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\
\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
#define HTTP_KB L"\b\b\b\b\b\b\b\b\b\b"
#define HTTP_KB L"\b\b\b\b\b\b\b\b\b\b"
//
// Frame for the progression slider.
//
#define HTTP_PROGR_FRAME L"[ ]"
#define HTTP_PROGR_FRAME L"[ ]"
//
// Improve readability by using these macros.
//
#define PRINT_HII(token,...) \
#define PRINT_HII(token, ...) \
ShellPrintHiiEx (\
-1, -1, NULL, token, mHttpHiiHandle, __VA_ARGS__)
#define PRINT_HII_APP(token,value) \
#define PRINT_HII_APP(token, value) \
PRINT_HII (token, HTTP_APP_NAME, value)
//
@ -109,19 +109,19 @@ typedef enum {
//
// Define EPOCH (1970-JANUARY-01) in the Julian Date representation.
//
#define EPOCH_JULIAN_DATE 2440588
#define EPOCH_JULIAN_DATE 2440588
//
// Seconds per unit.
//
#define SEC_PER_MIN ((UINTN) 60)
#define SEC_PER_HOUR ((UINTN) 3600)
#define SEC_PER_DAY ((UINTN) 86400)
#define SEC_PER_MIN ((UINTN) 60)
#define SEC_PER_HOUR ((UINTN) 3600)
#define SEC_PER_DAY ((UINTN) 86400)
//
// String descriptions for server errors.
//
STATIC CONST CHAR16 *ErrStatusDesc[] =
STATIC CONST CHAR16 *ErrStatusDesc[] =
{
L"400 Bad Request",
L"401 Unauthorized",
@ -149,32 +149,32 @@ STATIC CONST CHAR16 *ErrStatusDesc[] =
L"505 HTTP version not supported"
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-i", TypeValue},
{L"-k", TypeFlag},
{L"-l", TypeValue},
{L"-m", TypeFlag},
{L"-s", TypeValue},
{L"-t", TypeValue},
{NULL , TypeMax}
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-i", TypeValue },
{ L"-k", TypeFlag },
{ L"-l", TypeValue },
{ L"-m", TypeFlag },
{ L"-s", TypeValue },
{ L"-t", TypeValue },
{ NULL, TypeMax }
};
//
// Local File Handle.
//
STATIC SHELL_FILE_HANDLE mFileHandle = NULL;
STATIC SHELL_FILE_HANDLE mFileHandle = NULL;
//
// Path of the local file, Unicode encoded.
//
STATIC CONST CHAR16 *mLocalFilePath;
STATIC CONST CHAR16 *mLocalFilePath;
STATIC BOOLEAN gRequestCallbackComplete = FALSE;
STATIC BOOLEAN gResponseCallbackComplete = FALSE;
STATIC BOOLEAN gRequestCallbackComplete = FALSE;
STATIC BOOLEAN gResponseCallbackComplete = FALSE;
STATIC BOOLEAN gHttpError;
STATIC BOOLEAN gHttpError;
EFI_HII_HANDLE mHttpHiiHandle;
EFI_HII_HANDLE mHttpHiiHandle;
//
// Functions declarations.
@ -286,9 +286,9 @@ CloseProtocolAndDestroyServiceChild (
STATIC
EFI_STATUS
DownloadFile (
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN EFI_HANDLE ControllerHandle,
IN CHAR16 *NicName
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN EFI_HANDLE ControllerHandle,
IN CHAR16 *NicName
);
/**
@ -302,11 +302,11 @@ DownloadFile (
STATIC
EFI_STATUS
TrimSpaces (
IN CHAR16 *String
IN CHAR16 *String
)
{
CHAR16 *Str;
UINTN Len;
CHAR16 *Str;
UINTN Len;
ASSERT (String != NULL);
@ -328,7 +328,7 @@ TrimSpaces (
//
do {
Len = StrLen (Str);
if (!Len || (Str[Len - 1] != L' ' && Str[Len - 1] != '\t')) {
if (!Len || ((Str[Len - 1] != L' ') && (Str[Len - 1] != '\t'))) {
break;
}
@ -355,8 +355,8 @@ STATIC
VOID
EFIAPI
RequestCallback (
IN EFI_EVENT Event,
IN VOID *Context
IN EFI_EVENT Event,
IN VOID *Context
)
{
gRequestCallbackComplete = TRUE;
@ -371,8 +371,8 @@ STATIC
VOID
EFIAPI
ResponseCallback (
IN EFI_EVENT Event,
IN VOID *Context
IN EFI_EVENT Event,
IN VOID *Context
)
{
gResponseCallbackComplete = TRUE;
@ -396,19 +396,19 @@ EfiGetEpochDays (
IN EFI_TIME *Time
)
{
UINTN a;
UINTN y;
UINTN m;
UINTN a;
UINTN y;
UINTN m;
//
// Absolute Julian Date representation of the supplied Time.
//
UINTN JulianDate;
UINTN JulianDate;
//
// Number of days elapsed since EPOCH_JULIAN_DAY.
//
UINTN EpochDays;
UINTN EpochDays;
a = (14 - Time->Month) / 12 ;
a = (14 - Time->Month) / 12;
y = Time->Year + 4800 - a;
m = Time->Month + (12 * a) - 3;
@ -437,8 +437,8 @@ EfiTimeToEpoch (
//
// Number of days elapsed since EPOCH_JULIAN_DAY.
//
UINTN EpochDays;
UINTN EpochSeconds;
UINTN EpochDays;
UINTN EpochSeconds;
EpochDays = EfiGetEpochDays (Time);
@ -471,32 +471,32 @@ RunHttp (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *CheckPackage;
UINTN ParamCount;
UINTN HandleCount;
UINTN NicNumber;
UINTN InitialSize;
UINTN ParamOffset;
UINTN StartSize;
CHAR16 *ProblemParam;
CHAR16 NicName[IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH];
CHAR16 *Walker1;
CHAR16 *VStr;
CONST CHAR16 *UserNicName;
CONST CHAR16 *ValueStr;
CONST CHAR16 *RemoteFilePath;
CONST CHAR16 *Walker;
EFI_HTTPv4_ACCESS_POINT IPv4Node;
EFI_HANDLE *Handles;
EFI_HANDLE ControllerHandle;
HTTP_DOWNLOAD_CONTEXT Context;
BOOLEAN NicFound;
EFI_STATUS Status;
LIST_ENTRY *CheckPackage;
UINTN ParamCount;
UINTN HandleCount;
UINTN NicNumber;
UINTN InitialSize;
UINTN ParamOffset;
UINTN StartSize;
CHAR16 *ProblemParam;
CHAR16 NicName[IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH];
CHAR16 *Walker1;
CHAR16 *VStr;
CONST CHAR16 *UserNicName;
CONST CHAR16 *ValueStr;
CONST CHAR16 *RemoteFilePath;
CONST CHAR16 *Walker;
EFI_HTTPv4_ACCESS_POINT IPv4Node;
EFI_HANDLE *Handles;
EFI_HANDLE ControllerHandle;
HTTP_DOWNLOAD_CONTEXT Context;
BOOLEAN NicFound;
ProblemParam = NULL;
RemoteFilePath = NULL;
NicFound = FALSE;
Handles = NULL;
ProblemParam = NULL;
RemoteFilePath = NULL;
NicFound = FALSE;
Handles = NULL;
//
// Initialize the Shell library (we must be in non-auto-init...).
@ -522,8 +522,8 @@ RunHttp (
TRUE
);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED)
&& (ProblemParam != NULL))
if ( (Status == EFI_VOLUME_CORRUPTED)
&& (ProblemParam != NULL))
{
PRINT_HII_APP (STRING_TOKEN (STR_GEN_PROBLEM), ProblemParam);
SHELL_FREE_NON_NULL (ProblemParam);
@ -554,7 +554,7 @@ RunHttp (
ZeroMem (&IPv4Node, sizeof (IPv4Node));
IPv4Node.UseDefaultAddress = TRUE;
Context.HttpConfigData.HttpVersion = HttpVersion11;
Context.HttpConfigData.HttpVersion = HttpVersion11;
Context.HttpConfigData.AccessPoint.IPv4Node = &IPv4Node;
//
@ -592,7 +592,7 @@ RunHttp (
}
if (*Walker1 == L'/') {
ParamOffset = 1;
ParamOffset = 1;
RemoteFilePath = Walker1;
}
@ -629,7 +629,8 @@ RunHttp (
Walker = RemoteFilePath + StrLen (RemoteFilePath);
while ((--Walker) >= RemoteFilePath) {
if ((*Walker == L'\\') ||
(*Walker == L'/' ) ) {
(*Walker == L'/'))
{
break;
}
}
@ -659,12 +660,12 @@ RunHttp (
UserNicName = ShellCommandLineGetValue (CheckPackage, L"-i");
ValueStr = ShellCommandLineGetValue (CheckPackage, L"-l");
if ((ValueStr != NULL)
&& (!StringToUint16 (
ValueStr,
&Context.HttpConfigData.AccessPoint.IPv4Node->LocalPort
)
))
if ( (ValueStr != NULL)
&& (!StringToUint16 (
ValueStr,
&Context.HttpConfigData.AccessPoint.IPv4Node->LocalPort
)
))
{
goto Error;
}
@ -674,7 +675,7 @@ RunHttp (
ValueStr = ShellCommandLineGetValue (CheckPackage, L"-s");
if (ValueStr != NULL) {
Context.BufferSize = ShellStrToUintn (ValueStr);
if (!Context.BufferSize || Context.BufferSize > MAX_BUF_SIZE) {
if (!Context.BufferSize || (Context.BufferSize > MAX_BUF_SIZE)) {
PRINT_HII_APP (STRING_TOKEN (STR_GEN_PARAM_INV), ValueStr);
goto Error;
}
@ -756,10 +757,10 @@ RunHttp (
}
if (gHttpError) {
//
// This is not related to connection, so no need to repeat with
// another interface.
//
//
// This is not related to connection, so no need to repeat with
// another interface.
//
break;
}
}
@ -841,7 +842,7 @@ GetNicName (
&gEfiManagedNetworkServiceBindingProtocolGuid,
&gEfiManagedNetworkProtocolGuid,
&MnpHandle,
(VOID**)&Mnp
(VOID **)&Mnp
);
if (EFI_ERROR (Status)) {
goto Error;
@ -907,12 +908,12 @@ CreateServiceChildAndOpenProtocol (
EFI_STATUS Status;
*ChildHandle = NULL;
Status = NetLibCreateServiceChild (
ControllerHandle,
gImageHandle,
ServiceBindingProtocolGuid,
ChildHandle
);
Status = NetLibCreateServiceChild (
ControllerHandle,
gImageHandle,
ServiceBindingProtocolGuid,
ChildHandle
);
if (!EFI_ERROR (Status)) {
Status = gBS->OpenProtocol (
*ChildHandle,
@ -990,8 +991,8 @@ WaitForCompletion (
IN OUT BOOLEAN *CallBackComplete
)
{
EFI_STATUS Status;
EFI_EVENT WaitEvt;
EFI_STATUS Status;
EFI_EVENT WaitEvt;
Status = EFI_SUCCESS;
@ -1005,25 +1006,25 @@ WaitForCompletion (
NULL,
&WaitEvt
);
ASSERT_EFI_ERROR (Status);
ASSERT_EFI_ERROR (Status);
if (!EFI_ERROR (Status)) {
Status = gBS->SetTimer (
WaitEvt,
TimerRelative,
EFI_TIMER_PERIOD_SECONDS (TIMER_MAX_TIMEOUT_S)
);
if (!EFI_ERROR (Status)) {
Status = gBS->SetTimer (
WaitEvt,
TimerRelative,
EFI_TIMER_PERIOD_SECONDS (TIMER_MAX_TIMEOUT_S)
);
ASSERT_EFI_ERROR (Status);
}
ASSERT_EFI_ERROR (Status);
}
while (! *CallBackComplete
&& (!EFI_ERROR (Status))
&& EFI_ERROR (gBS->CheckEvent (WaitEvt)))
while ( !*CallBackComplete
&& (!EFI_ERROR (Status))
&& EFI_ERROR (gBS->CheckEvent (WaitEvt)))
{
Status = Context->Http->Poll (Context->Http);
if (!Context->ContentDownloaded
&& CallBackComplete == &gResponseCallbackComplete)
if ( !Context->ContentDownloaded
&& (CallBackComplete == &gResponseCallbackComplete))
{
//
// An HTTP server may just send a response redirection header.
@ -1032,12 +1033,12 @@ WaitForCompletion (
// Note that at this point Response may not has been populated,
// so it needs to be checked first.
//
if (Context->ResponseToken.Message
&& Context->ResponseToken.Message->Data.Response
&& (NEED_REDIRECTION (
Context->ResponseToken.Message->Data.Response->StatusCode
)
))
if ( Context->ResponseToken.Message
&& Context->ResponseToken.Message->Data.Response
&& (NEED_REDIRECTION (
Context->ResponseToken.Message->Data.Response->StatusCode
)
))
{
break;
}
@ -1079,20 +1080,20 @@ SendRequest (
IN CHAR16 *DownloadUrl
)
{
EFI_HTTP_REQUEST_DATA RequestData;
EFI_HTTP_HEADER RequestHeader[HdrMax];
EFI_HTTP_MESSAGE RequestMessage;
EFI_STATUS Status;
CHAR16 *Host;
UINTN StringSize;
EFI_HTTP_REQUEST_DATA RequestData;
EFI_HTTP_HEADER RequestHeader[HdrMax];
EFI_HTTP_MESSAGE RequestMessage;
EFI_STATUS Status;
CHAR16 *Host;
UINTN StringSize;
ZeroMem (&RequestData, sizeof (RequestData));
ZeroMem (&RequestHeader, sizeof (RequestHeader));
ZeroMem (&RequestMessage, sizeof (RequestMessage));
ZeroMem (&Context->RequestToken, sizeof (Context->RequestToken));
RequestHeader[HdrHost].FieldName = "Host";
RequestHeader[HdrConn].FieldName = "Connection";
RequestHeader[HdrHost].FieldName = "Host";
RequestHeader[HdrConn].FieldName = "Connection";
RequestHeader[HdrAgent].FieldName = "User-Agent";
Host = (CHAR16 *)Context->ServerAddrAndProto;
@ -1113,7 +1114,7 @@ SendRequest (
//
Host++;
StringSize = StrLen (Host) + 1;
StringSize = StrLen (Host) + 1;
RequestHeader[HdrHost].FieldValue = AllocatePool (StringSize);
if (!RequestHeader[HdrHost].FieldValue) {
return EFI_OUT_OF_RESOURCES;
@ -1125,17 +1126,17 @@ SendRequest (
StringSize
);
RequestHeader[HdrConn].FieldValue = "close";
RequestHeader[HdrConn].FieldValue = "close";
RequestHeader[HdrAgent].FieldValue = USER_AGENT_HDR;
RequestMessage.HeaderCount = HdrMax;
RequestMessage.HeaderCount = HdrMax;
RequestData.Method = HttpMethodGet;
RequestData.Url = DownloadUrl;
RequestData.Url = DownloadUrl;
RequestMessage.Data.Request = &RequestData;
RequestMessage.Headers = RequestHeader;
RequestMessage.BodyLength = 0;
RequestMessage.Body = NULL;
RequestMessage.Headers = RequestHeader;
RequestMessage.BodyLength = 0;
RequestMessage.Body = NULL;
Context->RequestToken.Event = NULL;
//
@ -1150,10 +1151,10 @@ SendRequest (
);
ASSERT_EFI_ERROR (Status);
Context->RequestToken.Status = EFI_SUCCESS;
Context->RequestToken.Status = EFI_SUCCESS;
Context->RequestToken.Message = &RequestMessage;
gRequestCallbackComplete = FALSE;
Status = Context->Http->Request (Context->Http, &Context->RequestToken);
gRequestCallbackComplete = FALSE;
Status = Context->Http->Request (Context->Http, &Context->RequestToken);
if (EFI_ERROR (Status)) {
goto Error;
}
@ -1193,15 +1194,15 @@ SavePortion (
IN CHAR8 *Buffer
)
{
CHAR16 Progress[HTTP_PROGRESS_MESSAGE_SIZE];
UINTN NbOfKb;
UINTN Index;
UINTN LastStep;
UINTN Step;
EFI_STATUS Status;
CHAR16 Progress[HTTP_PROGRESS_MESSAGE_SIZE];
UINTN NbOfKb;
UINTN Index;
UINTN LastStep;
UINTN Step;
EFI_STATUS Status;
LastStep = 0;
Step = 0;
Step = 0;
ShellSetFilePosition (mFileHandle, Context->LastReportedNbOfBytes);
Status = ShellWriteFile (mFileHandle, &DownloadLen, Buffer);
@ -1219,14 +1220,14 @@ SavePortion (
}
Context->ContentDownloaded += DownloadLen;
NbOfKb = Context->ContentDownloaded >> 10;
NbOfKb = Context->ContentDownloaded >> 10;
Progress[0] = L'\0';
if (Context->ContentLength) {
LastStep = (Context->LastReportedNbOfBytes * HTTP_PROGRESS_SLIDER_STEPS) /
Context->ContentLength;
Step = (Context->ContentDownloaded * HTTP_PROGRESS_SLIDER_STEPS) /
Context->ContentLength;
LastStep = (Context->LastReportedNbOfBytes * HTTP_PROGRESS_SLIDER_STEPS) /
Context->ContentLength;
Step = (Context->ContentDownloaded * HTTP_PROGRESS_SLIDER_STEPS) /
Context->ContentLength;
}
Context->LastReportedNbOfBytes = Context->ContentDownloaded;
@ -1265,7 +1266,6 @@ SavePortion (
NbOfKb
);
ShellPrintEx (-1, -1, L"%s", Progress);
return EFI_SUCCESS;
@ -1286,29 +1286,29 @@ SavePortion (
STATIC
EFI_STATUS
SetHostURI (
IN CHAR8 *Location,
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN CHAR16 *DownloadUrl
IN CHAR8 *Location,
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN CHAR16 *DownloadUrl
)
{
EFI_STATUS Status;
UINTN StringSize;
UINTN FirstStep;
UINTN Idx;
UINTN Step;
CHAR8 *Walker;
CHAR16 *Temp;
CHAR8 *Tmp;
CHAR16 *Url;
BOOLEAN IsAbEmptyUrl;
EFI_STATUS Status;
UINTN StringSize;
UINTN FirstStep;
UINTN Idx;
UINTN Step;
CHAR8 *Walker;
CHAR16 *Temp;
CHAR8 *Tmp;
CHAR16 *Url;
BOOLEAN IsAbEmptyUrl;
Tmp = NULL;
Url = NULL;
Tmp = NULL;
Url = NULL;
IsAbEmptyUrl = FALSE;
FirstStep = 0;
FirstStep = 0;
StringSize = (AsciiStrSize (Location) * sizeof (CHAR16));
Url = AllocateZeroPool (StringSize);
Url = AllocateZeroPool (StringSize);
if (!Url) {
return EFI_OUT_OF_RESOURCES;
}
@ -1320,7 +1320,7 @@ SetHostURI (
);
if (EFI_ERROR (Status)) {
goto Error;
goto Error;
}
//
@ -1347,11 +1347,11 @@ SetHostURI (
}
if (AsciiStrStr (Location, "://") || IsAbEmptyUrl) {
Idx = 0;
Idx = 0;
Walker = Location;
for (Step = FirstStep; Step < 2; Step++) {
for (; *Walker != '/' && *Walker != '\0'; Walker++) {
for ( ; *Walker != '/' && *Walker != '\0'; Walker++) {
Idx++;
}
@ -1359,7 +1359,7 @@ SetHostURI (
//
// Skip "//"
//
Idx += 2;
Idx += 2;
Walker += 2;
}
}
@ -1375,7 +1375,7 @@ SetHostURI (
//
// Location now points to Uri
//
Location += Idx;
Location += Idx;
StringSize = (Idx + 1) * sizeof (CHAR16);
SHELL_FREE_NON_NULL (Context->ServerAddrAndProto);
@ -1421,7 +1421,7 @@ SetHostURI (
SHELL_FREE_NON_NULL (Context->Uri);
StringSize = AsciiStrSize (Location) * sizeof (CHAR16);
StringSize = AsciiStrSize (Location) * sizeof (CHAR16);
Context->Uri = AllocateZeroPool (StringSize);
if (!Context->Uri) {
Status = EFI_OUT_OF_RESOURCES;
@ -1460,15 +1460,15 @@ STATIC
EFI_STATUS
EFIAPI
ParseMsg (
IN HTTP_BODY_PARSE_EVENT EventType,
IN CHAR8 *Data,
IN UINTN Length,
IN VOID *Context
IN HTTP_BODY_PARSE_EVENT EventType,
IN CHAR8 *Data,
IN UINTN Length,
IN VOID *Context
)
{
if ((Data == NULL)
|| (EventType == BodyParseEventOnComplete)
|| (Context == NULL))
if ( (Data == NULL)
|| (EventType == BodyParseEventOnComplete)
|| (Context == NULL))
{
return EFI_SUCCESS;
}
@ -1476,7 +1476,6 @@ ParseMsg (
return SavePortion (Context, Length, Data);
}
/**
Get HTTP server response and collect the whole body as a file.
Set appropriate status in Context (REQ_OK, REQ_REPEAT, REQ_ERROR).
@ -1498,38 +1497,38 @@ ParseMsg (
STATIC
EFI_STATUS
GetResponse (
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN CHAR16 *DownloadUrl
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN CHAR16 *DownloadUrl
)
{
EFI_HTTP_RESPONSE_DATA ResponseData;
EFI_HTTP_MESSAGE ResponseMessage;
EFI_HTTP_HEADER *Header;
EFI_STATUS Status;
VOID *MsgParser;
EFI_TIME StartTime;
EFI_TIME EndTime;
CONST CHAR16 *Desc;
UINTN ElapsedSeconds;
BOOLEAN IsTrunked;
BOOLEAN CanMeasureTime;
EFI_HTTP_RESPONSE_DATA ResponseData;
EFI_HTTP_MESSAGE ResponseMessage;
EFI_HTTP_HEADER *Header;
EFI_STATUS Status;
VOID *MsgParser;
EFI_TIME StartTime;
EFI_TIME EndTime;
CONST CHAR16 *Desc;
UINTN ElapsedSeconds;
BOOLEAN IsTrunked;
BOOLEAN CanMeasureTime;
ZeroMem (&ResponseData, sizeof (ResponseData));
ZeroMem (&ResponseMessage, sizeof (ResponseMessage));
ZeroMem (&Context->ResponseToken, sizeof (Context->ResponseToken));
IsTrunked = FALSE;
ResponseMessage.Body = Context->Buffer;
Context->ResponseToken.Status = EFI_SUCCESS;
ResponseMessage.Body = Context->Buffer;
Context->ResponseToken.Status = EFI_SUCCESS;
Context->ResponseToken.Message = &ResponseMessage;
Context->ContentLength = 0;
Context->Status = REQ_OK;
Status = EFI_SUCCESS;
MsgParser = NULL;
ResponseData.StatusCode = HTTP_STATUS_UNSUPPORTED_STATUS;
ResponseMessage.Data.Response = &ResponseData;
Context->ResponseToken.Event = NULL;
CanMeasureTime = FALSE;
Context->ContentLength = 0;
Context->Status = REQ_OK;
Status = EFI_SUCCESS;
MsgParser = NULL;
ResponseData.StatusCode = HTTP_STATUS_UNSUPPORTED_STATUS;
ResponseMessage.Data.Response = &ResponseData;
Context->ResponseToken.Event = NULL;
CanMeasureTime = FALSE;
if (Context->Flags & DL_FLAG_TIME) {
ZeroMem (&StartTime, sizeof (StartTime));
CanMeasureTime = !EFI_ERROR (gRT->GetTime (&StartTime, NULL));
@ -1538,8 +1537,8 @@ GetResponse (
do {
SHELL_FREE_NON_NULL (ResponseMessage.Headers);
ResponseMessage.HeaderCount = 0;
gResponseCallbackComplete = FALSE;
ResponseMessage.BodyLength = Context->BufferSize;
gResponseCallbackComplete = FALSE;
ResponseMessage.BodyLength = Context->BufferSize;
if (ShellGetExecutionBreakFlag ()) {
Status = EFI_ABORTED;
@ -1642,8 +1641,8 @@ GetResponse (
HttpGetEntityLength (MsgParser, &Context->ContentLength);
if (ResponseData.StatusCode >= HTTP_STATUS_400_BAD_REQUEST
&& (ResponseData.StatusCode != HTTP_STATUS_308_PERMANENT_REDIRECT))
if ( (ResponseData.StatusCode >= HTTP_STATUS_400_BAD_REQUEST)
&& (ResponseData.StatusCode != HTTP_STATUS_308_PERMANENT_REDIRECT))
{
//
// Server reported an error via Response code.
@ -1665,7 +1664,7 @@ GetResponse (
// This gives an RFC HTTP error.
//
Context->Status = ShellStrToUintn (Desc);
Status = ENCODE_ERROR (Context->Status);
Status = ENCODE_ERROR (Context->Status);
}
}
}
@ -1680,13 +1679,13 @@ GetResponse (
ResponseMessage.Body
);
}
} while (!HttpIsMessageComplete (MsgParser)
&& !EFI_ERROR (Status)
&& ResponseMessage.BodyLength);
} while ( !HttpIsMessageComplete (MsgParser)
&& !EFI_ERROR (Status)
&& ResponseMessage.BodyLength);
if (Context->Status != REQ_NEED_REPEAT
&& Status == EFI_SUCCESS
&& CanMeasureTime)
if ( (Context->Status != REQ_NEED_REPEAT)
&& (Status == EFI_SUCCESS)
&& CanMeasureTime)
{
if (!EFI_ERROR (gRT->GetTime (&EndTime, NULL))) {
ElapsedSeconds = EfiTimeToEpoch (&EndTime) - EfiTimeToEpoch (&StartTime);
@ -1726,22 +1725,22 @@ GetResponse (
STATIC
EFI_STATUS
DownloadFile (
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN EFI_HANDLE ControllerHandle,
IN CHAR16 *NicName
IN HTTP_DOWNLOAD_CONTEXT *Context,
IN EFI_HANDLE ControllerHandle,
IN CHAR16 *NicName
)
{
EFI_STATUS Status;
CHAR16 *DownloadUrl;
UINTN UrlSize;
EFI_HANDLE HttpChildHandle;
EFI_STATUS Status;
CHAR16 *DownloadUrl;
UINTN UrlSize;
EFI_HANDLE HttpChildHandle;
ASSERT (Context);
if (Context == NULL) {
return EFI_INVALID_PARAMETER;
}
DownloadUrl = NULL;
DownloadUrl = NULL;
HttpChildHandle = NULL;
Context->Buffer = AllocatePool (Context->BufferSize);
@ -1780,7 +1779,7 @@ DownloadFile (
&gEfiHttpServiceBindingProtocolGuid,
&gEfiHttpProtocolGuid,
&HttpChildHandle,
(VOID**)&Context->Http
(VOID **)&Context->Http
);
if (EFI_ERROR (Status)) {
@ -1794,7 +1793,7 @@ DownloadFile (
goto ON_EXIT;
}
UrlSize = 0;
UrlSize = 0;
DownloadUrl = StrnCatGrow (
&DownloadUrl,
&UrlSize,
@ -1814,7 +1813,8 @@ DownloadFile (
&DownloadUrl,
&UrlSize,
Context->Uri,
StrLen (Context->Uri));
StrLen (Context->Uri)
);
PRINT_HII (STRING_TOKEN (STR_HTTP_DOWNLOADING), DownloadUrl);
@ -1828,7 +1828,6 @@ DownloadFile (
if (Status) {
goto ON_EXIT;
}
} while (Context->Status == REQ_NEED_REPEAT);
if (Context->Status) {
@ -1864,12 +1863,12 @@ ON_EXIT:
**/
EFI_HII_HANDLE
InitializeHiiPackage (
IN EFI_HANDLE ImageHandle
IN EFI_HANDLE ImageHandle
)
{
EFI_STATUS Status;
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
EFI_HII_HANDLE HiiHandle;
EFI_STATUS Status;
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
EFI_HII_HANDLE HiiHandle;
//
// Retrieve HII package list from ImageHandle.
@ -1891,11 +1890,11 @@ InitializeHiiPackage (
// Publish HII package list to HII Database.
//
Status = gHiiDatabase->NewPackageList (
gHiiDatabase,
PackageList,
NULL,
&HiiHandle
);
gHiiDatabase,
PackageList,
NULL,
&HiiHandle
);
ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status)) {
return NULL;

View File

@ -32,7 +32,7 @@
#include <Protocol/HttpUtilities.h>
#include <Protocol/ServiceBinding.h>
#define HTTP_APP_NAME L"http"
#define HTTP_APP_NAME L"http"
#define REQ_OK 0
#define REQ_NEED_REPEAT 1
@ -40,25 +40,25 @@
//
// Download Flags.
//
#define DL_FLAG_TIME BIT0 // Show elapsed time.
#define DL_FLAG_KEEP_BAD BIT1 // Keep files even if download failed.
#define DL_FLAG_TIME BIT0 // Show elapsed time.
#define DL_FLAG_KEEP_BAD BIT1 // Keep files even if download failed.
extern EFI_HII_HANDLE mHttpHiiHandle;
extern EFI_HII_HANDLE mHttpHiiHandle;
typedef struct {
UINTN ContentDownloaded;
UINTN ContentLength;
UINTN LastReportedNbOfBytes;
UINTN BufferSize;
UINTN Status;
UINTN Flags;
UINT8 *Buffer;
CHAR16 *ServerAddrAndProto;
CHAR16 *Uri;
EFI_HTTP_TOKEN ResponseToken;
EFI_HTTP_TOKEN RequestToken;
EFI_HTTP_PROTOCOL *Http;
EFI_HTTP_CONFIG_DATA HttpConfigData;
UINTN ContentDownloaded;
UINTN ContentLength;
UINTN LastReportedNbOfBytes;
UINTN BufferSize;
UINTN Status;
UINTN Flags;
UINT8 *Buffer;
CHAR16 *ServerAddrAndProto;
CHAR16 *Uri;
EFI_HTTP_TOKEN ResponseToken;
EFI_HTTP_TOKEN RequestToken;
EFI_HTTP_PROTOCOL *Http;
EFI_HTTP_CONFIG_DATA HttpConfigData;
} HTTP_DOWNLOAD_CONTEXT;
/**
@ -87,6 +87,7 @@ RunHttp (
**/
EFI_HII_HANDLE
InitializeHiiPackage (
IN EFI_HANDLE ImageHandle
IN EFI_HANDLE ImageHandle
);
#endif // _HTTP_H_

View File

@ -20,7 +20,7 @@
* Thus the application can use '-?' option to show help message in Shell.
*/
GLOBAL_REMOVE_IF_UNREFERENCED
EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_HTTP);
EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_HTTP);
/**
Entry point of Http standalone application.
@ -35,12 +35,12 @@ EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_HTTP);
EFI_STATUS
EFIAPI
HttpAppInitialize (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
SHELL_STATUS ShellStatus;
EFI_STATUS Status;
SHELL_STATUS ShellStatus;
mHttpHiiHandle = InitializeHiiPackage (ImageHandle);
if (mHttpHiiHandle == NULL) {

View File

@ -28,10 +28,10 @@
SHELL_STATUS
EFIAPI
HttpCommandHandler (
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN EFI_SYSTEM_TABLE *SystemTable,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
IN EFI_SHELL_PROTOCOL *Shell
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN EFI_SYSTEM_TABLE *SystemTable,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
IN EFI_SHELL_PROTOCOL *Shell
)
{
gEfiShellParametersProtocol = ShellParameters;
@ -53,8 +53,8 @@ HttpCommandHandler (
CHAR16 *
EFIAPI
HttpCommandGetHelp (
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN CONST CHAR8 *Language
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN CONST CHAR8 *Language
)
{
return HiiGetString (
@ -64,7 +64,7 @@ HttpCommandGetHelp (
);
}
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mHttpDynamicCommand = {
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mHttpDynamicCommand = {
HTTP_APP_NAME,
HttpCommandHandler,
HttpCommandGetHelp
@ -85,11 +85,11 @@ EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mHttpDynamicCommand = {
EFI_STATUS
EFIAPI
HttpCommandInitialize (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_STATUS Status;
mHttpHiiHandle = InitializeHiiPackage (ImageHandle);
if (mHttpHiiHandle == NULL) {
@ -117,10 +117,10 @@ HttpCommandInitialize (
EFI_STATUS
EFIAPI
HttpUnload (
IN EFI_HANDLE ImageHandle
)
IN EFI_HANDLE ImageHandle
)
{
EFI_STATUS Status;
EFI_STATUS Status;
Status = gBS->UninstallProtocolInterface (
ImageHandle,

View File

@ -10,8 +10,8 @@
#include "Tftp.h"
#define IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH 32
EFI_HII_HANDLE mTftpHiiHandle;
#define IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH 32
EFI_HII_HANDLE mTftpHiiHandle;
/*
Constant strings and definitions related to the message indicating the amount of
@ -19,7 +19,7 @@ EFI_HII_HANDLE mTftpHiiHandle;
*/
// Frame for the progression slider
STATIC CONST CHAR16 mTftpProgressFrame[] = L"[ ]";
STATIC CONST CHAR16 mTftpProgressFrame[] = L"[ ]";
// Number of steps in the progression slider
#define TFTP_PROGRESS_SLIDER_STEPS ((sizeof (mTftpProgressFrame) / sizeof (CHAR16)) - 3)
@ -33,13 +33,13 @@ STATIC CONST CHAR16 mTftpProgressFrame[] = L"[
// String to delete the TFTP progress message to be able to update it :
// (TFTP_PROGRESS_MESSAGE_SIZE-1) '\b'
STATIC CONST CHAR16 mTftpProgressDelete[] = L"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
STATIC CONST CHAR16 mTftpProgressDelete[] = L"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
// Local File Handle
SHELL_FILE_HANDLE mFileHandle;
SHELL_FILE_HANDLE mFileHandle;
// Path of the local file, Unicode encoded
CONST CHAR16 *mLocalFilePath;
CONST CHAR16 *mLocalFilePath;
/**
Check and convert the UINT16 option values of the 'tftp' command
@ -206,49 +206,57 @@ CheckPacket (
IN EFI_MTFTP4_PACKET *Packet
);
EFI_MTFTP4_CONFIG_DATA DefaultMtftp4ConfigData = {
EFI_MTFTP4_CONFIG_DATA DefaultMtftp4ConfigData = {
TRUE, // Use default setting
{ { 0, 0, 0, 0 } }, // StationIp - Not relevant as UseDefaultSetting=TRUE
{ { 0, 0, 0, 0 } }, // SubnetMask - Not relevant as UseDefaultSetting=TRUE
{
{ 0, 0, 0, 0 }
}, // StationIp - Not relevant as UseDefaultSetting=TRUE
{
{ 0, 0, 0, 0 }
}, // SubnetMask - Not relevant as UseDefaultSetting=TRUE
0, // LocalPort - Automatically assigned port number.
{ { 0, 0, 0, 0 } }, // GatewayIp - Not relevant as UseDefaultSetting=TRUE
{ { 0, 0, 0, 0 } }, // ServerIp - Not known yet
{
{ 0, 0, 0, 0 }
}, // GatewayIp - Not relevant as UseDefaultSetting=TRUE
{
{ 0, 0, 0, 0 }
}, // ServerIp - Not known yet
69, // InitialServerPort - Standard TFTP server port
6, // TryCount - The number of times to transmit request packets and wait for a response.
4 // TimeoutValue - Retransmission timeout in seconds.
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-i", TypeValue},
{L"-l", TypeValue},
{L"-r", TypeValue},
{L"-c", TypeValue},
{L"-t", TypeValue},
{L"-s", TypeValue},
{L"-w", TypeValue},
{NULL , TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-i", TypeValue },
{ L"-l", TypeValue },
{ L"-r", TypeValue },
{ L"-c", TypeValue },
{ L"-t", TypeValue },
{ L"-s", TypeValue },
{ L"-w", TypeValue },
{ NULL, TypeMax }
};
///
/// The default block size (512) of tftp is defined in the RFC1350.
///
#define MTFTP_DEFAULT_BLKSIZE 512
#define MTFTP_DEFAULT_BLKSIZE 512
///
/// The valid range of block size option is defined in the RFC2348.
///
#define MTFTP_MIN_BLKSIZE 8
#define MTFTP_MAX_BLKSIZE 65464
#define MTFTP_MIN_BLKSIZE 8
#define MTFTP_MAX_BLKSIZE 65464
///
/// The default windowsize (1) of tftp.
///
#define MTFTP_DEFAULT_WINDOWSIZE 1
#define MTFTP_DEFAULT_WINDOWSIZE 1
///
/// The valid range of window size option.
/// Note that: RFC 7440 does not mention max window size value, but for the
/// stability reason, the value is limited to 64.
///
#define MTFTP_MIN_WINDOWSIZE 1
#define MTFTP_MAX_WINDOWSIZE 64
#define MTFTP_MIN_WINDOWSIZE 1
#define MTFTP_MAX_WINDOWSIZE 64
/**
Function for 'tftp' command.
@ -319,15 +327,22 @@ RunTftp (
Status = ShellCommandLineParse (ParamList, &CheckPackage, &ProblemParam, TRUE);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) &&
(ProblemParam != NULL) ) {
(ProblemParam != NULL))
{
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), mTftpHiiHandle,
L"tftp", ProblemParam
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_PROBLEM),
mTftpHiiHandle,
L"tftp",
ProblemParam
);
FreePool (ProblemParam);
} else {
ASSERT (FALSE);
}
goto Error;
}
@ -337,15 +352,24 @@ RunTftp (
ParamCount = ShellCommandLineGetCount (CheckPackage);
if (ParamCount > 4) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY),
mTftpHiiHandle, L"tftp"
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_TOO_MANY),
mTftpHiiHandle,
L"tftp"
);
goto Error;
}
if (ParamCount < 3) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW),
mTftpHiiHandle, L"tftp"
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_TOO_FEW),
mTftpHiiHandle,
L"tftp"
);
goto Error;
}
@ -356,23 +380,29 @@ RunTftp (
// Check the host IPv4 address
//
ValueStr = ShellCommandLineGetRawValue (CheckPackage, 1);
Status = NetLibStrToIp4 (ValueStr, &Mtftp4ConfigData.ServerIp);
Status = NetLibStrToIp4 (ValueStr, &Mtftp4ConfigData.ServerIp);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle, L"tftp", ValueStr
);
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle,
L"tftp",
ValueStr
);
goto Error;
}
RemoteFilePath = ShellCommandLineGetRawValue (CheckPackage, 2);
ASSERT(RemoteFilePath != NULL);
FilePathSize = StrLen (RemoteFilePath) + 1;
ASSERT (RemoteFilePath != NULL);
FilePathSize = StrLen (RemoteFilePath) + 1;
AsciiRemoteFilePath = AllocatePool (FilePathSize);
if (AsciiRemoteFilePath == NULL) {
ShellStatus = SHELL_OUT_OF_RESOURCES;
goto Error;
}
UnicodeStrToAsciiStrS (RemoteFilePath, AsciiRemoteFilePath, FilePathSize);
if (ParamCount == 4) {
@ -381,10 +411,12 @@ RunTftp (
Walker = RemoteFilePath + StrLen (RemoteFilePath);
while ((--Walker) >= RemoteFilePath) {
if ((*Walker == L'\\') ||
(*Walker == L'/' ) ) {
(*Walker == L'/'))
{
break;
}
}
mLocalFilePath = Walker + 1;
}
@ -423,11 +455,17 @@ RunTftp (
if (!StringToUint16 (ValueStr, &Mtftp4ConfigData.TimeoutValue)) {
goto Error;
}
if (Mtftp4ConfigData.TimeoutValue == 0) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle, L"tftp", ValueStr
);
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle,
L"tftp",
ValueStr
);
goto Error;
}
}
@ -437,11 +475,17 @@ RunTftp (
if (!StringToUint16 (ValueStr, &BlockSize)) {
goto Error;
}
if (BlockSize < MTFTP_MIN_BLKSIZE || BlockSize > MTFTP_MAX_BLKSIZE) {
if ((BlockSize < MTFTP_MIN_BLKSIZE) || (BlockSize > MTFTP_MAX_BLKSIZE)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle, L"tftp", ValueStr
);
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle,
L"tftp",
ValueStr
);
goto Error;
}
}
@ -451,11 +495,17 @@ RunTftp (
if (!StringToUint16 (ValueStr, &WindowSize)) {
goto Error;
}
if (WindowSize < MTFTP_MIN_WINDOWSIZE || WindowSize > MTFTP_MAX_WINDOWSIZE) {
if ((WindowSize < MTFTP_MIN_WINDOWSIZE) || (WindowSize > MTFTP_MAX_WINDOWSIZE)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle, L"tftp", ValueStr
);
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle,
L"tftp",
ValueStr
);
goto Error;
}
}
@ -464,32 +514,41 @@ RunTftp (
// Locate all MTFTP4 Service Binding protocols
//
ShellStatus = SHELL_NOT_FOUND;
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gEfiManagedNetworkServiceBindingProtocolGuid,
NULL,
&HandleCount,
&Handles
);
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gEfiManagedNetworkServiceBindingProtocolGuid,
NULL,
&HandleCount,
&Handles
);
if (EFI_ERROR (Status) || (HandleCount == 0)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_NO_NIC),
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_NO_NIC),
mTftpHiiHandle
);
);
goto Error;
}
for (NicNumber = 0;
(NicNumber < HandleCount) && (ShellStatus != SHELL_SUCCESS);
NicNumber++) {
NicNumber++)
{
ControllerHandle = Handles[NicNumber];
Status = GetNicName (ControllerHandle, NicNumber, NicName);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_NIC_NAME),
mTftpHiiHandle, NicNumber, Status
);
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_NIC_NAME),
mTftpHiiHandle,
NicNumber,
Status
);
continue;
}
@ -497,6 +556,7 @@ RunTftp (
if (StrCmp (NicName, UserNicName) != 0) {
continue;
}
NicFound = TRUE;
}
@ -505,46 +565,68 @@ RunTftp (
&gEfiMtftp4ServiceBindingProtocolGuid,
&gEfiMtftp4ProtocolGuid,
&Mtftp4ChildHandle,
(VOID**)&Mtftp4
(VOID **)&Mtftp4
);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_OPEN_PROTOCOL),
mTftpHiiHandle, NicName, Status
);
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_OPEN_PROTOCOL),
mTftpHiiHandle,
NicName,
Status
);
continue;
}
Status = Mtftp4->Configure (Mtftp4, &Mtftp4ConfigData);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_CONFIGURE),
mTftpHiiHandle, NicName, Status
);
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_CONFIGURE),
mTftpHiiHandle,
NicName,
Status
);
goto NextHandle;
}
Status = GetFileSize (Mtftp4, AsciiRemoteFilePath, &FileSize);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_FILE_SIZE),
mTftpHiiHandle, RemoteFilePath, NicName, Status
);
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_FILE_SIZE),
mTftpHiiHandle,
RemoteFilePath,
NicName,
Status
);
goto NextHandle;
}
Status = DownloadFile (Mtftp4, RemoteFilePath, AsciiRemoteFilePath, FileSize, BlockSize, WindowSize);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_DOWNLOAD),
mTftpHiiHandle, RemoteFilePath, NicName, Status
);
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_DOWNLOAD),
mTftpHiiHandle,
RemoteFilePath,
NicName,
Status
);
goto NextHandle;
}
ShellStatus = SHELL_SUCCESS;
NextHandle:
NextHandle:
CloseProtocolAndDestroyServiceChild (
ControllerHandle,
@ -556,22 +638,27 @@ RunTftp (
if ((UserNicName != NULL) && (!NicFound)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_NIC_NOT_FOUND),
mTftpHiiHandle, UserNicName
);
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_NIC_NOT_FOUND),
mTftpHiiHandle,
UserNicName
);
}
Error:
Error:
ShellCommandLineFreeVarList (CheckPackage);
if (AsciiRemoteFilePath != NULL) {
FreePool (AsciiRemoteFilePath);
}
if (Handles != NULL) {
FreePool (Handles);
}
if ((ShellStatus != SHELL_SUCCESS) && (EFI_ERROR(Status))) {
if ((ShellStatus != SHELL_SUCCESS) && (EFI_ERROR (Status))) {
ShellStatus = Status & ~MAX_BIT;
}
@ -599,9 +686,14 @@ StringToUint16 (
Val = ShellStrToUintn (ValueStr);
if (Val > MAX_UINT16) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle, L"tftp", ValueStr
);
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_PARAM_INV),
mTftpHiiHandle,
L"tftp",
ValueStr
);
return FALSE;
}
@ -645,7 +737,7 @@ GetNicName (
&gEfiManagedNetworkServiceBindingProtocolGuid,
&gEfiManagedNetworkProtocolGuid,
&MnpHandle,
(VOID**)&Mnp
(VOID **)&Mnp
);
if (EFI_ERROR (Status)) {
goto Error;
@ -661,7 +753,7 @@ GetNicName (
IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH,
SnpMode.IfType == NET_IFTYPE_ETHERNET ?
L"eth%d" :
L"unk%d" ,
L"unk%d",
NicNumber
);
@ -713,12 +805,12 @@ CreateServiceChildAndOpenProtocol (
EFI_STATUS Status;
*ChildHandle = NULL;
Status = NetLibCreateServiceChild (
ControllerHandle,
gImageHandle,
ServiceBindingProtocolGuid,
ChildHandle
);
Status = NetLibCreateServiceChild (
ControllerHandle,
gImageHandle,
ServiceBindingProtocolGuid,
ChildHandle
);
if (!EFI_ERROR (Status)) {
Status = gBS->OpenProtocol (
*ChildHandle,
@ -810,21 +902,21 @@ GetFileSize (
UINT32 OptCnt;
UINT8 OptBuf[128];
ReqOpt[0].OptionStr = (UINT8*)"tsize";
OptBuf[0] = '0';
OptBuf[1] = 0;
ReqOpt[0].ValueStr = OptBuf;
ReqOpt[0].OptionStr = (UINT8 *)"tsize";
OptBuf[0] = '0';
OptBuf[1] = 0;
ReqOpt[0].ValueStr = OptBuf;
Status = Mtftp4->GetInfo (
Mtftp4,
NULL,
(UINT8*)FilePath,
NULL,
1,
ReqOpt,
&PktLen,
&Packet
);
Mtftp4,
NULL,
(UINT8 *)FilePath,
NULL,
1,
ReqOpt,
&PktLen,
&Packet
);
if (EFI_ERROR (Status)) {
goto Error;
@ -834,7 +926,7 @@ GetFileSize (
Mtftp4,
PktLen,
Packet,
(UINT32 *) &OptCnt,
(UINT32 *)&OptCnt,
&TableOfOptions
);
if (EFI_ERROR (Status)) {
@ -847,16 +939,18 @@ GetFileSize (
*FileSize = AsciiStrDecimalToUintn ((CHAR8 *)Option->ValueStr);
break;
}
OptCnt--;
Option++;
}
FreePool (TableOfOptions);
if (OptCnt == 0) {
Status = EFI_UNSUPPORTED;
}
Error :
Error:
return Status;
}
@ -889,11 +983,11 @@ DownloadFile (
IN UINT16 WindowSize
)
{
EFI_STATUS Status;
DOWNLOAD_CONTEXT *TftpContext;
EFI_MTFTP4_TOKEN Mtftp4Token;
UINT8 BlksizeBuf[10];
UINT8 WindowsizeBuf[10];
EFI_STATUS Status;
DOWNLOAD_CONTEXT *TftpContext;
EFI_MTFTP4_TOKEN Mtftp4Token;
UINT8 BlksizeBuf[10];
UINT8 WindowsizeBuf[10];
ZeroMem (&Mtftp4Token, sizeof (EFI_MTFTP4_TOKEN));
@ -902,13 +996,14 @@ DownloadFile (
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
TftpContext->FileSize = FileSize;
TftpContext->FileSize = FileSize;
TftpContext->DownloadedNbOfBytes = 0;
TftpContext->LastReportedNbOfBytes = 0;
Mtftp4Token.Filename = (UINT8*)AsciiFilePath;
Mtftp4Token.Filename = (UINT8 *)AsciiFilePath;
Mtftp4Token.CheckPacket = CheckPacket;
Mtftp4Token.Context = (VOID*)TftpContext;
Mtftp4Token.Context = (VOID *)TftpContext;
Mtftp4Token.OptionCount = 0;
Mtftp4Token.OptionList = AllocatePool (sizeof (EFI_MTFTP4_OPTION) * 2);
if (Mtftp4Token.OptionList == NULL) {
@ -917,22 +1012,26 @@ DownloadFile (
}
if (BlockSize != MTFTP_DEFAULT_BLKSIZE) {
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *) "blksize";
AsciiSPrint ((CHAR8 *) BlksizeBuf, sizeof (BlksizeBuf), "%d", BlockSize);
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr = BlksizeBuf;
Mtftp4Token.OptionCount ++;
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *)"blksize";
AsciiSPrint ((CHAR8 *)BlksizeBuf, sizeof (BlksizeBuf), "%d", BlockSize);
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr = BlksizeBuf;
Mtftp4Token.OptionCount++;
}
if (WindowSize != MTFTP_DEFAULT_WINDOWSIZE) {
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *) "windowsize";
AsciiSPrint ((CHAR8 *) WindowsizeBuf, sizeof (WindowsizeBuf), "%d", WindowSize);
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr = WindowsizeBuf;
Mtftp4Token.OptionCount ++;
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *)"windowsize";
AsciiSPrint ((CHAR8 *)WindowsizeBuf, sizeof (WindowsizeBuf), "%d", WindowSize);
Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr = WindowsizeBuf;
Mtftp4Token.OptionCount++;
}
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_DOWNLOADING),
mTftpHiiHandle, FilePath
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_DOWNLOADING),
mTftpHiiHandle,
FilePath
);
//
@ -943,24 +1042,32 @@ DownloadFile (
}
Status = ShellOpenFileByName (
mLocalFilePath,
&mFileHandle,
EFI_FILE_MODE_CREATE |
EFI_FILE_MODE_WRITE |
EFI_FILE_MODE_READ,
0
);
mLocalFilePath,
&mFileHandle,
EFI_FILE_MODE_CREATE |
EFI_FILE_MODE_WRITE |
EFI_FILE_MODE_READ,
0
);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL),
mTftpHiiHandle, L"tftp", mLocalFilePath
);
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL),
mTftpHiiHandle,
L"tftp",
mLocalFilePath
);
goto Error;
}
Status = Mtftp4->ReadFile (Mtftp4, &Mtftp4Token);
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_CRLF),
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_CRLF),
mTftpHiiHandle
);
@ -969,7 +1076,7 @@ DownloadFile (
//
ShellCloseFile (&mFileHandle);
Error :
Error:
if (TftpContext != NULL) {
FreePool (TftpContext);
}
@ -1016,7 +1123,7 @@ CheckPacket (
return EFI_SUCCESS;
}
Context = (DOWNLOAD_CONTEXT*)Token->Context;
Context = (DOWNLOAD_CONTEXT *)Token->Context;
//
// The data in the packet are prepended with two UINT16 :
@ -1025,19 +1132,28 @@ CheckPacket (
//
DownloadLen = (UINTN)PacketLen - sizeof (Packet->OpCode) - sizeof (Packet->Data.Block);
ShellSetFilePosition(mFileHandle, Context->DownloadedNbOfBytes);
ShellSetFilePosition (mFileHandle, Context->DownloadedNbOfBytes);
Status = ShellWriteFile (mFileHandle, &DownloadLen, Packet->Data.Data);
if (EFI_ERROR (Status)) {
if (Context->DownloadedNbOfBytes > 0) {
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_GEN_CRLF),
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_CRLF),
mTftpHiiHandle
);
);
}
ShellPrintHiiEx (
-1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_WRITE),
mTftpHiiHandle, mLocalFilePath, Status
);
-1,
-1,
NULL,
STRING_TOKEN (STR_TFTP_ERR_WRITE),
mTftpHiiHandle,
mLocalFilePath,
Status
);
return Status;
}
@ -1046,11 +1162,11 @@ CheckPacket (
}
Context->DownloadedNbOfBytes += DownloadLen;
NbOfKb = Context->DownloadedNbOfBytes / 1024;
NbOfKb = Context->DownloadedNbOfBytes / 1024;
Progress[0] = L'\0';
LastStep = (Context->LastReportedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
Step = (Context->DownloadedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
LastStep = (Context->LastReportedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
Step = (Context->DownloadedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
if (Step <= LastStep) {
return EFI_SUCCESS;
@ -1059,12 +1175,14 @@ CheckPacket (
ShellPrintEx (-1, -1, L"%s", mTftpProgressDelete);
Status = StrCpyS (Progress, TFTP_PROGRESS_MESSAGE_SIZE, mTftpProgressFrame);
if (EFI_ERROR(Status)) {
if (EFI_ERROR (Status)) {
return Status;
}
for (Index = 1; Index < Step; Index++) {
Progress[Index] = L'=';
}
Progress[Step] = L'>';
UnicodeSPrint (
@ -1089,12 +1207,12 @@ CheckPacket (
**/
EFI_HII_HANDLE
InitializeHiiPackage (
EFI_HANDLE ImageHandle
EFI_HANDLE ImageHandle
)
{
EFI_STATUS Status;
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
EFI_HII_HANDLE HiiHandle;
EFI_STATUS Status;
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
EFI_HII_HANDLE HiiHandle;
//
// Retrieve HII package list from ImageHandle
@ -1125,5 +1243,6 @@ InitializeHiiPackage (
if (EFI_ERROR (Status)) {
return NULL;
}
return HiiHandle;
}

View File

@ -30,12 +30,12 @@
#include <Library/PrintLib.h>
#include <Library/UefiHiiServicesLib.h>
extern EFI_HII_HANDLE mTftpHiiHandle;
extern EFI_HII_HANDLE mTftpHiiHandle;
typedef struct {
UINTN FileSize;
UINTN DownloadedNbOfBytes;
UINTN LastReportedNbOfBytes;
UINTN FileSize;
UINTN DownloadedNbOfBytes;
UINTN LastReportedNbOfBytes;
} DOWNLOAD_CONTEXT;
/**
@ -64,6 +64,7 @@ RunTftp (
**/
EFI_HII_HANDLE
InitializeHiiPackage (
EFI_HANDLE ImageHandle
EFI_HANDLE ImageHandle
);
#endif // _TFTP_H_

View File

@ -17,7 +17,7 @@
// the resource section. Thus the application can use '-?' option to show help message in
// Shell.
//
GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_TFTP);
GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_TFTP);
/**
Entry point of Tftp standalone application.
@ -32,11 +32,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (S
EFI_STATUS
EFIAPI
TftpAppInitialize (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_STATUS Status;
mTftpHiiHandle = InitializeHiiPackage (ImageHandle);
if (mTftpHiiHandle == NULL) {
return EFI_ABORTED;

View File

@ -26,10 +26,10 @@
SHELL_STATUS
EFIAPI
TftpCommandHandler (
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN EFI_SYSTEM_TABLE *SystemTable,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
IN EFI_SHELL_PROTOCOL *Shell
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN EFI_SYSTEM_TABLE *SystemTable,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
IN EFI_SHELL_PROTOCOL *Shell
)
{
gEfiShellParametersProtocol = ShellParameters;
@ -50,14 +50,14 @@ TftpCommandHandler (
CHAR16 *
EFIAPI
TftpCommandGetHelp (
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN CONST CHAR8 *Language
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
IN CONST CHAR8 *Language
)
{
return HiiGetString (mTftpHiiHandle, STRING_TOKEN (STR_GET_HELP_TFTP), Language);
}
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mTftpDynamicCommand = {
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mTftpDynamicCommand = {
L"tftp",
TftpCommandHandler,
TftpCommandGetHelp
@ -78,11 +78,12 @@ EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mTftpDynamicCommand = {
EFI_STATUS
EFIAPI
TftpCommandInitialize (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_STATUS Status;
mTftpHiiHandle = InitializeHiiPackage (ImageHandle);
if (mTftpHiiHandle == NULL) {
return EFI_ABORTED;
@ -109,10 +110,11 @@ TftpCommandInitialize (
EFI_STATUS
EFIAPI
TftpUnload (
IN EFI_HANDLE ImageHandle
)
IN EFI_HANDLE ImageHandle
)
{
EFI_STATUS Status;
EFI_STATUS Status;
Status = gBS->UninstallProtocolInterface (
ImageHandle,
&gEfiShellDynamicCommandProtocolGuid,
@ -121,6 +123,7 @@ TftpUnload (
if (EFI_ERROR (Status)) {
return Status;
}
HiiRemovePackages (mTftpHiiHandle);
return EFI_SUCCESS;
}