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:
		
				
					committed by
					
						
						mergify[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							c411b485b6
						
					
				
				
					commit
					47d20b54f9
				
			@@ -21,7 +21,7 @@
 | 
				
			|||||||
// the resource section. Thus the application can use '-?' option to show help message in
 | 
					// the resource section. Thus the application can use '-?' option to show help message in
 | 
				
			||||||
// Shell.
 | 
					// Shell.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_ACPIVIEW);
 | 
					GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID  mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_ACPIVIEW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Application Entry Point wrapper around the shell command
 | 
					  Application Entry Point wrapper around the shell command
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -12,31 +12,31 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define CONSOLE_LOGGER_PRIVATE_DATA_SIGNATURE  SIGNATURE_32 ('c', 'o', 'P', 'D')
 | 
					#define CONSOLE_LOGGER_PRIVATE_DATA_SIGNATURE  SIGNATURE_32 ('c', 'o', 'P', 'D')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _CONSOLE_LOGGER_PRIVATE_DATA{
 | 
					typedef struct _CONSOLE_LOGGER_PRIVATE_DATA {
 | 
				
			||||||
  UINTN                             Signature;
 | 
					  UINTN                              Signature;
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   OurConOut;        ///< the protocol we installed onto the system table
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    OurConOut;       ///< the protocol we installed onto the system table
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   *OldConOut;       ///< old protocol to reinstall upon exiting
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *OldConOut;      ///< old protocol to reinstall upon exiting
 | 
				
			||||||
  EFI_HANDLE                        OldConHandle;     ///< old protocol handle
 | 
					  EFI_HANDLE                         OldConHandle;    ///< old protocol handle
 | 
				
			||||||
  UINTN                             ScreenCount;      ///< How many screens worth of data to save
 | 
					  UINTN                              ScreenCount;     ///< How many screens worth of data to save
 | 
				
			||||||
  CHAR16                            *Buffer;          ///< Buffer to save data
 | 
					  CHAR16                             *Buffer;         ///< Buffer to save data
 | 
				
			||||||
  UINTN                             BufferSize;       ///< size of buffer in bytes
 | 
					  UINTN                              BufferSize;      ///< size of buffer in bytes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                                      //  start row is the top of the screen
 | 
					  //  start row is the top of the screen
 | 
				
			||||||
  UINTN                             OriginalStartRow; ///< What the originally visible start row was
 | 
					  UINTN                              OriginalStartRow; ///< What the originally visible start row was
 | 
				
			||||||
  UINTN                             CurrentStartRow;  ///< what the currently visible start row is
 | 
					  UINTN                              CurrentStartRow;  ///< what the currently visible start row is
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UINTN                             RowsPerScreen;    ///< how many rows the screen can display
 | 
					  UINTN                              RowsPerScreen;   ///< how many rows the screen can display
 | 
				
			||||||
  UINTN                             ColsPerScreen;    ///< how many columns the screen can display
 | 
					  UINTN                              ColsPerScreen;   ///< how many columns the screen can display
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  INT32                             *Attributes;      ///< Buffer for Attribute to be saved for each character
 | 
					  INT32                              *Attributes;     ///< Buffer for Attribute to be saved for each character
 | 
				
			||||||
  UINTN                             AttribSize;       ///< Size of Attributes in bytes
 | 
					  UINTN                              AttribSize;      ///< Size of Attributes in bytes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_MODE       HistoryMode;      ///< mode of the history log
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_MODE        HistoryMode;     ///< mode of the history log
 | 
				
			||||||
  BOOLEAN                           Enabled;          ///< Set to FALSE when a break is requested.
 | 
					  BOOLEAN                            Enabled;         ///< Set to FALSE when a break is requested.
 | 
				
			||||||
  UINTN                             RowCounter;       ///< Initial row of each print job.
 | 
					  UINTN                              RowCounter;      ///< Initial row of each print job.
 | 
				
			||||||
} CONSOLE_LOGGER_PRIVATE_DATA;
 | 
					} CONSOLE_LOGGER_PRIVATE_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CONSOLE_LOGGER_PRIVATE_DATA_FROM_THIS(a) CR (a, CONSOLE_LOGGER_PRIVATE_DATA, OurConOut, CONSOLE_LOGGER_PRIVATE_DATA_SIGNATURE)
 | 
					#define CONSOLE_LOGGER_PRIVATE_DATA_FROM_THIS(a)  CR (a, CONSOLE_LOGGER_PRIVATE_DATA, OurConOut, CONSOLE_LOGGER_PRIVATE_DATA_SIGNATURE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Install our intermediate ConOut into the system table to
 | 
					  Install our intermediate ConOut into the system table to
 | 
				
			||||||
@@ -52,9 +52,9 @@ typedef struct _CONSOLE_LOGGER_PRIVATE_DATA{
 | 
				
			|||||||
  @sa InstallProtocolInterface
 | 
					  @sa InstallProtocolInterface
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ConsoleLoggerInstall(
 | 
					ConsoleLoggerInstall (
 | 
				
			||||||
  IN CONST UINTN ScreensToSave,
 | 
					  IN CONST UINTN                   ScreensToSave,
 | 
				
			||||||
  OUT CONSOLE_LOGGER_PRIVATE_DATA **ConsoleInfo
 | 
					  OUT CONSOLE_LOGGER_PRIVATE_DATA  **ConsoleInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -67,8 +67,8 @@ ConsoleLoggerInstall(
 | 
				
			|||||||
  @return other           The operation failed.  This was from UninstallProtocolInterface.
 | 
					  @return other           The operation failed.  This was from UninstallProtocolInterface.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ConsoleLoggerUninstall(
 | 
					ConsoleLoggerUninstall (
 | 
				
			||||||
  IN OUT CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo
 | 
					  IN OUT CONSOLE_LOGGER_PRIVATE_DATA  *ConsoleInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -84,10 +84,10 @@ ConsoleLoggerUninstall(
 | 
				
			|||||||
  @param[in] ConsoleInfo  The pointer to the instance of the console logger information.
 | 
					  @param[in] ConsoleInfo  The pointer to the instance of the console logger information.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ConsoleLoggerDisplayHistory(
 | 
					ConsoleLoggerDisplayHistory (
 | 
				
			||||||
  IN CONST BOOLEAN  Forward,
 | 
					  IN CONST BOOLEAN                Forward,
 | 
				
			||||||
  IN CONST UINTN    Rows,
 | 
					  IN CONST UINTN                  Rows,
 | 
				
			||||||
  IN CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo
 | 
					  IN CONSOLE_LOGGER_PRIVATE_DATA  *ConsoleInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -100,8 +100,8 @@ ConsoleLoggerDisplayHistory(
 | 
				
			|||||||
  @sa UpdateDisplayFromHistory
 | 
					  @sa UpdateDisplayFromHistory
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ConsoleLoggerStopHistory(
 | 
					ConsoleLoggerStopHistory (
 | 
				
			||||||
  IN CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo
 | 
					  IN CONSOLE_LOGGER_PRIVATE_DATA  *ConsoleInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -112,8 +112,8 @@ ConsoleLoggerStopHistory(
 | 
				
			|||||||
  @return other           The operation failed.
 | 
					  @return other           The operation failed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
UpdateDisplayFromHistory(
 | 
					UpdateDisplayFromHistory (
 | 
				
			||||||
  IN CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo
 | 
					  IN CONSOLE_LOGGER_PRIVATE_DATA  *ConsoleInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -129,8 +129,8 @@ UpdateDisplayFromHistory(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConsoleLoggerReset (
 | 
					ConsoleLoggerReset (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  BOOLEAN                         ExtendedVerification
 | 
					  IN  BOOLEAN                          ExtendedVerification
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -151,9 +151,9 @@ ConsoleLoggerReset (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConsoleLoggerOutputString(
 | 
					ConsoleLoggerOutputString (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  CHAR16                          *WString
 | 
					  IN  CHAR16                           *WString
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -173,8 +173,8 @@ ConsoleLoggerOutputString(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConsoleLoggerTestString (
 | 
					ConsoleLoggerTestString (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  CHAR16                          *WString
 | 
					  IN  CHAR16                           *WString
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -237,8 +237,8 @@ ConsoleLoggerSetMode (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConsoleLoggerSetAttribute (
 | 
					ConsoleLoggerSetAttribute (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  UINTN                           Attribute
 | 
					  IN  UINTN                            Attribute
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -275,8 +275,8 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConsoleLoggerSetCursorPosition (
 | 
					ConsoleLoggerSetCursorPosition (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  UINTN                         Column,
 | 
					  IN  UINTN                            Column,
 | 
				
			||||||
  IN  UINTN                         Row
 | 
					  IN  UINTN                            Row
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -309,9 +309,8 @@ ConsoleLoggerEnableCursor (
 | 
				
			|||||||
  history buffers.
 | 
					  history buffers.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ConsoleLoggerResetBuffers(
 | 
					ConsoleLoggerResetBuffers (
 | 
				
			||||||
  IN CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo
 | 
					  IN CONSOLE_LOGGER_PRIVATE_DATA  *ConsoleInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_CONSOLE_LOGGER_HEADER_
 | 
					#endif //_CONSOLE_LOGGER_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,20 +9,20 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "Shell.h"
 | 
					#include "Shell.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern BOOLEAN AsciiRedirection;
 | 
					extern BOOLEAN  AsciiRedirection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  EFI_SIMPLE_TEXT_INPUT_PROTOCOL  SimpleTextIn;
 | 
					  EFI_SIMPLE_TEXT_INPUT_PROTOCOL    SimpleTextIn;
 | 
				
			||||||
  SHELL_FILE_HANDLE               FileHandle;
 | 
					  SHELL_FILE_HANDLE                 FileHandle;
 | 
				
			||||||
  EFI_HANDLE                      TheHandle;
 | 
					  EFI_HANDLE                        TheHandle;
 | 
				
			||||||
  UINT64                          RemainingBytesOfInputFile;
 | 
					  UINT64                            RemainingBytesOfInputFile;
 | 
				
			||||||
} SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
 | 
					} SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOut;
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    SimpleTextOut;
 | 
				
			||||||
  SHELL_FILE_HANDLE               FileHandle;
 | 
					  SHELL_FILE_HANDLE                  FileHandle;
 | 
				
			||||||
  EFI_HANDLE                      TheHandle;
 | 
					  EFI_HANDLE                         TheHandle;
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *OriginalSimpleTextOut;
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *OriginalSimpleTextOut;
 | 
				
			||||||
} SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
 | 
					} SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -36,8 +36,8 @@ typedef struct {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConInWaitForKey (
 | 
					ConInWaitForKey (
 | 
				
			||||||
  IN  EFI_EVENT       Event,
 | 
					  IN  EFI_EVENT  Event,
 | 
				
			||||||
  IN  VOID            *Context
 | 
					  IN  VOID       *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  gBS->SignalEvent (Event);
 | 
					  gBS->SignalEvent (Event);
 | 
				
			||||||
@@ -53,9 +53,9 @@ ConInWaitForKey (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextInReset(
 | 
					FileBasedSimpleTextInReset (
 | 
				
			||||||
  IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
 | 
					  IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN BOOLEAN                        ExtendedVerification
 | 
					  IN BOOLEAN                         ExtendedVerification
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (EFI_SUCCESS);
 | 
					  return (EFI_SUCCESS);
 | 
				
			||||||
@@ -71,18 +71,18 @@ FileBasedSimpleTextInReset(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextInReadKeyStroke(
 | 
					FileBasedSimpleTextInReadKeyStroke (
 | 
				
			||||||
  IN      EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
 | 
					  IN      EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN OUT  EFI_INPUT_KEY                  *Key
 | 
					  IN OUT  EFI_INPUT_KEY                   *Key
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN Size;
 | 
					  UINTN  Size;
 | 
				
			||||||
  UINTN CharSize;
 | 
					  UINTN  CharSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Verify the parameters
 | 
					  // Verify the parameters
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  if (Key == NULL || This == NULL) {
 | 
					  if ((Key == NULL) || (This == NULL)) {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -93,13 +93,14 @@ FileBasedSimpleTextInReadKeyStroke(
 | 
				
			|||||||
    return (EFI_NOT_READY);
 | 
					    return (EFI_NOT_READY);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Size = sizeof(CHAR16);
 | 
					  Size = sizeof (CHAR16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if(!AsciiRedirection) {
 | 
					  if (!AsciiRedirection) {
 | 
				
			||||||
    CharSize = sizeof(CHAR16);
 | 
					    CharSize = sizeof (CHAR16);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    CharSize = sizeof(CHAR8);
 | 
					    CharSize = sizeof (CHAR8);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Decrement the amount of free space by Size or set to zero (for odd length files)
 | 
					  // Decrement the amount of free space by Size or set to zero (for odd length files)
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -110,10 +111,11 @@ FileBasedSimpleTextInReadKeyStroke(
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Key->ScanCode = 0;
 | 
					  Key->ScanCode = 0;
 | 
				
			||||||
  return (ShellInfoObject.NewEfiShellProtocol->ReadFile(
 | 
					  return (ShellInfoObject.NewEfiShellProtocol->ReadFile (
 | 
				
			||||||
    ((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL *)This)->FileHandle,
 | 
					                                                 ((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL *)This)->FileHandle,
 | 
				
			||||||
    &Size,
 | 
					                                                 &Size,
 | 
				
			||||||
    &Key->UnicodeChar));
 | 
					                                                 &Key->UnicodeChar
 | 
				
			||||||
 | 
					                                                 ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -126,8 +128,8 @@ FileBasedSimpleTextInReadKeyStroke(
 | 
				
			|||||||
  @retval NULL                There was insufficient memory available.
 | 
					  @retval NULL                There was insufficient memory available.
 | 
				
			||||||
  @return                     A pointer to the allocated protocol structure;
 | 
					  @return                     A pointer to the allocated protocol structure;
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL*
 | 
					EFI_SIMPLE_TEXT_INPUT_PROTOCOL *
 | 
				
			||||||
CreateSimpleTextInOnFile(
 | 
					CreateSimpleTextInOnFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE  FileHandleToUse,
 | 
					  IN SHELL_FILE_HANDLE  FileHandleToUse,
 | 
				
			||||||
  IN EFI_HANDLE         *HandleLocation
 | 
					  IN EFI_HANDLE         *HandleLocation
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
@@ -137,17 +139,17 @@ CreateSimpleTextInOnFile(
 | 
				
			|||||||
  UINT64                                CurrentPosition;
 | 
					  UINT64                                CurrentPosition;
 | 
				
			||||||
  UINT64                                FileSize;
 | 
					  UINT64                                FileSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (HandleLocation == NULL || FileHandleToUse == NULL) {
 | 
					  if ((HandleLocation == NULL) || (FileHandleToUse == NULL)) {
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ProtocolToReturn = AllocateZeroPool(sizeof(SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL));
 | 
					  ProtocolToReturn = AllocateZeroPool (sizeof (SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL));
 | 
				
			||||||
  if (ProtocolToReturn == NULL) {
 | 
					  if (ProtocolToReturn == NULL) {
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellGetFileSize    (FileHandleToUse, &FileSize);
 | 
					  ShellGetFileSize (FileHandleToUse, &FileSize);
 | 
				
			||||||
  ShellGetFilePosition(FileHandleToUse, &CurrentPosition);
 | 
					  ShellGetFilePosition (FileHandleToUse, &CurrentPosition);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Initialize the protocol members
 | 
					  // Initialize the protocol members
 | 
				
			||||||
@@ -165,21 +167,23 @@ CreateSimpleTextInOnFile(
 | 
				
			|||||||
                  &ProtocolToReturn->SimpleTextIn.WaitForKey
 | 
					                  &ProtocolToReturn->SimpleTextIn.WaitForKey
 | 
				
			||||||
                  );
 | 
					                  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    FreePool(ProtocolToReturn);
 | 
					    FreePool (ProtocolToReturn);
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  ///@todo possibly also install SimpleTextInputEx on the handle at this point.
 | 
					
 | 
				
			||||||
  Status = gBS->InstallProtocolInterface(
 | 
					  /// @todo possibly also install SimpleTextInputEx on the handle at this point.
 | 
				
			||||||
    &(ProtocolToReturn->TheHandle),
 | 
					  Status = gBS->InstallProtocolInterface (
 | 
				
			||||||
    &gEfiSimpleTextInProtocolGuid,
 | 
					                  &(ProtocolToReturn->TheHandle),
 | 
				
			||||||
    EFI_NATIVE_INTERFACE,
 | 
					                  &gEfiSimpleTextInProtocolGuid,
 | 
				
			||||||
    &(ProtocolToReturn->SimpleTextIn));
 | 
					                  EFI_NATIVE_INTERFACE,
 | 
				
			||||||
  if (!EFI_ERROR(Status)) {
 | 
					                  &(ProtocolToReturn->SimpleTextIn)
 | 
				
			||||||
 | 
					                  );
 | 
				
			||||||
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
    *HandleLocation = ProtocolToReturn->TheHandle;
 | 
					    *HandleLocation = ProtocolToReturn->TheHandle;
 | 
				
			||||||
    return ((EFI_SIMPLE_TEXT_INPUT_PROTOCOL*)ProtocolToReturn);
 | 
					    return ((EFI_SIMPLE_TEXT_INPUT_PROTOCOL *)ProtocolToReturn);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    FreePool(ProtocolToReturn);
 | 
					    FreePool (ProtocolToReturn);
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -193,26 +197,27 @@ CreateSimpleTextInOnFile(
 | 
				
			|||||||
  @retval EFI_SUCCESS         The object was closed.
 | 
					  @retval EFI_SUCCESS         The object was closed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
CloseSimpleTextInOnFile(
 | 
					CloseSimpleTextInOnFile (
 | 
				
			||||||
  IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *SimpleTextIn
 | 
					  IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *SimpleTextIn
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
  EFI_STATUS Status1;
 | 
					  EFI_STATUS  Status1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (SimpleTextIn == NULL) {
 | 
					  if (SimpleTextIn == NULL) {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->CloseEvent(((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL *)SimpleTextIn)->SimpleTextIn.WaitForKey);
 | 
					  Status = gBS->CloseEvent (((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL *)SimpleTextIn)->SimpleTextIn.WaitForKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status1 = gBS->UninstallProtocolInterface(
 | 
					  Status1 = gBS->UninstallProtocolInterface (
 | 
				
			||||||
    ((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL*)SimpleTextIn)->TheHandle,
 | 
					                   ((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL *)SimpleTextIn)->TheHandle,
 | 
				
			||||||
    &gEfiSimpleTextInProtocolGuid,
 | 
					                   &gEfiSimpleTextInProtocolGuid,
 | 
				
			||||||
    &(((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL*)SimpleTextIn)->SimpleTextIn));
 | 
					                   &(((SHELL_EFI_SIMPLE_TEXT_INPUT_PROTOCOL *)SimpleTextIn)->SimpleTextIn)
 | 
				
			||||||
 | 
					                   );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FreePool(SimpleTextIn);
 | 
					  FreePool (SimpleTextIn);
 | 
				
			||||||
  if (!EFI_ERROR(Status)) {
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
    return (Status1);
 | 
					    return (Status1);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    return (Status);
 | 
					    return (Status);
 | 
				
			||||||
@@ -230,8 +235,8 @@ CloseSimpleTextInOnFile(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutReset (
 | 
					FileBasedSimpleTextOutReset (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  BOOLEAN                         ExtendedVerification
 | 
					  IN  BOOLEAN                          ExtendedVerification
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (EFI_SUCCESS);
 | 
					  return (EFI_SUCCESS);
 | 
				
			||||||
@@ -249,8 +254,8 @@ FileBasedSimpleTextOutReset (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutTestString (
 | 
					FileBasedSimpleTextOutTestString (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  CHAR16                          *WString
 | 
					  IN  CHAR16                           *WString
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (EFI_SUCCESS);
 | 
					  return (EFI_SUCCESS);
 | 
				
			||||||
@@ -270,22 +275,23 @@ FileBasedSimpleTextOutTestString (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutQueryMode (
 | 
					FileBasedSimpleTextOutQueryMode (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  UINTN                           ModeNumber,
 | 
					  IN  UINTN                            ModeNumber,
 | 
				
			||||||
  OUT UINTN                           *Columns,
 | 
					  OUT UINTN                            *Columns,
 | 
				
			||||||
  OUT UINTN                           *Rows
 | 
					  OUT UINTN                            *Rows
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *PassThruProtocol;
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *PassThruProtocol;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PassThruProtocol = ((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)This)->OriginalSimpleTextOut;
 | 
					  PassThruProtocol = ((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)This)->OriginalSimpleTextOut;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Pass the QueryMode call thru to the original SimpleTextOutProtocol
 | 
					  // Pass the QueryMode call thru to the original SimpleTextOutProtocol
 | 
				
			||||||
  return (PassThruProtocol->QueryMode(
 | 
					  return (PassThruProtocol->QueryMode (
 | 
				
			||||||
    PassThruProtocol,
 | 
					                              PassThruProtocol,
 | 
				
			||||||
    ModeNumber,
 | 
					                              ModeNumber,
 | 
				
			||||||
    Columns,
 | 
					                              Columns,
 | 
				
			||||||
    Rows));
 | 
					                              Rows
 | 
				
			||||||
 | 
					                              ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -300,7 +306,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutSetMode (
 | 
					FileBasedSimpleTextOutSetMode (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  UINTN                         ModeNumber
 | 
					  IN  UINTN                            ModeNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (EFI_UNSUPPORTED);
 | 
					  return (EFI_UNSUPPORTED);
 | 
				
			||||||
@@ -320,8 +326,8 @@ FileBasedSimpleTextOutSetMode (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutSetAttribute (
 | 
					FileBasedSimpleTextOutSetAttribute (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  UINTN                           Attribute
 | 
					  IN  UINTN                            Attribute
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (EFI_SUCCESS);
 | 
					  return (EFI_SUCCESS);
 | 
				
			||||||
@@ -357,8 +363,8 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutSetCursorPosition (
 | 
					FileBasedSimpleTextOutSetCursorPosition (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  UINTN                         Column,
 | 
					  IN  UINTN                            Column,
 | 
				
			||||||
  IN  UINTN                         Row
 | 
					  IN  UINTN                            Row
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (EFI_SUCCESS);
 | 
					  return (EFI_SUCCESS);
 | 
				
			||||||
@@ -377,7 +383,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutEnableCursor (
 | 
					FileBasedSimpleTextOutEnableCursor (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  BOOLEAN                       Visible
 | 
					  IN  BOOLEAN                          Visible
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (EFI_SUCCESS);
 | 
					  return (EFI_SUCCESS);
 | 
				
			||||||
@@ -402,16 +408,18 @@ FileBasedSimpleTextOutEnableCursor (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FileBasedSimpleTextOutOutputString (
 | 
					FileBasedSimpleTextOutOutputString (
 | 
				
			||||||
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
 | 
					  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
 | 
				
			||||||
  IN  CHAR16                          *WString
 | 
					  IN  CHAR16                           *WString
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN Size;
 | 
					  UINTN  Size;
 | 
				
			||||||
  Size = StrLen(WString) * sizeof(CHAR16);
 | 
					
 | 
				
			||||||
  return (ShellInfoObject.NewEfiShellProtocol->WriteFile(
 | 
					  Size = StrLen (WString) * sizeof (CHAR16);
 | 
				
			||||||
    ((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)This)->FileHandle,
 | 
					  return (ShellInfoObject.NewEfiShellProtocol->WriteFile (
 | 
				
			||||||
    &Size,
 | 
					                                                 ((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)This)->FileHandle,
 | 
				
			||||||
    WString));
 | 
					                                                 &Size,
 | 
				
			||||||
 | 
					                                                 WString
 | 
				
			||||||
 | 
					                                                 ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -425,24 +433,25 @@ FileBasedSimpleTextOutOutputString (
 | 
				
			|||||||
  @retval NULL                There was insufficient memory available.
 | 
					  @retval NULL                There was insufficient memory available.
 | 
				
			||||||
  @return                     A pointer to the allocated protocol structure;
 | 
					  @return                     A pointer to the allocated protocol structure;
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*
 | 
					EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *
 | 
				
			||||||
CreateSimpleTextOutOnFile(
 | 
					CreateSimpleTextOutOnFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE               FileHandleToUse,
 | 
					  IN SHELL_FILE_HANDLE                FileHandleToUse,
 | 
				
			||||||
  IN EFI_HANDLE                      *HandleLocation,
 | 
					  IN EFI_HANDLE                       *HandleLocation,
 | 
				
			||||||
  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *OriginalProtocol
 | 
					  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *OriginalProtocol
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ProtocolToReturn;
 | 
					  SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *ProtocolToReturn;
 | 
				
			||||||
  EFI_STATUS                            Status;
 | 
					  EFI_STATUS                             Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (HandleLocation == NULL || FileHandleToUse == NULL) {
 | 
					  if ((HandleLocation == NULL) || (FileHandleToUse == NULL)) {
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ProtocolToReturn = AllocateZeroPool(sizeof(SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL));
 | 
					  ProtocolToReturn = AllocateZeroPool (sizeof (SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL));
 | 
				
			||||||
  if (ProtocolToReturn == NULL) {
 | 
					  if (ProtocolToReturn == NULL) {
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ProtocolToReturn->FileHandle                      = FileHandleToUse;
 | 
					  ProtocolToReturn->FileHandle                      = FileHandleToUse;
 | 
				
			||||||
  ProtocolToReturn->OriginalSimpleTextOut           = OriginalProtocol;
 | 
					  ProtocolToReturn->OriginalSimpleTextOut           = OriginalProtocol;
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.Reset             = FileBasedSimpleTextOutReset;
 | 
					  ProtocolToReturn->SimpleTextOut.Reset             = FileBasedSimpleTextOutReset;
 | 
				
			||||||
@@ -454,11 +463,12 @@ CreateSimpleTextOutOnFile(
 | 
				
			|||||||
  ProtocolToReturn->SimpleTextOut.SetCursorPosition = FileBasedSimpleTextOutSetCursorPosition;
 | 
					  ProtocolToReturn->SimpleTextOut.SetCursorPosition = FileBasedSimpleTextOutSetCursorPosition;
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.EnableCursor      = FileBasedSimpleTextOutEnableCursor;
 | 
					  ProtocolToReturn->SimpleTextOut.EnableCursor      = FileBasedSimpleTextOutEnableCursor;
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.OutputString      = FileBasedSimpleTextOutOutputString;
 | 
					  ProtocolToReturn->SimpleTextOut.OutputString      = FileBasedSimpleTextOutOutputString;
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.Mode              = AllocateZeroPool(sizeof(EFI_SIMPLE_TEXT_OUTPUT_MODE));
 | 
					  ProtocolToReturn->SimpleTextOut.Mode              = AllocateZeroPool (sizeof (EFI_SIMPLE_TEXT_OUTPUT_MODE));
 | 
				
			||||||
  if (ProtocolToReturn->SimpleTextOut.Mode == NULL) {
 | 
					  if (ProtocolToReturn->SimpleTextOut.Mode == NULL) {
 | 
				
			||||||
    FreePool(ProtocolToReturn);
 | 
					    FreePool (ProtocolToReturn);
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.Mode->MaxMode       = OriginalProtocol->Mode->MaxMode;
 | 
					  ProtocolToReturn->SimpleTextOut.Mode->MaxMode       = OriginalProtocol->Mode->MaxMode;
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.Mode->Mode          = OriginalProtocol->Mode->Mode;
 | 
					  ProtocolToReturn->SimpleTextOut.Mode->Mode          = OriginalProtocol->Mode->Mode;
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.Mode->Attribute     = OriginalProtocol->Mode->Attribute;
 | 
					  ProtocolToReturn->SimpleTextOut.Mode->Attribute     = OriginalProtocol->Mode->Attribute;
 | 
				
			||||||
@@ -466,17 +476,18 @@ CreateSimpleTextOutOnFile(
 | 
				
			|||||||
  ProtocolToReturn->SimpleTextOut.Mode->CursorRow     = OriginalProtocol->Mode->CursorRow;
 | 
					  ProtocolToReturn->SimpleTextOut.Mode->CursorRow     = OriginalProtocol->Mode->CursorRow;
 | 
				
			||||||
  ProtocolToReturn->SimpleTextOut.Mode->CursorVisible = OriginalProtocol->Mode->CursorVisible;
 | 
					  ProtocolToReturn->SimpleTextOut.Mode->CursorVisible = OriginalProtocol->Mode->CursorVisible;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->InstallProtocolInterface(
 | 
					  Status = gBS->InstallProtocolInterface (
 | 
				
			||||||
    &(ProtocolToReturn->TheHandle),
 | 
					                  &(ProtocolToReturn->TheHandle),
 | 
				
			||||||
    &gEfiSimpleTextOutProtocolGuid,
 | 
					                  &gEfiSimpleTextOutProtocolGuid,
 | 
				
			||||||
    EFI_NATIVE_INTERFACE,
 | 
					                  EFI_NATIVE_INTERFACE,
 | 
				
			||||||
    &(ProtocolToReturn->SimpleTextOut));
 | 
					                  &(ProtocolToReturn->SimpleTextOut)
 | 
				
			||||||
  if (!EFI_ERROR(Status)) {
 | 
					                  );
 | 
				
			||||||
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
    *HandleLocation = ProtocolToReturn->TheHandle;
 | 
					    *HandleLocation = ProtocolToReturn->TheHandle;
 | 
				
			||||||
    return ((EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*)ProtocolToReturn);
 | 
					    return ((EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)ProtocolToReturn);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    SHELL_FREE_NON_NULL(ProtocolToReturn->SimpleTextOut.Mode);
 | 
					    SHELL_FREE_NON_NULL (ProtocolToReturn->SimpleTextOut.Mode);
 | 
				
			||||||
    SHELL_FREE_NON_NULL(ProtocolToReturn);
 | 
					    SHELL_FREE_NON_NULL (ProtocolToReturn);
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -490,19 +501,22 @@ CreateSimpleTextOutOnFile(
 | 
				
			|||||||
  @retval EFI_SUCCESS         The object was closed.
 | 
					  @retval EFI_SUCCESS         The object was closed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
CloseSimpleTextOutOnFile(
 | 
					CloseSimpleTextOutOnFile (
 | 
				
			||||||
  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *SimpleTextOut
 | 
					  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *SimpleTextOut
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (SimpleTextOut == NULL) {
 | 
					  if (SimpleTextOut == NULL) {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  Status = gBS->UninstallProtocolInterface(
 | 
					
 | 
				
			||||||
    ((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*)SimpleTextOut)->TheHandle,
 | 
					  Status = gBS->UninstallProtocolInterface (
 | 
				
			||||||
    &gEfiSimpleTextOutProtocolGuid,
 | 
					                  ((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)SimpleTextOut)->TheHandle,
 | 
				
			||||||
    &(((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*)SimpleTextOut)->SimpleTextOut));
 | 
					                  &gEfiSimpleTextOutProtocolGuid,
 | 
				
			||||||
  FreePool(SimpleTextOut->Mode);
 | 
					                  &(((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)SimpleTextOut)->SimpleTextOut)
 | 
				
			||||||
  FreePool(SimpleTextOut);
 | 
					                  );
 | 
				
			||||||
 | 
					  FreePool (SimpleTextOut->Mode);
 | 
				
			||||||
 | 
					  FreePool (SimpleTextOut);
 | 
				
			||||||
  return (Status);
 | 
					  return (Status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,8 +20,8 @@
 | 
				
			|||||||
  @retval NULL                There was insufficient memory available.
 | 
					  @retval NULL                There was insufficient memory available.
 | 
				
			||||||
  @return                     A pointer to the allocated protocol structure;
 | 
					  @return                     A pointer to the allocated protocol structure;
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL*
 | 
					EFI_SIMPLE_TEXT_INPUT_PROTOCOL *
 | 
				
			||||||
CreateSimpleTextInOnFile(
 | 
					CreateSimpleTextInOnFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE  FileHandleToUse,
 | 
					  IN SHELL_FILE_HANDLE  FileHandleToUse,
 | 
				
			||||||
  IN EFI_HANDLE         *HandleLocation
 | 
					  IN EFI_HANDLE         *HandleLocation
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -35,7 +35,7 @@ CreateSimpleTextInOnFile(
 | 
				
			|||||||
  @retval EFI_SUCCESS         The object was closed.
 | 
					  @retval EFI_SUCCESS         The object was closed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
CloseSimpleTextInOnFile(
 | 
					CloseSimpleTextInOnFile (
 | 
				
			||||||
  IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *SimpleTextIn
 | 
					  IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *SimpleTextIn
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,11 +50,11 @@ CloseSimpleTextInOnFile(
 | 
				
			|||||||
  @retval NULL                There was insufficient memory available.
 | 
					  @retval NULL                There was insufficient memory available.
 | 
				
			||||||
  @return                     A pointer to the allocated protocol structure;
 | 
					  @return                     A pointer to the allocated protocol structure;
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*
 | 
					EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *
 | 
				
			||||||
CreateSimpleTextOutOnFile(
 | 
					CreateSimpleTextOutOnFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE               FileHandleToUse,
 | 
					  IN SHELL_FILE_HANDLE                FileHandleToUse,
 | 
				
			||||||
  IN EFI_HANDLE                      *HandleLocation,
 | 
					  IN EFI_HANDLE                       *HandleLocation,
 | 
				
			||||||
  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *OriginalProtocol
 | 
					  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *OriginalProtocol
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -66,9 +66,8 @@ CreateSimpleTextOutOnFile(
 | 
				
			|||||||
  @retval EFI_SUCCESS         The object was closed.
 | 
					  @retval EFI_SUCCESS         The object was closed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
CloseSimpleTextOutOnFile(
 | 
					CloseSimpleTextOutOnFile (
 | 
				
			||||||
  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *SimpleTextOut
 | 
					  IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *SimpleTextOut
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_SHELL_CONSOLE_WRAPPERS_HEADER_
 | 
					#endif //_SHELL_CONSOLE_WRAPPERS_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,9 +18,9 @@
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
MoveCursorBackward (
 | 
					MoveCursorBackward (
 | 
				
			||||||
  IN     UINTN                   LineLength,
 | 
					  IN     UINTN  LineLength,
 | 
				
			||||||
  IN OUT UINTN                   *Column,
 | 
					  IN OUT UINTN  *Column,
 | 
				
			||||||
  IN OUT UINTN                   *Row
 | 
					  IN OUT UINTN  *Row
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -33,10 +33,10 @@ MoveCursorBackward (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
MoveCursorForward (
 | 
					MoveCursorForward (
 | 
				
			||||||
  IN     UINTN                   LineLength,
 | 
					  IN     UINTN  LineLength,
 | 
				
			||||||
  IN     UINTN                   TotalRow,
 | 
					  IN     UINTN  TotalRow,
 | 
				
			||||||
  IN OUT UINTN                   *Column,
 | 
					  IN OUT UINTN  *Column,
 | 
				
			||||||
  IN OUT UINTN                   *Row
 | 
					  IN OUT UINTN  *Row
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -50,10 +50,9 @@ MoveCursorForward (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
PrintCommandHistory (
 | 
					PrintCommandHistory (
 | 
				
			||||||
  IN CONST UINTN TotalCols,
 | 
					  IN CONST UINTN  TotalCols,
 | 
				
			||||||
  IN CONST UINTN TotalRows,
 | 
					  IN CONST UINTN  TotalRows,
 | 
				
			||||||
  IN CONST UINTN StartColumn
 | 
					  IN CONST UINTN  StartColumn
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_FILE_HANDLE_INTERNAL_HEADER_
 | 
					#endif //_FILE_HANDLE_INTERNAL_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -10,34 +10,34 @@
 | 
				
			|||||||
#define _SHELL_FILE_HANDLE_WRAPPERS_HEADER_
 | 
					#define _SHELL_FILE_HANDLE_WRAPPERS_HEADER_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY        Link;
 | 
					  LIST_ENTRY    Link;
 | 
				
			||||||
  CHAR16*           Buffer;
 | 
					  CHAR16        *Buffer;
 | 
				
			||||||
} SHELL_LINE_LIST;
 | 
					} SHELL_LINE_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINTN             LogCount;
 | 
					  UINTN              LogCount;
 | 
				
			||||||
  SHELL_LINE_LIST   *Log;
 | 
					  SHELL_LINE_LIST    *Log;
 | 
				
			||||||
} SHELL_LINE_LOG;
 | 
					} SHELL_LINE_LOG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// FILE styte interfaces for StdIn.
 | 
					/// FILE styte interfaces for StdIn.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
extern EFI_FILE_PROTOCOL FileInterfaceStdIn;
 | 
					extern EFI_FILE_PROTOCOL  FileInterfaceStdIn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// FILE styte interfaces for StdOut.
 | 
					/// FILE styte interfaces for StdOut.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
extern EFI_FILE_PROTOCOL FileInterfaceStdOut;
 | 
					extern EFI_FILE_PROTOCOL  FileInterfaceStdOut;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// FILE styte interfaces for StdErr.
 | 
					/// FILE styte interfaces for StdErr.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
extern EFI_FILE_PROTOCOL FileInterfaceStdErr;
 | 
					extern EFI_FILE_PROTOCOL  FileInterfaceStdErr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// FILE style interface for NUL file.
 | 
					/// FILE style interface for NUL file.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
extern EFI_FILE_PROTOCOL FileInterfaceNulFile;
 | 
					extern EFI_FILE_PROTOCOL  FileInterfaceNulFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Creates a EFI_FILE_PROTOCOL (almost) object for using to access
 | 
					  Creates a EFI_FILE_PROTOCOL (almost) object for using to access
 | 
				
			||||||
@@ -48,9 +48,9 @@ extern EFI_FILE_PROTOCOL FileInterfaceNulFile;
 | 
				
			|||||||
  @retval NULL      Memory could not be allocated.
 | 
					  @retval NULL      Memory could not be allocated.
 | 
				
			||||||
  @return other     a pointer to an EFI_FILE_PROTOCOL structure
 | 
					  @return other     a pointer to an EFI_FILE_PROTOCOL structure
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_FILE_PROTOCOL*
 | 
					EFI_FILE_PROTOCOL *
 | 
				
			||||||
CreateFileInterfaceEnv(
 | 
					CreateFileInterfaceEnv (
 | 
				
			||||||
  CONST CHAR16 *EnvName
 | 
					  CONST CHAR16  *EnvName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -62,9 +62,9 @@ CreateFileInterfaceEnv(
 | 
				
			|||||||
  @retval NULL      Memory could not be allocated.
 | 
					  @retval NULL      Memory could not be allocated.
 | 
				
			||||||
  @return other     a pointer to an EFI_FILE_PROTOCOL structure
 | 
					  @return other     a pointer to an EFI_FILE_PROTOCOL structure
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_FILE_PROTOCOL*
 | 
					EFI_FILE_PROTOCOL *
 | 
				
			||||||
CreateFileInterfaceMem(
 | 
					CreateFileInterfaceMem (
 | 
				
			||||||
  IN CONST BOOLEAN Unicode
 | 
					  IN CONST BOOLEAN  Unicode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -77,11 +77,10 @@ CreateFileInterfaceMem(
 | 
				
			|||||||
  @retval NULL      Memory could not be allocated.
 | 
					  @retval NULL      Memory could not be allocated.
 | 
				
			||||||
  @return other     a pointer to an EFI_FILE_PROTOCOL structure
 | 
					  @return other     a pointer to an EFI_FILE_PROTOCOL structure
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_FILE_PROTOCOL*
 | 
					EFI_FILE_PROTOCOL *
 | 
				
			||||||
CreateFileInterfaceFile(
 | 
					CreateFileInterfaceFile (
 | 
				
			||||||
  IN CONST EFI_FILE_PROTOCOL  *Template,
 | 
					  IN CONST EFI_FILE_PROTOCOL  *Template,
 | 
				
			||||||
  IN CONST BOOLEAN            Unicode
 | 
					  IN CONST BOOLEAN            Unicode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_SHELL_FILE_HANDLE_WRAPPERS_HEADER_
 | 
					#endif //_SHELL_FILE_HANDLE_WRAPPERS_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -51,75 +51,75 @@
 | 
				
			|||||||
#include "ConsoleWrappers.h"
 | 
					#include "ConsoleWrappers.h"
 | 
				
			||||||
#include "FileHandleWrappers.h"
 | 
					#include "FileHandleWrappers.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern CONST CHAR16 mNoNestingEnvVarName[];
 | 
					extern CONST CHAR16  mNoNestingEnvVarName[];
 | 
				
			||||||
extern CONST CHAR16 mNoNestingTrue[];
 | 
					extern CONST CHAR16  mNoNestingTrue[];
 | 
				
			||||||
extern CONST CHAR16 mNoNestingFalse[];
 | 
					extern CONST CHAR16  mNoNestingFalse[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY        Link;           ///< Standard linked list handler.
 | 
					  LIST_ENTRY           Link;        ///< Standard linked list handler.
 | 
				
			||||||
  SHELL_FILE_HANDLE SplitStdOut;    ///< ConsoleOut for use in the split.
 | 
					  SHELL_FILE_HANDLE    SplitStdOut; ///< ConsoleOut for use in the split.
 | 
				
			||||||
  SHELL_FILE_HANDLE SplitStdIn;     ///< ConsoleIn for use in the split.
 | 
					  SHELL_FILE_HANDLE    SplitStdIn;  ///< ConsoleIn for use in the split.
 | 
				
			||||||
} SPLIT_LIST;
 | 
					} SPLIT_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINT32  Startup:1;      ///< Was "-startup"       found on command line.
 | 
					  UINT32    Startup      : 1; ///< Was "-startup"       found on command line.
 | 
				
			||||||
  UINT32  NoStartup:1;    ///< Was "-nostartup"     found on command line.
 | 
					  UINT32    NoStartup    : 1; ///< Was "-nostartup"     found on command line.
 | 
				
			||||||
  UINT32  NoConsoleOut:1; ///< Was "-noconsoleout"  found on command line.
 | 
					  UINT32    NoConsoleOut : 1; ///< Was "-noconsoleout"  found on command line.
 | 
				
			||||||
  UINT32  NoConsoleIn:1;  ///< Was "-noconsolein"   found on command line.
 | 
					  UINT32    NoConsoleIn  : 1; ///< Was "-noconsolein"   found on command line.
 | 
				
			||||||
  UINT32  NoInterrupt:1;  ///< Was "-nointerrupt"   found on command line.
 | 
					  UINT32    NoInterrupt  : 1; ///< Was "-nointerrupt"   found on command line.
 | 
				
			||||||
  UINT32  NoMap:1;        ///< Was "-nomap"         found on command line.
 | 
					  UINT32    NoMap        : 1; ///< Was "-nomap"         found on command line.
 | 
				
			||||||
  UINT32  NoVersion:1;    ///< Was "-noversion"     found on command line.
 | 
					  UINT32    NoVersion    : 1; ///< Was "-noversion"     found on command line.
 | 
				
			||||||
  UINT32  Delay:1;        ///< Was "-delay[:n]      found on command line
 | 
					  UINT32    Delay        : 1; ///< Was "-delay[:n]      found on command line
 | 
				
			||||||
  UINT32  Exit:1;         ///< Was "-_exit"         found on command line
 | 
					  UINT32    Exit         : 1; ///< Was "-_exit"         found on command line
 | 
				
			||||||
  UINT32  NoNest:1;       ///< Was "-nonest"        found on command line
 | 
					  UINT32    NoNest       : 1; ///< Was "-nonest"        found on command line
 | 
				
			||||||
  UINT32  Reserved:7;     ///< Extra bits
 | 
					  UINT32    Reserved     : 7; ///< Extra bits
 | 
				
			||||||
} SHELL_BITS;
 | 
					} SHELL_BITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef union {
 | 
					typedef union {
 | 
				
			||||||
  SHELL_BITS  Bits;
 | 
					  SHELL_BITS    Bits;
 | 
				
			||||||
  UINT16      AllBits;
 | 
					  UINT16        AllBits;
 | 
				
			||||||
} SHELL_BIT_UNION;
 | 
					} SHELL_BIT_UNION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  SHELL_BIT_UNION BitUnion;
 | 
					  SHELL_BIT_UNION    BitUnion;
 | 
				
			||||||
  UINTN           Delay;          ///< Seconds of delay default:5.
 | 
					  UINTN              Delay;        ///< Seconds of delay default:5.
 | 
				
			||||||
  CHAR16          *FileName;      ///< Filename to run upon successful initialization.
 | 
					  CHAR16             *FileName;    ///< Filename to run upon successful initialization.
 | 
				
			||||||
  CHAR16          *FileOptions;   ///< Options to pass to FileName.
 | 
					  CHAR16             *FileOptions; ///< Options to pass to FileName.
 | 
				
			||||||
} SHELL_INIT_SETTINGS;
 | 
					} SHELL_INIT_SETTINGS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  BUFFER_LIST                 CommandHistory;
 | 
					  BUFFER_LIST    CommandHistory;
 | 
				
			||||||
  UINTN                       VisibleRowNumber;
 | 
					  UINTN          VisibleRowNumber;
 | 
				
			||||||
  UINTN                       OriginalVisibleRowNumber;
 | 
					  UINTN          OriginalVisibleRowNumber;
 | 
				
			||||||
  BOOLEAN                     InsertMode;           ///< Is the current typing mode insert (FALSE = overwrite).
 | 
					  BOOLEAN        InsertMode;                        ///< Is the current typing mode insert (FALSE = overwrite).
 | 
				
			||||||
} SHELL_VIEWING_SETTINGS;
 | 
					} SHELL_VIEWING_SETTINGS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  EFI_SHELL_PARAMETERS_PROTOCOL *NewShellParametersProtocol;
 | 
					  EFI_SHELL_PARAMETERS_PROTOCOL    *NewShellParametersProtocol;
 | 
				
			||||||
  EFI_SHELL_PROTOCOL            *NewEfiShellProtocol;
 | 
					  EFI_SHELL_PROTOCOL               *NewEfiShellProtocol;
 | 
				
			||||||
  BOOLEAN                       PageBreakEnabled;
 | 
					  BOOLEAN                          PageBreakEnabled;
 | 
				
			||||||
  BOOLEAN                       RootShellInstance;
 | 
					  BOOLEAN                          RootShellInstance;
 | 
				
			||||||
  SHELL_INIT_SETTINGS           ShellInitSettings;
 | 
					  SHELL_INIT_SETTINGS              ShellInitSettings;
 | 
				
			||||||
  BUFFER_LIST                   BufferToFreeList;     ///< List of buffers that were returned to the user to free.
 | 
					  BUFFER_LIST                      BufferToFreeList;  ///< List of buffers that were returned to the user to free.
 | 
				
			||||||
  SHELL_VIEWING_SETTINGS        ViewingSettings;
 | 
					  SHELL_VIEWING_SETTINGS           ViewingSettings;
 | 
				
			||||||
  EFI_HII_HANDLE                HiiHandle;            ///< Handle from HiiLib.
 | 
					  EFI_HII_HANDLE                   HiiHandle;           ///< Handle from HiiLib.
 | 
				
			||||||
  UINTN                         LogScreenCount;       ///< How many screens of log information to save.
 | 
					  UINTN                            LogScreenCount;      ///< How many screens of log information to save.
 | 
				
			||||||
  EFI_EVENT                     UserBreakTimer;       ///< Timer event for polling for CTRL-C.
 | 
					  EFI_EVENT                        UserBreakTimer;      ///< Timer event for polling for CTRL-C.
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL      *ImageDevPath;        ///< DevicePath for ourselves.
 | 
					  EFI_DEVICE_PATH_PROTOCOL         *ImageDevPath;       ///< DevicePath for ourselves.
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL      *FileDevPath;         ///< DevicePath for ourselves.
 | 
					  EFI_DEVICE_PATH_PROTOCOL         *FileDevPath;        ///< DevicePath for ourselves.
 | 
				
			||||||
  CONSOLE_LOGGER_PRIVATE_DATA   *ConsoleInfo;         ///< Pointer for ConsoleInformation.
 | 
					  CONSOLE_LOGGER_PRIVATE_DATA      *ConsoleInfo;        ///< Pointer for ConsoleInformation.
 | 
				
			||||||
  EFI_SHELL_PARAMETERS_PROTOCOL *OldShellParameters;  ///< old shell parameters to reinstall upon exiting.
 | 
					  EFI_SHELL_PARAMETERS_PROTOCOL    *OldShellParameters; ///< old shell parameters to reinstall upon exiting.
 | 
				
			||||||
  SHELL_PROTOCOL_HANDLE_LIST    OldShellList;         ///< List of other instances to reinstall when closing.
 | 
					  SHELL_PROTOCOL_HANDLE_LIST       OldShellList;        ///< List of other instances to reinstall when closing.
 | 
				
			||||||
  SPLIT_LIST                    SplitList;            ///< List of Splits in FILO stack.
 | 
					  SPLIT_LIST                       SplitList;           ///< List of Splits in FILO stack.
 | 
				
			||||||
  VOID                          *CtrlCNotifyHandle1;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlCNotifyHandle1; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  VOID                          *CtrlCNotifyHandle2;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlCNotifyHandle2; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  VOID                          *CtrlCNotifyHandle3;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlCNotifyHandle3; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  VOID                          *CtrlCNotifyHandle4;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlCNotifyHandle4; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  VOID                          *CtrlSNotifyHandle1;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlSNotifyHandle1; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  VOID                          *CtrlSNotifyHandle2;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlSNotifyHandle2; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  VOID                          *CtrlSNotifyHandle3;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlSNotifyHandle3; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  VOID                          *CtrlSNotifyHandle4;  ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
					  VOID                             *CtrlSNotifyHandle4; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
 | 
				
			||||||
  BOOLEAN                       HaltOutput;           ///< TRUE to start a CTRL-S halt.
 | 
					  BOOLEAN                          HaltOutput;          ///< TRUE to start a CTRL-S halt.
 | 
				
			||||||
} SHELL_INFO;
 | 
					} SHELL_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#pragma pack(1)
 | 
					#pragma pack(1)
 | 
				
			||||||
@@ -127,12 +127,12 @@ typedef struct {
 | 
				
			|||||||
/// HII specific Vendor Device Path definition.
 | 
					/// HII specific Vendor Device Path definition.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  VENDOR_DEVICE_PATH             VendorDevicePath;
 | 
					  VENDOR_DEVICE_PATH          VendorDevicePath;
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL       End;
 | 
					  EFI_DEVICE_PATH_PROTOCOL    End;
 | 
				
			||||||
} SHELL_MAN_HII_VENDOR_DEVICE_PATH;
 | 
					} SHELL_MAN_HII_VENDOR_DEVICE_PATH;
 | 
				
			||||||
#pragma pack()
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern SHELL_INFO ShellInfoObject;
 | 
					extern SHELL_INFO  ShellInfoObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Converts the command line to its post-processed form.  this replaces variables and alias' per UEFI Shell spec.
 | 
					  Converts the command line to its post-processed form.  this replaces variables and alias' per UEFI Shell spec.
 | 
				
			||||||
@@ -144,8 +144,8 @@ extern SHELL_INFO ShellInfoObject;
 | 
				
			|||||||
  @return                       some other error occurred
 | 
					  @return                       some other error occurred
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ProcessCommandLineToFinal(
 | 
					ProcessCommandLineToFinal (
 | 
				
			||||||
  IN OUT CHAR16 **CmdLine
 | 
					  IN OUT CHAR16  **CmdLine
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -154,8 +154,8 @@ ProcessCommandLineToFinal(
 | 
				
			|||||||
  @param[in] ErrorCode      the error code to put into lasterror
 | 
					  @param[in] ErrorCode      the error code to put into lasterror
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SetLastError(
 | 
					SetLastError (
 | 
				
			||||||
  IN CONST SHELL_STATUS   ErrorCode
 | 
					  IN CONST SHELL_STATUS  ErrorCode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -164,7 +164,7 @@ SetLastError(
 | 
				
			|||||||
  @retval EFI_SUCCESS           all init commands were run successfully.
 | 
					  @retval EFI_SUCCESS           all init commands were run successfully.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SetBuiltInAlias(
 | 
					SetBuiltInAlias (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -184,8 +184,8 @@ SetBuiltInAlias(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
GetDevicePathsForImageAndFile (
 | 
					GetDevicePathsForImageAndFile (
 | 
				
			||||||
  IN OUT EFI_DEVICE_PATH_PROTOCOL **DevPath,
 | 
					  IN OUT EFI_DEVICE_PATH_PROTOCOL  **DevPath,
 | 
				
			||||||
  IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath
 | 
					  IN OUT EFI_DEVICE_PATH_PROTOCOL  **FilePath
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -216,7 +216,7 @@ GetDevicePathsForImageAndFile (
 | 
				
			|||||||
  @retval EFI_SUCCESS           the variable is initialized.
 | 
					  @retval EFI_SUCCESS           the variable is initialized.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ProcessCommandLine(
 | 
					ProcessCommandLine (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -231,9 +231,9 @@ ProcessCommandLine(
 | 
				
			|||||||
  @retval EFI_SUCCESS           The variable is initialized.
 | 
					  @retval EFI_SUCCESS           The variable is initialized.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
DoStartupScript(
 | 
					DoStartupScript (
 | 
				
			||||||
  IN EFI_DEVICE_PATH_PROTOCOL *ImagePath,
 | 
					  IN EFI_DEVICE_PATH_PROTOCOL  *ImagePath,
 | 
				
			||||||
  IN EFI_DEVICE_PATH_PROTOCOL *FilePath
 | 
					  IN EFI_DEVICE_PATH_PROTOCOL  *FilePath
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -255,9 +255,9 @@ DoShellPrompt (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @param Buffer   Something to pass to FreePool when the shell is exiting.
 | 
					  @param Buffer   Something to pass to FreePool when the shell is exiting.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID*
 | 
					VOID *
 | 
				
			||||||
AddBufferToFreeList(
 | 
					AddBufferToFreeList (
 | 
				
			||||||
  VOID *Buffer
 | 
					  VOID  *Buffer
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -266,8 +266,8 @@ AddBufferToFreeList(
 | 
				
			|||||||
  @param Buffer[in]     The line buffer to add.
 | 
					  @param Buffer[in]     The line buffer to add.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
AddLineToCommandHistory(
 | 
					AddLineToCommandHistory (
 | 
				
			||||||
  IN CONST CHAR16 *Buffer
 | 
					  IN CONST CHAR16  *Buffer
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -281,8 +281,8 @@ AddLineToCommandHistory(
 | 
				
			|||||||
  @retval EFI_ABORTED     the command's operation was aborted
 | 
					  @retval EFI_ABORTED     the command's operation was aborted
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
RunCommand(
 | 
					RunCommand (
 | 
				
			||||||
  IN CONST CHAR16   *CmdLine
 | 
					  IN CONST CHAR16  *CmdLine
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -298,12 +298,11 @@ RunCommand(
 | 
				
			|||||||
  @retval EFI_ABORTED     The command's operation was aborted.
 | 
					  @retval EFI_ABORTED     The command's operation was aborted.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
RunShellCommand(
 | 
					RunShellCommand (
 | 
				
			||||||
  IN CONST CHAR16   *CmdLine,
 | 
					  IN CONST CHAR16  *CmdLine,
 | 
				
			||||||
  OUT EFI_STATUS    *CommandStatus
 | 
					  OUT EFI_STATUS   *CommandStatus
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Function to process a NSH script file via SHELL_FILE_HANDLE.
 | 
					  Function to process a NSH script file via SHELL_FILE_HANDLE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -346,11 +345,11 @@ RunScriptFile (
 | 
				
			|||||||
  @return the location of the first character in the string
 | 
					  @return the location of the first character in the string
 | 
				
			||||||
  @retval CHAR_NULL no instance of any character in CharacterList was found in String
 | 
					  @retval CHAR_NULL no instance of any character in CharacterList was found in String
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
FindFirstCharacter(
 | 
					FindFirstCharacter (
 | 
				
			||||||
  IN CONST CHAR16 *String,
 | 
					  IN CONST CHAR16  *String,
 | 
				
			||||||
  IN CONST CHAR16 *CharacterList,
 | 
					  IN CONST CHAR16  *CharacterList,
 | 
				
			||||||
  IN CONST CHAR16 EscapeCharacter
 | 
					  IN CONST CHAR16  EscapeCharacter
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -359,8 +358,8 @@ FindFirstCharacter(
 | 
				
			|||||||
  @param[in] String pointer to the string to trim them off.
 | 
					  @param[in] String pointer to the string to trim them off.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
TrimSpaces(
 | 
					TrimSpaces (
 | 
				
			||||||
  IN CHAR16 **String
 | 
					  IN CHAR16  **String
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -371,7 +370,7 @@ TrimSpaces(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
SaveBufferList (
 | 
					SaveBufferList (
 | 
				
			||||||
  OUT LIST_ENTRY     *OldBufferList
 | 
					  OUT LIST_ENTRY  *OldBufferList
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -381,10 +380,7 @@ SaveBufferList (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
RestoreBufferList (
 | 
					RestoreBufferList (
 | 
				
			||||||
  IN OUT LIST_ENTRY     *OldBufferList
 | 
					  IN OUT LIST_ENTRY  *OldBufferList
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif //_SHELL_INTERNAL_HEADER_
 | 
					#endif //_SHELL_INTERNAL_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// The list is used to cache the environment variables.
 | 
					// The list is used to cache the environment variables.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
ENV_VAR_LIST                   gShellEnvVarList;
 | 
					ENV_VAR_LIST  gShellEnvVarList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Reports whether an environment variable is Volatile or Non-Volatile.
 | 
					  Reports whether an environment variable is Volatile or Non-Volatile.
 | 
				
			||||||
@@ -27,8 +27,8 @@ ENV_VAR_LIST                   gShellEnvVarList;
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
IsVolatileEnv (
 | 
					IsVolatileEnv (
 | 
				
			||||||
  IN CONST CHAR16 *EnvVarName,
 | 
					  IN CONST CHAR16  *EnvVarName,
 | 
				
			||||||
  OUT BOOLEAN     *Volatile
 | 
					  OUT BOOLEAN      *Volatile
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
@@ -38,29 +38,35 @@ IsVolatileEnv (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ASSERT (Volatile != NULL);
 | 
					  ASSERT (Volatile != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Size = 0;
 | 
					  Size   = 0;
 | 
				
			||||||
  Buffer = NULL;
 | 
					  Buffer = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // get the variable
 | 
					  // get the variable
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = gRT->GetVariable((CHAR16*)EnvVarName,
 | 
					  Status = gRT->GetVariable (
 | 
				
			||||||
                            &gShellVariableGuid,
 | 
					                  (CHAR16 *)EnvVarName,
 | 
				
			||||||
                            &Attribs,
 | 
					                  &gShellVariableGuid,
 | 
				
			||||||
                            &Size,
 | 
					                  &Attribs,
 | 
				
			||||||
                            Buffer);
 | 
					                  &Size,
 | 
				
			||||||
 | 
					                  Buffer
 | 
				
			||||||
 | 
					                  );
 | 
				
			||||||
  if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
					  if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
				
			||||||
    Buffer = AllocateZeroPool(Size);
 | 
					    Buffer = AllocateZeroPool (Size);
 | 
				
			||||||
    if (Buffer == NULL) {
 | 
					    if (Buffer == NULL) {
 | 
				
			||||||
      return EFI_OUT_OF_RESOURCES;
 | 
					      return EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Status = gRT->GetVariable((CHAR16*)EnvVarName,
 | 
					
 | 
				
			||||||
                              &gShellVariableGuid,
 | 
					    Status = gRT->GetVariable (
 | 
				
			||||||
                              &Attribs,
 | 
					                    (CHAR16 *)EnvVarName,
 | 
				
			||||||
                              &Size,
 | 
					                    &gShellVariableGuid,
 | 
				
			||||||
                              Buffer);
 | 
					                    &Attribs,
 | 
				
			||||||
    FreePool(Buffer);
 | 
					                    &Size,
 | 
				
			||||||
 | 
					                    Buffer
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					    FreePool (Buffer);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // not found means volatile
 | 
					  // not found means volatile
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -68,6 +74,7 @@ IsVolatileEnv (
 | 
				
			|||||||
    *Volatile = TRUE;
 | 
					    *Volatile = TRUE;
 | 
				
			||||||
    return EFI_SUCCESS;
 | 
					    return EFI_SUCCESS;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return Status;
 | 
					    return Status;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -75,7 +82,7 @@ IsVolatileEnv (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // check for the Non Volatile bit
 | 
					  // check for the Non Volatile bit
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  *Volatile = !(BOOLEAN) ((Attribs & EFI_VARIABLE_NON_VOLATILE) == EFI_VARIABLE_NON_VOLATILE);
 | 
					  *Volatile = !(BOOLEAN)((Attribs & EFI_VARIABLE_NON_VOLATILE) == EFI_VARIABLE_NON_VOLATILE);
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -85,30 +92,33 @@ IsVolatileEnv (
 | 
				
			|||||||
  @param[in] List               The pointer to pointer to list.
 | 
					  @param[in] List               The pointer to pointer to list.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
FreeEnvironmentVariableList(
 | 
					FreeEnvironmentVariableList (
 | 
				
			||||||
  IN LIST_ENTRY *List
 | 
					  IN LIST_ENTRY  *List
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ENV_VAR_LIST *Node;
 | 
					  ENV_VAR_LIST  *Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ASSERT (List != NULL);
 | 
					  ASSERT (List != NULL);
 | 
				
			||||||
  if (List == NULL) {
 | 
					  if (List == NULL) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for ( Node = (ENV_VAR_LIST*)GetFirstNode(List)
 | 
					  for ( Node = (ENV_VAR_LIST *)GetFirstNode (List)
 | 
				
			||||||
      ; !IsListEmpty(List)
 | 
					        ; !IsListEmpty (List)
 | 
				
			||||||
      ; Node = (ENV_VAR_LIST*)GetFirstNode(List)
 | 
					        ; Node = (ENV_VAR_LIST *)GetFirstNode (List)
 | 
				
			||||||
     ){
 | 
					        )
 | 
				
			||||||
    ASSERT(Node != NULL);
 | 
					  {
 | 
				
			||||||
    RemoveEntryList(&Node->Link);
 | 
					    ASSERT (Node != NULL);
 | 
				
			||||||
 | 
					    RemoveEntryList (&Node->Link);
 | 
				
			||||||
    if (Node->Key != NULL) {
 | 
					    if (Node->Key != NULL) {
 | 
				
			||||||
      FreePool(Node->Key);
 | 
					      FreePool (Node->Key);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (Node->Val != NULL) {
 | 
					    if (Node->Val != NULL) {
 | 
				
			||||||
      FreePool(Node->Val);
 | 
					      FreePool (Node->Val);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    FreePool(Node);
 | 
					
 | 
				
			||||||
 | 
					    FreePool (Node);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -121,18 +131,18 @@ FreeEnvironmentVariableList(
 | 
				
			|||||||
  @retval EFI_SUCCESS           the list was created successfully.
 | 
					  @retval EFI_SUCCESS           the list was created successfully.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
GetEnvironmentVariableList(
 | 
					GetEnvironmentVariableList (
 | 
				
			||||||
  IN OUT LIST_ENTRY *ListHead
 | 
					  IN OUT LIST_ENTRY  *ListHead
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16            *VariableName;
 | 
					  CHAR16        *VariableName;
 | 
				
			||||||
  UINTN             NameSize;
 | 
					  UINTN         NameSize;
 | 
				
			||||||
  UINTN             NameBufferSize;
 | 
					  UINTN         NameBufferSize;
 | 
				
			||||||
  EFI_STATUS        Status;
 | 
					  EFI_STATUS    Status;
 | 
				
			||||||
  EFI_GUID          Guid;
 | 
					  EFI_GUID      Guid;
 | 
				
			||||||
  UINTN             ValSize;
 | 
					  UINTN         ValSize;
 | 
				
			||||||
  UINTN             ValBufferSize;
 | 
					  UINTN         ValBufferSize;
 | 
				
			||||||
  ENV_VAR_LIST      *VarList;
 | 
					  ENV_VAR_LIST  *VarList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ListHead == NULL) {
 | 
					  if (ListHead == NULL) {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
@@ -140,34 +150,36 @@ GetEnvironmentVariableList(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  Status = EFI_SUCCESS;
 | 
					  Status = EFI_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ValBufferSize = INIT_DATA_BUFFER_SIZE;
 | 
					  ValBufferSize  = INIT_DATA_BUFFER_SIZE;
 | 
				
			||||||
  NameBufferSize = INIT_NAME_BUFFER_SIZE;
 | 
					  NameBufferSize = INIT_NAME_BUFFER_SIZE;
 | 
				
			||||||
  VariableName = AllocateZeroPool(NameBufferSize);
 | 
					  VariableName   = AllocateZeroPool (NameBufferSize);
 | 
				
			||||||
  if (VariableName == NULL) {
 | 
					  if (VariableName == NULL) {
 | 
				
			||||||
    return (EFI_OUT_OF_RESOURCES);
 | 
					    return (EFI_OUT_OF_RESOURCES);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *VariableName = CHAR_NULL;
 | 
					  *VariableName = CHAR_NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (!EFI_ERROR(Status)) {
 | 
					  while (!EFI_ERROR (Status)) {
 | 
				
			||||||
    NameSize = NameBufferSize;
 | 
					    NameSize = NameBufferSize;
 | 
				
			||||||
    Status = gRT->GetNextVariableName(&NameSize, VariableName, &Guid);
 | 
					    Status   = gRT->GetNextVariableName (&NameSize, VariableName, &Guid);
 | 
				
			||||||
    if (Status == EFI_NOT_FOUND){
 | 
					    if (Status == EFI_NOT_FOUND) {
 | 
				
			||||||
      Status = EFI_SUCCESS;
 | 
					      Status = EFI_SUCCESS;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    } else if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
					    } else if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
				
			||||||
      NameBufferSize = NameSize > NameBufferSize * 2 ? NameSize : NameBufferSize * 2;
 | 
					      NameBufferSize = NameSize > NameBufferSize * 2 ? NameSize : NameBufferSize * 2;
 | 
				
			||||||
      SHELL_FREE_NON_NULL(VariableName);
 | 
					      SHELL_FREE_NON_NULL (VariableName);
 | 
				
			||||||
      VariableName = AllocateZeroPool(NameBufferSize);
 | 
					      VariableName = AllocateZeroPool (NameBufferSize);
 | 
				
			||||||
      if (VariableName == NULL) {
 | 
					      if (VariableName == NULL) {
 | 
				
			||||||
        Status = EFI_OUT_OF_RESOURCES;
 | 
					        Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      NameSize = NameBufferSize;
 | 
					      NameSize = NameBufferSize;
 | 
				
			||||||
      Status = gRT->GetNextVariableName(&NameSize, VariableName, &Guid);
 | 
					      Status   = gRT->GetNextVariableName (&NameSize, VariableName, &Guid);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!EFI_ERROR(Status) && CompareGuid(&Guid, &gShellVariableGuid)){
 | 
					    if (!EFI_ERROR (Status) && CompareGuid (&Guid, &gShellVariableGuid)) {
 | 
				
			||||||
      VarList = AllocateZeroPool(sizeof(ENV_VAR_LIST));
 | 
					      VarList = AllocateZeroPool (sizeof (ENV_VAR_LIST));
 | 
				
			||||||
      if (VarList == NULL) {
 | 
					      if (VarList == NULL) {
 | 
				
			||||||
        Status = EFI_OUT_OF_RESOURCES;
 | 
					        Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
@@ -177,12 +189,13 @@ GetEnvironmentVariableList(
 | 
				
			|||||||
        //
 | 
					        //
 | 
				
			||||||
        VarList->Val = AllocateZeroPool (ValSize + sizeof (CHAR16));
 | 
					        VarList->Val = AllocateZeroPool (ValSize + sizeof (CHAR16));
 | 
				
			||||||
        if (VarList->Val == NULL) {
 | 
					        if (VarList->Val == NULL) {
 | 
				
			||||||
            SHELL_FREE_NON_NULL(VarList);
 | 
					          SHELL_FREE_NON_NULL (VarList);
 | 
				
			||||||
            Status = EFI_OUT_OF_RESOURCES;
 | 
					          Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
            break;
 | 
					          break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Status = SHELL_GET_ENVIRONMENT_VARIABLE_AND_ATTRIBUTES(VariableName, &VarList->Atts, &ValSize, VarList->Val);
 | 
					
 | 
				
			||||||
        if (Status == EFI_BUFFER_TOO_SMALL){
 | 
					        Status = SHELL_GET_ENVIRONMENT_VARIABLE_AND_ATTRIBUTES (VariableName, &VarList->Atts, &ValSize, VarList->Val);
 | 
				
			||||||
 | 
					        if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
				
			||||||
          ValBufferSize = ValSize > ValBufferSize * 2 ? ValSize : ValBufferSize * 2;
 | 
					          ValBufferSize = ValSize > ValBufferSize * 2 ? ValSize : ValBufferSize * 2;
 | 
				
			||||||
          SHELL_FREE_NON_NULL (VarList->Val);
 | 
					          SHELL_FREE_NON_NULL (VarList->Val);
 | 
				
			||||||
          //
 | 
					          //
 | 
				
			||||||
@@ -190,34 +203,36 @@ GetEnvironmentVariableList(
 | 
				
			|||||||
          //
 | 
					          //
 | 
				
			||||||
          VarList->Val = AllocateZeroPool (ValBufferSize + sizeof (CHAR16));
 | 
					          VarList->Val = AllocateZeroPool (ValBufferSize + sizeof (CHAR16));
 | 
				
			||||||
          if (VarList->Val == NULL) {
 | 
					          if (VarList->Val == NULL) {
 | 
				
			||||||
            SHELL_FREE_NON_NULL(VarList);
 | 
					            SHELL_FREE_NON_NULL (VarList);
 | 
				
			||||||
            Status = EFI_OUT_OF_RESOURCES;
 | 
					            Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          ValSize = ValBufferSize;
 | 
					          ValSize = ValBufferSize;
 | 
				
			||||||
          Status = SHELL_GET_ENVIRONMENT_VARIABLE_AND_ATTRIBUTES(VariableName, &VarList->Atts, &ValSize, VarList->Val);
 | 
					          Status  = SHELL_GET_ENVIRONMENT_VARIABLE_AND_ATTRIBUTES (VariableName, &VarList->Atts, &ValSize, VarList->Val);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (!EFI_ERROR(Status)) {
 | 
					
 | 
				
			||||||
          VarList->Key = AllocateCopyPool(StrSize(VariableName), VariableName);
 | 
					        if (!EFI_ERROR (Status)) {
 | 
				
			||||||
 | 
					          VarList->Key = AllocateCopyPool (StrSize (VariableName), VariableName);
 | 
				
			||||||
          if (VarList->Key == NULL) {
 | 
					          if (VarList->Key == NULL) {
 | 
				
			||||||
            SHELL_FREE_NON_NULL(VarList->Val);
 | 
					            SHELL_FREE_NON_NULL (VarList->Val);
 | 
				
			||||||
            SHELL_FREE_NON_NULL(VarList);
 | 
					            SHELL_FREE_NON_NULL (VarList);
 | 
				
			||||||
            Status = EFI_OUT_OF_RESOURCES;
 | 
					            Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            InsertTailList(ListHead, &VarList->Link);
 | 
					            InsertTailList (ListHead, &VarList->Link);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          SHELL_FREE_NON_NULL(VarList->Val);
 | 
					          SHELL_FREE_NON_NULL (VarList->Val);
 | 
				
			||||||
          SHELL_FREE_NON_NULL(VarList);
 | 
					          SHELL_FREE_NON_NULL (VarList);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } // if (VarList == NULL) ... else ...
 | 
					      } // if (VarList == NULL) ... else ...
 | 
				
			||||||
    } // compare guid
 | 
					    } // compare guid
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SHELL_FREE_NON_NULL (VariableName);
 | 
					  SHELL_FREE_NON_NULL (VariableName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    FreeEnvironmentVariableList(ListHead);
 | 
					    FreeEnvironmentVariableList (ListHead);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (Status);
 | 
					  return (Status);
 | 
				
			||||||
@@ -236,51 +251,56 @@ GetEnvironmentVariableList(
 | 
				
			|||||||
  @retval EFI_SUCCESS           the list was Set successfully.
 | 
					  @retval EFI_SUCCESS           the list was Set successfully.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SetEnvironmentVariableList(
 | 
					SetEnvironmentVariableList (
 | 
				
			||||||
  IN LIST_ENTRY *ListHead
 | 
					  IN LIST_ENTRY  *ListHead
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ENV_VAR_LIST      VarList;
 | 
					  ENV_VAR_LIST  VarList;
 | 
				
			||||||
  ENV_VAR_LIST      *Node;
 | 
					  ENV_VAR_LIST  *Node;
 | 
				
			||||||
  EFI_STATUS        Status;
 | 
					  EFI_STATUS    Status;
 | 
				
			||||||
  UINTN             Size;
 | 
					  UINTN         Size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  InitializeListHead(&VarList.Link);
 | 
					  InitializeListHead (&VarList.Link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Delete all the current environment variables
 | 
					  // Delete all the current environment variables
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = GetEnvironmentVariableList(&VarList.Link);
 | 
					  Status = GetEnvironmentVariableList (&VarList.Link);
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for ( Node = (ENV_VAR_LIST*)GetFirstNode(&VarList.Link)
 | 
					  for ( Node = (ENV_VAR_LIST *)GetFirstNode (&VarList.Link)
 | 
				
			||||||
      ; !IsNull(&VarList.Link, &Node->Link)
 | 
					        ; !IsNull (&VarList.Link, &Node->Link)
 | 
				
			||||||
      ; Node = (ENV_VAR_LIST*)GetNextNode(&VarList.Link, &Node->Link)
 | 
					        ; Node = (ENV_VAR_LIST *)GetNextNode (&VarList.Link, &Node->Link)
 | 
				
			||||||
     ){
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    if (Node->Key != NULL) {
 | 
					    if (Node->Key != NULL) {
 | 
				
			||||||
      Status = SHELL_DELETE_ENVIRONMENT_VARIABLE(Node->Key);
 | 
					      Status = SHELL_DELETE_ENVIRONMENT_VARIABLE (Node->Key);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ASSERT_EFI_ERROR(Status);
 | 
					
 | 
				
			||||||
 | 
					    ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FreeEnvironmentVariableList(&VarList.Link);
 | 
					  FreeEnvironmentVariableList (&VarList.Link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // set all the variables from the list
 | 
					  // set all the variables from the list
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  for ( Node = (ENV_VAR_LIST*)GetFirstNode(ListHead)
 | 
					  for ( Node = (ENV_VAR_LIST *)GetFirstNode (ListHead)
 | 
				
			||||||
      ; !IsNull(ListHead, &Node->Link)
 | 
					        ; !IsNull (ListHead, &Node->Link)
 | 
				
			||||||
      ; Node = (ENV_VAR_LIST*)GetNextNode(ListHead, &Node->Link)
 | 
					        ; Node = (ENV_VAR_LIST *)GetNextNode (ListHead, &Node->Link)
 | 
				
			||||||
     ){
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    Size = StrSize (Node->Val) - sizeof (CHAR16);
 | 
					    Size = StrSize (Node->Val) - sizeof (CHAR16);
 | 
				
			||||||
    if (Node->Atts & EFI_VARIABLE_NON_VOLATILE) {
 | 
					    if (Node->Atts & EFI_VARIABLE_NON_VOLATILE) {
 | 
				
			||||||
      Status = SHELL_SET_ENVIRONMENT_VARIABLE_NV(Node->Key, Size, Node->Val);
 | 
					      Status = SHELL_SET_ENVIRONMENT_VARIABLE_NV (Node->Key, Size, Node->Val);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      Status = SHELL_SET_ENVIRONMENT_VARIABLE_V (Node->Key, Size, Node->Val);
 | 
					      Status = SHELL_SET_ENVIRONMENT_VARIABLE_V (Node->Key, Size, Node->Val);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ASSERT_EFI_ERROR(Status);
 | 
					
 | 
				
			||||||
 | 
					    ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  FreeEnvironmentVariableList(ListHead);
 | 
					
 | 
				
			||||||
 | 
					  FreeEnvironmentVariableList (ListHead);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (Status);
 | 
					  return (Status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -299,8 +319,8 @@ SetEnvironmentVariableList(
 | 
				
			|||||||
  @sa SetEnvironmentVariableList
 | 
					  @sa SetEnvironmentVariableList
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SetEnvironmentVariables(
 | 
					SetEnvironmentVariables (
 | 
				
			||||||
  IN CONST CHAR16 **Environment
 | 
					  IN CONST CHAR16  **Environment
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CONST CHAR16  *CurrentString;
 | 
					  CONST CHAR16  *CurrentString;
 | 
				
			||||||
@@ -318,61 +338,65 @@ SetEnvironmentVariables(
 | 
				
			|||||||
  // Build a list identical to the ones used for get/set list functions above
 | 
					  // Build a list identical to the ones used for get/set list functions above
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  for ( CurrentCount = 0
 | 
					  for ( CurrentCount = 0
 | 
				
			||||||
      ;
 | 
					        ;
 | 
				
			||||||
      ; CurrentCount++
 | 
					        ; CurrentCount++
 | 
				
			||||||
     ){
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    CurrentString = Environment[CurrentCount];
 | 
					    CurrentString = Environment[CurrentCount];
 | 
				
			||||||
    if (CurrentString == NULL) {
 | 
					    if (CurrentString == NULL) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ASSERT(StrStr(CurrentString, L"=") != NULL);
 | 
					
 | 
				
			||||||
    Node = AllocateZeroPool(sizeof(ENV_VAR_LIST));
 | 
					    ASSERT (StrStr (CurrentString, L"=") != NULL);
 | 
				
			||||||
 | 
					    Node = AllocateZeroPool (sizeof (ENV_VAR_LIST));
 | 
				
			||||||
    if (Node == NULL) {
 | 
					    if (Node == NULL) {
 | 
				
			||||||
      SetEnvironmentVariableList(&VarList->Link);
 | 
					      SetEnvironmentVariableList (&VarList->Link);
 | 
				
			||||||
      return (EFI_OUT_OF_RESOURCES);
 | 
					      return (EFI_OUT_OF_RESOURCES);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Node->Key = AllocateZeroPool((StrStr(CurrentString, L"=") - CurrentString + 1) * sizeof(CHAR16));
 | 
					    Node->Key = AllocateZeroPool ((StrStr (CurrentString, L"=") - CurrentString + 1) * sizeof (CHAR16));
 | 
				
			||||||
    if (Node->Key == NULL) {
 | 
					    if (Node->Key == NULL) {
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Node);
 | 
					      SHELL_FREE_NON_NULL (Node);
 | 
				
			||||||
      SetEnvironmentVariableList(&VarList->Link);
 | 
					      SetEnvironmentVariableList (&VarList->Link);
 | 
				
			||||||
      return (EFI_OUT_OF_RESOURCES);
 | 
					      return (EFI_OUT_OF_RESOURCES);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // Copy the string into the Key, leaving the last character allocated as NULL to terminate
 | 
					    // Copy the string into the Key, leaving the last character allocated as NULL to terminate
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    StrnCpyS( Node->Key,
 | 
					    StrnCpyS (
 | 
				
			||||||
              StrStr(CurrentString, L"=") - CurrentString + 1,
 | 
					      Node->Key,
 | 
				
			||||||
              CurrentString,
 | 
					      StrStr (CurrentString, L"=") - CurrentString + 1,
 | 
				
			||||||
              StrStr(CurrentString, L"=") - CurrentString
 | 
					      CurrentString,
 | 
				
			||||||
              );
 | 
					      StrStr (CurrentString, L"=") - CurrentString
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // ValueSize = TotalSize - already removed size - size for '=' + size for terminator (the last 2 items cancel each other)
 | 
					    // ValueSize = TotalSize - already removed size - size for '=' + size for terminator (the last 2 items cancel each other)
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    Node->Val = AllocateCopyPool(StrSize(CurrentString) - StrSize(Node->Key), CurrentString + StrLen(Node->Key) + 1);
 | 
					    Node->Val = AllocateCopyPool (StrSize (CurrentString) - StrSize (Node->Key), CurrentString + StrLen (Node->Key) + 1);
 | 
				
			||||||
    if (Node->Val == NULL) {
 | 
					    if (Node->Val == NULL) {
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Node->Key);
 | 
					      SHELL_FREE_NON_NULL (Node->Key);
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Node);
 | 
					      SHELL_FREE_NON_NULL (Node);
 | 
				
			||||||
      SetEnvironmentVariableList(&VarList->Link);
 | 
					      SetEnvironmentVariableList (&VarList->Link);
 | 
				
			||||||
      return (EFI_OUT_OF_RESOURCES);
 | 
					      return (EFI_OUT_OF_RESOURCES);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Node->Atts = EFI_VARIABLE_BOOTSERVICE_ACCESS;
 | 
					    Node->Atts = EFI_VARIABLE_BOOTSERVICE_ACCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (VarList == NULL) {
 | 
					    if (VarList == NULL) {
 | 
				
			||||||
      VarList = AllocateZeroPool(sizeof(ENV_VAR_LIST));
 | 
					      VarList = AllocateZeroPool (sizeof (ENV_VAR_LIST));
 | 
				
			||||||
      if (VarList == NULL) {
 | 
					      if (VarList == NULL) {
 | 
				
			||||||
        SHELL_FREE_NON_NULL(Node->Key);
 | 
					        SHELL_FREE_NON_NULL (Node->Key);
 | 
				
			||||||
        SHELL_FREE_NON_NULL(Node->Val);
 | 
					        SHELL_FREE_NON_NULL (Node->Val);
 | 
				
			||||||
        SHELL_FREE_NON_NULL(Node);
 | 
					        SHELL_FREE_NON_NULL (Node);
 | 
				
			||||||
        return (EFI_OUT_OF_RESOURCES);
 | 
					        return (EFI_OUT_OF_RESOURCES);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      InitializeListHead(&VarList->Link);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    InsertTailList(&VarList->Link, &Node->Link);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      InitializeListHead (&VarList->Link);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    InsertTailList (&VarList->Link, &Node->Link);
 | 
				
			||||||
  } // for loop
 | 
					  } // for loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -380,7 +404,7 @@ SetEnvironmentVariables(
 | 
				
			|||||||
  // this function also frees the memory and deletes all pre-existing
 | 
					  // this function also frees the memory and deletes all pre-existing
 | 
				
			||||||
  // shell-guid based environment variables.
 | 
					  // shell-guid based environment variables.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  return (SetEnvironmentVariableList(&VarList->Link));
 | 
					  return (SetEnvironmentVariableList (&VarList->Link));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -400,28 +424,30 @@ SetEnvironmentVariables(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ShellFindEnvVarInList (
 | 
					ShellFindEnvVarInList (
 | 
				
			||||||
  IN  CONST CHAR16    *Key,
 | 
					  IN  CONST CHAR16  *Key,
 | 
				
			||||||
  OUT CHAR16          **Value,
 | 
					  OUT CHAR16        **Value,
 | 
				
			||||||
  OUT UINTN           *ValueSize,
 | 
					  OUT UINTN         *ValueSize,
 | 
				
			||||||
  OUT UINT32          *Atts OPTIONAL
 | 
					  OUT UINT32        *Atts OPTIONAL
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ENV_VAR_LIST      *Node;
 | 
					  ENV_VAR_LIST  *Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Key == NULL || Value == NULL || ValueSize == NULL) {
 | 
					  if ((Key == NULL) || (Value == NULL) || (ValueSize == NULL)) {
 | 
				
			||||||
    return SHELL_INVALID_PARAMETER;
 | 
					    return SHELL_INVALID_PARAMETER;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for ( Node = (ENV_VAR_LIST*)GetFirstNode(&gShellEnvVarList.Link)
 | 
					  for ( Node = (ENV_VAR_LIST *)GetFirstNode (&gShellEnvVarList.Link)
 | 
				
			||||||
      ; !IsNull(&gShellEnvVarList.Link, &Node->Link)
 | 
					        ; !IsNull (&gShellEnvVarList.Link, &Node->Link)
 | 
				
			||||||
      ; Node = (ENV_VAR_LIST*)GetNextNode(&gShellEnvVarList.Link, &Node->Link)
 | 
					        ; Node = (ENV_VAR_LIST *)GetNextNode (&gShellEnvVarList.Link, &Node->Link)
 | 
				
			||||||
     ){
 | 
					        )
 | 
				
			||||||
    if (Node->Key != NULL && StrCmp(Key, Node->Key) == 0) {
 | 
					  {
 | 
				
			||||||
      *Value      = AllocateCopyPool(StrSize(Node->Val), Node->Val);
 | 
					    if ((Node->Key != NULL) && (StrCmp (Key, Node->Key) == 0)) {
 | 
				
			||||||
      *ValueSize  = StrSize(Node->Val);
 | 
					      *Value     = AllocateCopyPool (StrSize (Node->Val), Node->Val);
 | 
				
			||||||
 | 
					      *ValueSize = StrSize (Node->Val);
 | 
				
			||||||
      if (Atts != NULL) {
 | 
					      if (Atts != NULL) {
 | 
				
			||||||
        *Atts = Node->Atts;
 | 
					        *Atts = Node->Atts;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return EFI_SUCCESS;
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -444,17 +470,17 @@ ShellFindEnvVarInList (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ShellAddEnvVarToList (
 | 
					ShellAddEnvVarToList (
 | 
				
			||||||
  IN CONST CHAR16     *Key,
 | 
					  IN CONST CHAR16  *Key,
 | 
				
			||||||
  IN CONST CHAR16     *Value,
 | 
					  IN CONST CHAR16  *Value,
 | 
				
			||||||
  IN UINTN            ValueSize,
 | 
					  IN UINTN         ValueSize,
 | 
				
			||||||
  IN UINT32           Atts
 | 
					  IN UINT32        Atts
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ENV_VAR_LIST      *Node;
 | 
					  ENV_VAR_LIST  *Node;
 | 
				
			||||||
  CHAR16            *LocalKey;
 | 
					  CHAR16        *LocalKey;
 | 
				
			||||||
  CHAR16            *LocalValue;
 | 
					  CHAR16        *LocalValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Key == NULL || Value == NULL || ValueSize == 0) {
 | 
					  if ((Key == NULL) || (Value == NULL) || (ValueSize == 0)) {
 | 
				
			||||||
    return EFI_INVALID_PARAMETER;
 | 
					    return EFI_INVALID_PARAMETER;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -466,14 +492,15 @@ ShellAddEnvVarToList (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // Update the variable value if it exists in gShellEnvVarList.
 | 
					  // Update the variable value if it exists in gShellEnvVarList.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  for ( Node = (ENV_VAR_LIST*)GetFirstNode(&gShellEnvVarList.Link)
 | 
					  for ( Node = (ENV_VAR_LIST *)GetFirstNode (&gShellEnvVarList.Link)
 | 
				
			||||||
      ; !IsNull(&gShellEnvVarList.Link, &Node->Link)
 | 
					        ; !IsNull (&gShellEnvVarList.Link, &Node->Link)
 | 
				
			||||||
      ; Node = (ENV_VAR_LIST*)GetNextNode(&gShellEnvVarList.Link, &Node->Link)
 | 
					        ; Node = (ENV_VAR_LIST *)GetNextNode (&gShellEnvVarList.Link, &Node->Link)
 | 
				
			||||||
     ){
 | 
					        )
 | 
				
			||||||
    if (Node->Key != NULL && StrCmp(Key, Node->Key) == 0) {
 | 
					  {
 | 
				
			||||||
 | 
					    if ((Node->Key != NULL) && (StrCmp (Key, Node->Key) == 0)) {
 | 
				
			||||||
      Node->Atts = Atts;
 | 
					      Node->Atts = Atts;
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Node->Val);
 | 
					      SHELL_FREE_NON_NULL (Node->Val);
 | 
				
			||||||
      Node->Val  = LocalValue;
 | 
					      Node->Val = LocalValue;
 | 
				
			||||||
      return EFI_SUCCESS;
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -482,21 +509,23 @@ ShellAddEnvVarToList (
 | 
				
			|||||||
  // If the environment variable key doesn't exist in list just insert
 | 
					  // If the environment variable key doesn't exist in list just insert
 | 
				
			||||||
  // a new node.
 | 
					  // a new node.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  LocalKey = AllocateCopyPool (StrSize(Key), Key);
 | 
					  LocalKey = AllocateCopyPool (StrSize (Key), Key);
 | 
				
			||||||
  if (LocalKey == NULL) {
 | 
					  if (LocalKey == NULL) {
 | 
				
			||||||
    FreePool (LocalValue);
 | 
					    FreePool (LocalValue);
 | 
				
			||||||
    return EFI_OUT_OF_RESOURCES;
 | 
					    return EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  Node = (ENV_VAR_LIST*)AllocateZeroPool (sizeof(ENV_VAR_LIST));
 | 
					
 | 
				
			||||||
 | 
					  Node = (ENV_VAR_LIST *)AllocateZeroPool (sizeof (ENV_VAR_LIST));
 | 
				
			||||||
  if (Node == NULL) {
 | 
					  if (Node == NULL) {
 | 
				
			||||||
    FreePool (LocalKey);
 | 
					    FreePool (LocalKey);
 | 
				
			||||||
    FreePool (LocalValue);
 | 
					    FreePool (LocalValue);
 | 
				
			||||||
    return EFI_OUT_OF_RESOURCES;
 | 
					    return EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  Node->Key = LocalKey;
 | 
					
 | 
				
			||||||
  Node->Val = LocalValue;
 | 
					  Node->Key  = LocalKey;
 | 
				
			||||||
 | 
					  Node->Val  = LocalValue;
 | 
				
			||||||
  Node->Atts = Atts;
 | 
					  Node->Atts = Atts;
 | 
				
			||||||
  InsertTailList(&gShellEnvVarList.Link, &Node->Link);
 | 
					  InsertTailList (&gShellEnvVarList.Link, &Node->Link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -512,24 +541,25 @@ ShellAddEnvVarToList (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ShellRemvoeEnvVarFromList (
 | 
					ShellRemvoeEnvVarFromList (
 | 
				
			||||||
  IN CONST CHAR16           *Key
 | 
					  IN CONST CHAR16  *Key
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ENV_VAR_LIST      *Node;
 | 
					  ENV_VAR_LIST  *Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Key == NULL) {
 | 
					  if (Key == NULL) {
 | 
				
			||||||
    return EFI_INVALID_PARAMETER;
 | 
					    return EFI_INVALID_PARAMETER;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for ( Node = (ENV_VAR_LIST*)GetFirstNode(&gShellEnvVarList.Link)
 | 
					  for ( Node = (ENV_VAR_LIST *)GetFirstNode (&gShellEnvVarList.Link)
 | 
				
			||||||
      ; !IsNull(&gShellEnvVarList.Link, &Node->Link)
 | 
					        ; !IsNull (&gShellEnvVarList.Link, &Node->Link)
 | 
				
			||||||
      ; Node = (ENV_VAR_LIST*)GetNextNode(&gShellEnvVarList.Link, &Node->Link)
 | 
					        ; Node = (ENV_VAR_LIST *)GetNextNode (&gShellEnvVarList.Link, &Node->Link)
 | 
				
			||||||
     ){
 | 
					        )
 | 
				
			||||||
    if (Node->Key != NULL && StrCmp(Key, Node->Key) == 0) {
 | 
					  {
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Node->Key);
 | 
					    if ((Node->Key != NULL) && (StrCmp (Key, Node->Key) == 0)) {
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Node->Val);
 | 
					      SHELL_FREE_NON_NULL (Node->Key);
 | 
				
			||||||
      RemoveEntryList(&Node->Link);
 | 
					      SHELL_FREE_NON_NULL (Node->Val);
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Node);
 | 
					      RemoveEntryList (&Node->Link);
 | 
				
			||||||
 | 
					      SHELL_FREE_NON_NULL (Node);
 | 
				
			||||||
      return EFI_SUCCESS;
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -547,9 +577,9 @@ ShellInitEnvVarList (
 | 
				
			|||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS    Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  InitializeListHead(&gShellEnvVarList.Link);
 | 
					  InitializeListHead (&gShellEnvVarList.Link);
 | 
				
			||||||
  Status = GetEnvironmentVariableList (&gShellEnvVarList.Link);
 | 
					  Status = GetEnvironmentVariableList (&gShellEnvVarList.Link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return Status;
 | 
					  return Status;
 | 
				
			||||||
@@ -565,8 +595,7 @@ ShellFreeEnvVarList (
 | 
				
			|||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  FreeEnvironmentVariableList (&gShellEnvVarList.Link);
 | 
					  FreeEnvironmentVariableList (&gShellEnvVarList.Link);
 | 
				
			||||||
  InitializeListHead(&gShellEnvVarList.Link);
 | 
					  InitializeListHead (&gShellEnvVarList.Link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return;
 | 
					  return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,17 +15,16 @@
 | 
				
			|||||||
#define _SHELL_ENVIRONMENT_VARIABLE_HEADER_
 | 
					#define _SHELL_ENVIRONMENT_VARIABLE_HEADER_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY  Link;
 | 
					  LIST_ENTRY    Link;
 | 
				
			||||||
  CHAR16      *Key;
 | 
					  CHAR16        *Key;
 | 
				
			||||||
  CHAR16      *Val;
 | 
					  CHAR16        *Val;
 | 
				
			||||||
  UINT32      Atts;
 | 
					  UINT32        Atts;
 | 
				
			||||||
} ENV_VAR_LIST;
 | 
					} ENV_VAR_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// The list is used to cache the environment variables.
 | 
					// The list is used to cache the environment variables.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
extern ENV_VAR_LIST    gShellEnvVarList;
 | 
					extern ENV_VAR_LIST  gShellEnvVarList;
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Reports whether an environment variable is Volatile or Non-Volatile.
 | 
					  Reports whether an environment variable is Volatile or Non-Volatile.
 | 
				
			||||||
@@ -38,8 +37,8 @@ extern ENV_VAR_LIST    gShellEnvVarList;
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
IsVolatileEnv (
 | 
					IsVolatileEnv (
 | 
				
			||||||
  IN CONST CHAR16 *EnvVarName,
 | 
					  IN CONST CHAR16  *EnvVarName,
 | 
				
			||||||
  OUT BOOLEAN     *Volatile
 | 
					  OUT BOOLEAN      *Volatile
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -73,7 +72,7 @@ IsVolatileEnv (
 | 
				
			|||||||
  @retval other                 An error occurred
 | 
					  @retval other                 An error occurred
 | 
				
			||||||
  @sa SetVariable
 | 
					  @sa SetVariable
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define SHELL_SET_ENVIRONMENT_VARIABLE_NV(EnvVarName,BufferSize,Buffer)  \
 | 
					#define SHELL_SET_ENVIRONMENT_VARIABLE_NV(EnvVarName, BufferSize, Buffer)  \
 | 
				
			||||||
  (gRT->SetVariable((CHAR16*)EnvVarName,                          \
 | 
					  (gRT->SetVariable((CHAR16*)EnvVarName,                          \
 | 
				
			||||||
  &gShellVariableGuid,                                            \
 | 
					  &gShellVariableGuid,                                            \
 | 
				
			||||||
  EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS,      \
 | 
					  EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS,      \
 | 
				
			||||||
@@ -93,7 +92,7 @@ IsVolatileEnv (
 | 
				
			|||||||
  @retval other                 An error occurred
 | 
					  @retval other                 An error occurred
 | 
				
			||||||
  @sa SetVariable
 | 
					  @sa SetVariable
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define SHELL_GET_ENVIRONMENT_VARIABLE(EnvVarName,BufferSize,Buffer)    \
 | 
					#define SHELL_GET_ENVIRONMENT_VARIABLE(EnvVarName, BufferSize, Buffer)    \
 | 
				
			||||||
  (gRT->GetVariable((CHAR16*)EnvVarName,                        \
 | 
					  (gRT->GetVariable((CHAR16*)EnvVarName,                        \
 | 
				
			||||||
  &gShellVariableGuid,                                          \
 | 
					  &gShellVariableGuid,                                          \
 | 
				
			||||||
  0,                                                            \
 | 
					  0,                                                            \
 | 
				
			||||||
@@ -114,7 +113,7 @@ IsVolatileEnv (
 | 
				
			|||||||
  @retval other                 An error occurred
 | 
					  @retval other                 An error occurred
 | 
				
			||||||
  @sa SetVariable
 | 
					  @sa SetVariable
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define SHELL_GET_ENVIRONMENT_VARIABLE_AND_ATTRIBUTES(EnvVarName,Atts,BufferSize,Buffer)    \
 | 
					#define SHELL_GET_ENVIRONMENT_VARIABLE_AND_ATTRIBUTES(EnvVarName, Atts, BufferSize, Buffer)    \
 | 
				
			||||||
  (gRT->GetVariable((CHAR16*)EnvVarName,                        \
 | 
					  (gRT->GetVariable((CHAR16*)EnvVarName,                        \
 | 
				
			||||||
  &gShellVariableGuid,                                          \
 | 
					  &gShellVariableGuid,                                          \
 | 
				
			||||||
  Atts,                                                            \
 | 
					  Atts,                                                            \
 | 
				
			||||||
@@ -134,7 +133,7 @@ IsVolatileEnv (
 | 
				
			|||||||
  @retval other                 An error occurred
 | 
					  @retval other                 An error occurred
 | 
				
			||||||
  @sa SetVariable
 | 
					  @sa SetVariable
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define SHELL_SET_ENVIRONMENT_VARIABLE_V(EnvVarName,BufferSize,Buffer) \
 | 
					#define SHELL_SET_ENVIRONMENT_VARIABLE_V(EnvVarName, BufferSize, Buffer) \
 | 
				
			||||||
  (gRT->SetVariable((CHAR16*)EnvVarName,                      \
 | 
					  (gRT->SetVariable((CHAR16*)EnvVarName,                      \
 | 
				
			||||||
  &gShellVariableGuid,                                        \
 | 
					  &gShellVariableGuid,                                        \
 | 
				
			||||||
  EFI_VARIABLE_BOOTSERVICE_ACCESS,                            \
 | 
					  EFI_VARIABLE_BOOTSERVICE_ACCESS,                            \
 | 
				
			||||||
@@ -150,8 +149,8 @@ IsVolatileEnv (
 | 
				
			|||||||
  @retval EFI_SUCCESS           the list was created successfully.
 | 
					  @retval EFI_SUCCESS           the list was created successfully.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
GetEnvironmentVariableList(
 | 
					GetEnvironmentVariableList (
 | 
				
			||||||
  IN OUT LIST_ENTRY *List
 | 
					  IN OUT LIST_ENTRY  *List
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -167,8 +166,8 @@ GetEnvironmentVariableList(
 | 
				
			|||||||
  @retval EFI_SUCCESS           The list was Set successfully.
 | 
					  @retval EFI_SUCCESS           The list was Set successfully.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SetEnvironmentVariableList(
 | 
					SetEnvironmentVariableList (
 | 
				
			||||||
  IN LIST_ENTRY *List
 | 
					  IN LIST_ENTRY  *List
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -187,8 +186,8 @@ SetEnvironmentVariableList(
 | 
				
			|||||||
  @sa SetEnvironmentVariableList
 | 
					  @sa SetEnvironmentVariableList
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SetEnvironmentVariables(
 | 
					SetEnvironmentVariables (
 | 
				
			||||||
  IN CONST CHAR16 **Environment
 | 
					  IN CONST CHAR16  **Environment
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -197,8 +196,8 @@ SetEnvironmentVariables(
 | 
				
			|||||||
  @param[in] List               The pointer to pointer to list.
 | 
					  @param[in] List               The pointer to pointer to list.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
FreeEnvironmentVariableList(
 | 
					FreeEnvironmentVariableList (
 | 
				
			||||||
  IN LIST_ENTRY *List
 | 
					  IN LIST_ENTRY  *List
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -218,10 +217,10 @@ FreeEnvironmentVariableList(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ShellFindEnvVarInList (
 | 
					ShellFindEnvVarInList (
 | 
				
			||||||
  IN  CONST CHAR16    *Key,
 | 
					  IN  CONST CHAR16  *Key,
 | 
				
			||||||
  OUT CHAR16          **Value,
 | 
					  OUT CHAR16        **Value,
 | 
				
			||||||
  OUT UINTN           *ValueSize,
 | 
					  OUT UINTN         *ValueSize,
 | 
				
			||||||
  OUT UINT32          *Atts OPTIONAL
 | 
					  OUT UINT32        *Atts OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -239,10 +238,10 @@ ShellFindEnvVarInList (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ShellAddEnvVarToList (
 | 
					ShellAddEnvVarToList (
 | 
				
			||||||
  IN CONST CHAR16     *Key,
 | 
					  IN CONST CHAR16  *Key,
 | 
				
			||||||
  IN CONST CHAR16     *Value,
 | 
					  IN CONST CHAR16  *Value,
 | 
				
			||||||
  IN UINTN            ValueSize,
 | 
					  IN UINTN         ValueSize,
 | 
				
			||||||
  IN UINT32           Atts
 | 
					  IN UINT32        Atts
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -256,7 +255,7 @@ ShellAddEnvVarToList (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ShellRemvoeEnvVarFromList (
 | 
					ShellRemvoeEnvVarFromList (
 | 
				
			||||||
  IN CONST CHAR16           *Key
 | 
					  IN CONST CHAR16  *Key
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -279,4 +278,3 @@ ShellFreeEnvVarList (
 | 
				
			|||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_SHELL_ENVIRONMENT_VARIABLE_HEADER_
 | 
					#endif //_SHELL_ENVIRONMENT_VARIABLE_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,15 +17,14 @@
 | 
				
			|||||||
EFI_HII_HANDLE  mShellManHiiHandle    = NULL;
 | 
					EFI_HII_HANDLE  mShellManHiiHandle    = NULL;
 | 
				
			||||||
EFI_HANDLE      mShellManDriverHandle = NULL;
 | 
					EFI_HANDLE      mShellManDriverHandle = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
SHELL_MAN_HII_VENDOR_DEVICE_PATH  mShellManHiiDevicePath = {
 | 
					SHELL_MAN_HII_VENDOR_DEVICE_PATH  mShellManHiiDevicePath = {
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      HARDWARE_DEVICE_PATH,
 | 
					      HARDWARE_DEVICE_PATH,
 | 
				
			||||||
      HW_VENDOR_DP,
 | 
					      HW_VENDOR_DP,
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
 | 
					        (UINT8)(sizeof (VENDOR_DEVICE_PATH)),
 | 
				
			||||||
        (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
 | 
					        (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    SHELL_MAN_HII_GUID
 | 
					    SHELL_MAN_HII_GUID
 | 
				
			||||||
@@ -34,8 +33,8 @@ SHELL_MAN_HII_VENDOR_DEVICE_PATH  mShellManHiiDevicePath = {
 | 
				
			|||||||
    END_DEVICE_PATH_TYPE,
 | 
					    END_DEVICE_PATH_TYPE,
 | 
				
			||||||
    END_ENTIRE_DEVICE_PATH_SUBTYPE,
 | 
					    END_ENTIRE_DEVICE_PATH_SUBTYPE,
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      (UINT8) (END_DEVICE_PATH_LENGTH),
 | 
					      (UINT8)(END_DEVICE_PATH_LENGTH),
 | 
				
			||||||
      (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)
 | 
					      (UINT8)((END_DEVICE_PATH_LENGTH) >> 8)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -52,11 +51,12 @@ SHELL_MAN_HII_VENDOR_DEVICE_PATH  mShellManHiiDevicePath = {
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
GetExecuatableFileName (
 | 
					GetExecuatableFileName (
 | 
				
			||||||
  IN CONST CHAR16    *NameString
 | 
					  IN CONST CHAR16  *NameString
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16  *Buffer;
 | 
					  CHAR16  *Buffer;
 | 
				
			||||||
  CHAR16  *SuffixStr;
 | 
					  CHAR16  *SuffixStr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (NameString == NULL) {
 | 
					  if (NameString == NULL) {
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -64,31 +64,33 @@ GetExecuatableFileName (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // Fix the file name
 | 
					  // Fix the file name
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  if (StrnCmp(NameString+StrLen(NameString)-StrLen(L".efi"), L".efi", StrLen(L".efi"))==0) {
 | 
					  if (StrnCmp (NameString+StrLen (NameString)-StrLen (L".efi"), L".efi", StrLen (L".efi")) == 0) {
 | 
				
			||||||
    Buffer = AllocateCopyPool(StrSize(NameString), NameString);
 | 
					    Buffer = AllocateCopyPool (StrSize (NameString), NameString);
 | 
				
			||||||
  } else if (StrnCmp(NameString+StrLen(NameString)-StrLen(L".man"), L".man", StrLen(L".man"))==0) {
 | 
					  } else if (StrnCmp (NameString+StrLen (NameString)-StrLen (L".man"), L".man", StrLen (L".man")) == 0) {
 | 
				
			||||||
    Buffer = AllocateCopyPool(StrSize(NameString), NameString);
 | 
					    Buffer = AllocateCopyPool (StrSize (NameString), NameString);
 | 
				
			||||||
    if (Buffer != NULL) {
 | 
					    if (Buffer != NULL) {
 | 
				
			||||||
      SuffixStr = Buffer+StrLen(Buffer)-StrLen(L".man");
 | 
					      SuffixStr = Buffer+StrLen (Buffer)-StrLen (L".man");
 | 
				
			||||||
      StrnCpyS (SuffixStr, StrSize(L".man")/sizeof(CHAR16), L".efi", StrLen(L".efi"));
 | 
					      StrnCpyS (SuffixStr, StrSize (L".man")/sizeof (CHAR16), L".efi", StrLen (L".efi"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    Buffer = AllocateZeroPool(StrSize(NameString) + StrLen(L".efi")*sizeof(CHAR16));
 | 
					    Buffer = AllocateZeroPool (StrSize (NameString) + StrLen (L".efi")*sizeof (CHAR16));
 | 
				
			||||||
    if (Buffer != NULL) {
 | 
					    if (Buffer != NULL) {
 | 
				
			||||||
      StrnCpyS( Buffer,
 | 
					      StrnCpyS (
 | 
				
			||||||
                (StrSize(NameString) + StrLen(L".efi")*sizeof(CHAR16))/sizeof(CHAR16),
 | 
					        Buffer,
 | 
				
			||||||
                NameString,
 | 
					        (StrSize (NameString) + StrLen (L".efi")*sizeof (CHAR16))/sizeof (CHAR16),
 | 
				
			||||||
                StrLen(NameString)
 | 
					        NameString,
 | 
				
			||||||
                );
 | 
					        StrLen (NameString)
 | 
				
			||||||
      StrnCatS( Buffer,
 | 
					        );
 | 
				
			||||||
                (StrSize(NameString) + StrLen(L".efi")*sizeof(CHAR16))/sizeof(CHAR16),
 | 
					      StrnCatS (
 | 
				
			||||||
                L".efi",
 | 
					        Buffer,
 | 
				
			||||||
                StrLen(L".efi")
 | 
					        (StrSize (NameString) + StrLen (L".efi")*sizeof (CHAR16))/sizeof (CHAR16),
 | 
				
			||||||
                );
 | 
					        L".efi",
 | 
				
			||||||
 | 
					        StrLen (L".efi")
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return (Buffer);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return (Buffer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -103,34 +105,39 @@ GetExecuatableFileName (
 | 
				
			|||||||
  @return the new filename with .man as the extension.
 | 
					  @return the new filename with .man as the extension.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
GetManFileName(
 | 
					GetManFileName (
 | 
				
			||||||
  IN CONST CHAR16 *ManFileName
 | 
					  IN CONST CHAR16  *ManFileName
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16 *Buffer;
 | 
					  CHAR16  *Buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ManFileName == NULL) {
 | 
					  if (ManFileName == NULL) {
 | 
				
			||||||
    return (NULL);
 | 
					    return (NULL);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Fix the file name
 | 
					  // Fix the file name
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  if (StrnCmp(ManFileName+StrLen(ManFileName)-4, L".man", 4)==0) {
 | 
					  if (StrnCmp (ManFileName+StrLen (ManFileName)-4, L".man", 4) == 0) {
 | 
				
			||||||
    Buffer = AllocateCopyPool(StrSize(ManFileName), ManFileName);
 | 
					    Buffer = AllocateCopyPool (StrSize (ManFileName), ManFileName);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    Buffer = AllocateZeroPool(StrSize(ManFileName) + 4*sizeof(CHAR16));
 | 
					    Buffer = AllocateZeroPool (StrSize (ManFileName) + 4*sizeof (CHAR16));
 | 
				
			||||||
    if (Buffer != NULL) {
 | 
					    if (Buffer != NULL) {
 | 
				
			||||||
      StrnCpyS( Buffer,
 | 
					      StrnCpyS (
 | 
				
			||||||
                (StrSize(ManFileName) + 4*sizeof(CHAR16))/sizeof(CHAR16),
 | 
					        Buffer,
 | 
				
			||||||
                ManFileName,
 | 
					        (StrSize (ManFileName) + 4*sizeof (CHAR16))/sizeof (CHAR16),
 | 
				
			||||||
                StrLen(ManFileName)
 | 
					        ManFileName,
 | 
				
			||||||
                );
 | 
					        StrLen (ManFileName)
 | 
				
			||||||
      StrnCatS( Buffer,
 | 
					        );
 | 
				
			||||||
                (StrSize(ManFileName) + 4*sizeof(CHAR16))/sizeof(CHAR16),
 | 
					      StrnCatS (
 | 
				
			||||||
                L".man",
 | 
					        Buffer,
 | 
				
			||||||
                4
 | 
					        (StrSize (ManFileName) + 4*sizeof (CHAR16))/sizeof (CHAR16),
 | 
				
			||||||
                );
 | 
					        L".man",
 | 
				
			||||||
 | 
					        4
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (Buffer);
 | 
					  return (Buffer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -149,22 +156,23 @@ GetManFileName(
 | 
				
			|||||||
  @retval EFI_NOT_FOUND         The file was not found.
 | 
					  @retval EFI_NOT_FOUND         The file was not found.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SearchPathForFile(
 | 
					SearchPathForFile (
 | 
				
			||||||
  IN CONST CHAR16             *FileName,
 | 
					  IN CONST CHAR16        *FileName,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE       *Handle
 | 
					  OUT SHELL_FILE_HANDLE  *Handle
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16          *FullFileName;
 | 
					  CHAR16      *FullFileName;
 | 
				
			||||||
  EFI_STATUS      Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( FileName     == NULL
 | 
					  if (  (FileName     == NULL)
 | 
				
			||||||
    || Handle       == NULL
 | 
					     || (Handle       == NULL)
 | 
				
			||||||
    || StrLen(FileName) == 0
 | 
					     || (StrLen (FileName) == 0)
 | 
				
			||||||
   ){
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FullFileName = ShellFindFilePath(FileName);
 | 
					  FullFileName = ShellFindFilePath (FileName);
 | 
				
			||||||
  if (FullFileName == NULL) {
 | 
					  if (FullFileName == NULL) {
 | 
				
			||||||
    return (EFI_NOT_FOUND);
 | 
					    return (EFI_NOT_FOUND);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -172,8 +180,8 @@ SearchPathForFile(
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // now open that file
 | 
					  // now open that file
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = EfiShellOpenFileByName(FullFileName, Handle, EFI_FILE_MODE_READ);
 | 
					  Status = EfiShellOpenFileByName (FullFileName, Handle, EFI_FILE_MODE_READ);
 | 
				
			||||||
  FreePool(FullFileName);
 | 
					  FreePool (FullFileName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (Status);
 | 
					  return (Status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -197,7 +205,7 @@ SearchPathForFile(
 | 
				
			|||||||
                                an allocated buffer.
 | 
					                                an allocated buffer.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ManFileFindSections(
 | 
					ManFileFindSections (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE  Handle,
 | 
					  IN SHELL_FILE_HANDLE  Handle,
 | 
				
			||||||
  IN CONST CHAR16       *Sections,
 | 
					  IN CONST CHAR16       *Sections,
 | 
				
			||||||
  OUT CHAR16            **HelpText,
 | 
					  OUT CHAR16            **HelpText,
 | 
				
			||||||
@@ -205,75 +213,84 @@ ManFileFindSections(
 | 
				
			|||||||
  IN BOOLEAN            Ascii
 | 
					  IN BOOLEAN            Ascii
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS          Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
  CHAR16              *ReadLine;
 | 
					  CHAR16      *ReadLine;
 | 
				
			||||||
  UINTN               Size;
 | 
					  UINTN       Size;
 | 
				
			||||||
  BOOLEAN             CurrentlyReading;
 | 
					  BOOLEAN     CurrentlyReading;
 | 
				
			||||||
  CHAR16              *SectionName;
 | 
					  CHAR16      *SectionName;
 | 
				
			||||||
  UINTN               SectionLen;
 | 
					  UINTN       SectionLen;
 | 
				
			||||||
  BOOLEAN             Found;
 | 
					  BOOLEAN     Found;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( Handle     == NULL
 | 
					  if (  (Handle     == NULL)
 | 
				
			||||||
    || HelpText   == NULL
 | 
					     || (HelpText   == NULL)
 | 
				
			||||||
    || HelpSize   == NULL
 | 
					     || (HelpSize   == NULL)
 | 
				
			||||||
   ){
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status            = EFI_SUCCESS;
 | 
					  Status           = EFI_SUCCESS;
 | 
				
			||||||
  CurrentlyReading  = FALSE;
 | 
					  CurrentlyReading = FALSE;
 | 
				
			||||||
  Size              = 1024;
 | 
					  Size             = 1024;
 | 
				
			||||||
  Found             = FALSE;
 | 
					  Found            = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReadLine          = AllocateZeroPool(Size);
 | 
					  ReadLine = AllocateZeroPool (Size);
 | 
				
			||||||
  if (ReadLine == NULL) {
 | 
					  if (ReadLine == NULL) {
 | 
				
			||||||
    return (EFI_OUT_OF_RESOURCES);
 | 
					    return (EFI_OUT_OF_RESOURCES);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (;!ShellFileHandleEof(Handle);Size = 1024) {
 | 
					  for ( ; !ShellFileHandleEof (Handle); Size = 1024) {
 | 
				
			||||||
    Status = ShellFileHandleReadLine(Handle, ReadLine, &Size, TRUE, &Ascii);
 | 
					    Status = ShellFileHandleReadLine (Handle, ReadLine, &Size, TRUE, &Ascii);
 | 
				
			||||||
    if (ReadLine[0] == L'#') {
 | 
					    if (ReadLine[0] == L'#') {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // Skip comment lines
 | 
					      // Skip comment lines
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      continue;
 | 
					      continue;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // ignore too small of buffer...
 | 
					    // ignore too small of buffer...
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
					    if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
				
			||||||
      Status = EFI_SUCCESS;
 | 
					      Status = EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (EFI_ERROR(Status)) {
 | 
					
 | 
				
			||||||
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    } else if (StrnCmp(ReadLine, L".TH", 3) == 0) {
 | 
					    } else if (StrnCmp (ReadLine, L".TH", 3) == 0) {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // we hit the end of this commands section so stop.
 | 
					      // we hit the end of this commands section so stop.
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    } else if (StrnCmp(ReadLine, L".SH", 3) == 0) {
 | 
					    } else if (StrnCmp (ReadLine, L".SH", 3) == 0) {
 | 
				
			||||||
      if (Sections == NULL) {
 | 
					      if (Sections == NULL) {
 | 
				
			||||||
        CurrentlyReading = TRUE;
 | 
					        CurrentlyReading = TRUE;
 | 
				
			||||||
        continue;
 | 
					        continue;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // we found a section
 | 
					      // we found a section
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      if (CurrentlyReading) {
 | 
					      if (CurrentlyReading) {
 | 
				
			||||||
        CurrentlyReading = FALSE;
 | 
					        CurrentlyReading = FALSE;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // is this a section we want to read in?
 | 
					      // is this a section we want to read in?
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      for ( SectionName = ReadLine + 3
 | 
					      for ( SectionName = ReadLine + 3
 | 
				
			||||||
          ; *SectionName == L' '
 | 
					            ; *SectionName == L' '
 | 
				
			||||||
          ; SectionName++);
 | 
					            ; SectionName++)
 | 
				
			||||||
      SectionLen = StrLen(SectionName);
 | 
					      {
 | 
				
			||||||
      SectionName = StrStr(Sections, SectionName);
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      SectionLen  = StrLen (SectionName);
 | 
				
			||||||
 | 
					      SectionName = StrStr (Sections, SectionName);
 | 
				
			||||||
      if (SectionName == NULL) {
 | 
					      if (SectionName == NULL) {
 | 
				
			||||||
        continue;
 | 
					        continue;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if (*(SectionName + SectionLen) == CHAR_NULL || *(SectionName + SectionLen) == L',') {
 | 
					
 | 
				
			||||||
 | 
					      if ((*(SectionName + SectionLen) == CHAR_NULL) || (*(SectionName + SectionLen) == L',')) {
 | 
				
			||||||
        CurrentlyReading = TRUE;
 | 
					        CurrentlyReading = TRUE;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } else if (CurrentlyReading) {
 | 
					    } else if (CurrentlyReading) {
 | 
				
			||||||
@@ -281,15 +298,17 @@ ManFileFindSections(
 | 
				
			|||||||
      //
 | 
					      //
 | 
				
			||||||
      // copy and save the current line.
 | 
					      // copy and save the current line.
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      ASSERT((*HelpText == NULL && *HelpSize == 0) || (*HelpText != NULL));
 | 
					      ASSERT ((*HelpText == NULL && *HelpSize == 0) || (*HelpText != NULL));
 | 
				
			||||||
      StrnCatGrow (HelpText, HelpSize, ReadLine, 0);
 | 
					      StrnCatGrow (HelpText, HelpSize, ReadLine, 0);
 | 
				
			||||||
      StrnCatGrow (HelpText, HelpSize, L"\r\n", 0);
 | 
					      StrnCatGrow (HelpText, HelpSize, L"\r\n", 0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  FreePool(ReadLine);
 | 
					
 | 
				
			||||||
  if (!Found && !EFI_ERROR(Status)) {
 | 
					  FreePool (ReadLine);
 | 
				
			||||||
 | 
					  if (!Found && !EFI_ERROR (Status)) {
 | 
				
			||||||
    return (EFI_NOT_FOUND);
 | 
					    return (EFI_NOT_FOUND);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (Status);
 | 
					  return (Status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -315,12 +334,12 @@ ManFileFindSections(
 | 
				
			|||||||
  @retval FALSE  Line did not contain the Title Header
 | 
					  @retval FALSE  Line did not contain the Title Header
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
IsTitleHeader(
 | 
					IsTitleHeader (
 | 
				
			||||||
  IN CONST CHAR16       *Command,
 | 
					  IN CONST CHAR16  *Command,
 | 
				
			||||||
  IN CHAR16             *Line,
 | 
					  IN CHAR16        *Line,
 | 
				
			||||||
  OUT CHAR16            **BriefDesc OPTIONAL,
 | 
					  OUT CHAR16       **BriefDesc OPTIONAL,
 | 
				
			||||||
  OUT UINTN             *BriefSize OPTIONAL,
 | 
					  OUT UINTN        *BriefSize OPTIONAL,
 | 
				
			||||||
  OUT BOOLEAN           *Found
 | 
					  OUT BOOLEAN      *Found
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // The states of a simple state machine used to recognize a title header line
 | 
					  // The states of a simple state machine used to recognize a title header line
 | 
				
			||||||
@@ -334,86 +353,84 @@ IsTitleHeader(
 | 
				
			|||||||
  BOOLEAN      ReturnValue;  // TRUE if this the Title Header line of *some* MAN file.
 | 
					  BOOLEAN      ReturnValue;  // TRUE if this the Title Header line of *some* MAN file.
 | 
				
			||||||
  BOOLEAN      ReturnFound;  // TRUE if this the Title Header line of *the desired* MAN file.
 | 
					  BOOLEAN      ReturnFound;  // TRUE if this the Title Header line of *the desired* MAN file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReturnValue = FALSE;
 | 
					  ReturnValue  = FALSE;
 | 
				
			||||||
  ReturnFound = FALSE;
 | 
					  ReturnFound  = FALSE;
 | 
				
			||||||
  CommandIndex = 0;
 | 
					  CommandIndex = 0;
 | 
				
			||||||
  State = LookForThMacro;
 | 
					  State        = LookForThMacro;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  do {
 | 
					  do {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (*Line == L'\0') {
 | 
					    if (*Line == L'\0') {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (State) {
 | 
					    switch (State) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Handle "^\s*.TH\s"
 | 
					      // Handle "^\s*.TH\s"
 | 
				
			||||||
      // Go to state LookForCommandName if the title header macro is present; otherwise,
 | 
					      // Go to state LookForCommandName if the title header macro is present; otherwise,
 | 
				
			||||||
      // eat white space. If we see something other than white space, this is not a
 | 
					      // eat white space. If we see something other than white space, this is not a
 | 
				
			||||||
      // title header line.
 | 
					      // title header line.
 | 
				
			||||||
      case LookForThMacro:
 | 
					      case LookForThMacro:
 | 
				
			||||||
        if (StrnCmp (L".TH ", Line, 4) == 0 || StrnCmp (L".TH\t", Line, 4) == 0) {
 | 
					        if ((StrnCmp (L".TH ", Line, 4) == 0) || (StrnCmp (L".TH\t", Line, 4) == 0)) {
 | 
				
			||||||
          Line += 4;
 | 
					          Line += 4;
 | 
				
			||||||
          State = LookForCommandName;
 | 
					          State = LookForCommandName;
 | 
				
			||||||
        }
 | 
					        } else if ((*Line == L' ') || (*Line == L'\t')) {
 | 
				
			||||||
        else if (*Line == L' ' || *Line == L'\t') {
 | 
					 | 
				
			||||||
          Line++;
 | 
					          Line++;
 | 
				
			||||||
        }
 | 
					        } else {
 | 
				
			||||||
        else {
 | 
					 | 
				
			||||||
          State = Final;
 | 
					          State = Final;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      break;
 | 
					
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Handle "\s*"
 | 
					      // Handle "\s*"
 | 
				
			||||||
      // Eat any "extra" whitespace after the title header macro (we have already seen
 | 
					      // Eat any "extra" whitespace after the title header macro (we have already seen
 | 
				
			||||||
      // at least one white space character). Go to state CompareCommands when a
 | 
					      // at least one white space character). Go to state CompareCommands when a
 | 
				
			||||||
      // non-white space is seen.
 | 
					      // non-white space is seen.
 | 
				
			||||||
      case LookForCommandName:
 | 
					      case LookForCommandName:
 | 
				
			||||||
        if (*Line == L' ' || *Line == L'\t') {
 | 
					        if ((*Line == L' ') || (*Line == L'\t')) {
 | 
				
			||||||
          Line++;
 | 
					          Line++;
 | 
				
			||||||
        }
 | 
					        } else {
 | 
				
			||||||
        else {
 | 
					 | 
				
			||||||
          ReturnValue = TRUE;  // This is *some* command's title header line.
 | 
					          ReturnValue = TRUE;  // This is *some* command's title header line.
 | 
				
			||||||
          State = CompareCommands;
 | 
					          State       = CompareCommands;
 | 
				
			||||||
          // Do not increment Line; it points to the first character of the command
 | 
					          // Do not increment Line; it points to the first character of the command
 | 
				
			||||||
          // name on the title header line.
 | 
					          // name on the title header line.
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      break;
 | 
					
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Handle "(\S)\s"
 | 
					      // Handle "(\S)\s"
 | 
				
			||||||
      // Compare Command to the title header command name, ignoring case. When we
 | 
					      // Compare Command to the title header command name, ignoring case. When we
 | 
				
			||||||
      // reach the end of the command (i.e. we see white space), the next state
 | 
					      // reach the end of the command (i.e. we see white space), the next state
 | 
				
			||||||
      // depends on whether the caller wants a copy of the Brief Description.
 | 
					      // depends on whether the caller wants a copy of the Brief Description.
 | 
				
			||||||
      case CompareCommands:
 | 
					      case CompareCommands:
 | 
				
			||||||
        if (*Line == L' ' || *Line == L'\t') {
 | 
					        if ((*Line == L' ') || (*Line == L'\t')) {
 | 
				
			||||||
          ReturnFound = TRUE;  // This is the desired command's title header line.
 | 
					          ReturnFound = TRUE;  // This is the desired command's title header line.
 | 
				
			||||||
          State = (BriefDesc == NULL) ? Final : GetBriefDescription;
 | 
					          State       = (BriefDesc == NULL) ? Final : GetBriefDescription;
 | 
				
			||||||
        }
 | 
					        } else if (CharToUpper (*Line) != CharToUpper (*(Command + CommandIndex++))) {
 | 
				
			||||||
        else if (CharToUpper (*Line) != CharToUpper (*(Command + CommandIndex++))) {
 | 
					 | 
				
			||||||
          State = Final;
 | 
					          State = Final;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Line++;
 | 
					        Line++;
 | 
				
			||||||
      break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Handle "[\s01]*(.*)$"
 | 
					      // Handle "[\s01]*(.*)$"
 | 
				
			||||||
      // Skip whitespace, '0', and '1' characters, if any, prior to the brief description.
 | 
					      // Skip whitespace, '0', and '1' characters, if any, prior to the brief description.
 | 
				
			||||||
      // Return the description to the caller.
 | 
					      // Return the description to the caller.
 | 
				
			||||||
      case GetBriefDescription:
 | 
					      case GetBriefDescription:
 | 
				
			||||||
        if (*Line != L' ' && *Line != L'\t' && *Line != L'0' && *Line != L'1') {
 | 
					        if ((*Line != L' ') && (*Line != L'\t') && (*Line != L'0') && (*Line != L'1')) {
 | 
				
			||||||
          *BriefSize = StrSize(Line);
 | 
					          *BriefSize = StrSize (Line);
 | 
				
			||||||
          *BriefDesc = AllocateZeroPool(*BriefSize);
 | 
					          *BriefDesc = AllocateZeroPool (*BriefSize);
 | 
				
			||||||
          if (*BriefDesc != NULL) {
 | 
					          if (*BriefDesc != NULL) {
 | 
				
			||||||
            StrCpyS(*BriefDesc, (*BriefSize)/sizeof(CHAR16), Line);
 | 
					            StrCpyS (*BriefDesc, (*BriefSize)/sizeof (CHAR16), Line);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          State = Final;
 | 
					          State = Final;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Line++;
 | 
					        Line++;
 | 
				
			||||||
      break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      default:
 | 
					      default:
 | 
				
			||||||
       break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  } while (State < Final);
 | 
					  } while (State < Final);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *Found = ReturnFound;
 | 
					  *Found = ReturnFound;
 | 
				
			||||||
@@ -441,7 +458,7 @@ IsTitleHeader(
 | 
				
			|||||||
                                an allocated buffer if requested.
 | 
					                                an allocated buffer if requested.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ManFileFindTitleSection(
 | 
					ManFileFindTitleSection (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE  Handle,
 | 
					  IN SHELL_FILE_HANDLE  Handle,
 | 
				
			||||||
  IN CONST CHAR16       *Command,
 | 
					  IN CONST CHAR16       *Command,
 | 
				
			||||||
  OUT CHAR16            **BriefDesc OPTIONAL,
 | 
					  OUT CHAR16            **BriefDesc OPTIONAL,
 | 
				
			||||||
@@ -455,18 +472,19 @@ ManFileFindTitleSection(
 | 
				
			|||||||
  BOOLEAN     Found;
 | 
					  BOOLEAN     Found;
 | 
				
			||||||
  UINTN       Start;
 | 
					  UINTN       Start;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( Handle     == NULL
 | 
					  if (  (Handle     == NULL)
 | 
				
			||||||
    || Command    == NULL
 | 
					     || (Command    == NULL)
 | 
				
			||||||
    || (BriefDesc != NULL && BriefSize == NULL)
 | 
					     || ((BriefDesc != NULL) && (BriefSize == NULL))
 | 
				
			||||||
   ){
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status    = EFI_SUCCESS;
 | 
					  Status = EFI_SUCCESS;
 | 
				
			||||||
  Size      = 1024;
 | 
					  Size   = 1024;
 | 
				
			||||||
  Found     = FALSE;
 | 
					  Found  = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReadLine  = AllocateZeroPool(Size);
 | 
					  ReadLine = AllocateZeroPool (Size);
 | 
				
			||||||
  if (ReadLine == NULL) {
 | 
					  if (ReadLine == NULL) {
 | 
				
			||||||
    return (EFI_OUT_OF_RESOURCES);
 | 
					    return (EFI_OUT_OF_RESOURCES);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -474,20 +492,21 @@ ManFileFindTitleSection(
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // Do not pass any leading path information that may be present to IsTitleHeader().
 | 
					  // Do not pass any leading path information that may be present to IsTitleHeader().
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Start = StrLen(Command);
 | 
					  Start = StrLen (Command);
 | 
				
			||||||
  while ((Start != 0)
 | 
					  while (  (Start != 0)
 | 
				
			||||||
         && (*(Command + Start - 1) != L'\\')
 | 
					        && (*(Command + Start - 1) != L'\\')
 | 
				
			||||||
         && (*(Command + Start - 1) != L'/')
 | 
					        && (*(Command + Start - 1) != L'/')
 | 
				
			||||||
         && (*(Command + Start - 1) != L':')) {
 | 
					        && (*(Command + Start - 1) != L':'))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    --Start;
 | 
					    --Start;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (;!ShellFileHandleEof(Handle);Size = 1024) {
 | 
					  for ( ; !ShellFileHandleEof (Handle); Size = 1024) {
 | 
				
			||||||
   Status = ShellFileHandleReadLine(Handle, ReadLine, &Size, TRUE, Ascii);
 | 
					    Status = ShellFileHandleReadLine (Handle, ReadLine, &Size, TRUE, Ascii);
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // ignore too small of buffer...
 | 
					    // ignore too small of buffer...
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    if (EFI_ERROR(Status) && Status != EFI_BUFFER_TOO_SMALL) {
 | 
					    if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -498,7 +517,7 @@ ManFileFindTitleSection(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FreePool(ReadLine);
 | 
					  FreePool (ReadLine);
 | 
				
			||||||
  return (Status);
 | 
					  return (Status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -533,32 +552,33 @@ ManFileFindTitleSection(
 | 
				
			|||||||
  @retval EFI_NOT_FOUND         There is no help text available for Command.
 | 
					  @retval EFI_NOT_FOUND         There is no help text available for Command.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ProcessManFile(
 | 
					ProcessManFile (
 | 
				
			||||||
  IN CONST CHAR16 *ManFileName,
 | 
					  IN CONST CHAR16  *ManFileName,
 | 
				
			||||||
  IN CONST CHAR16 *Command,
 | 
					  IN CONST CHAR16  *Command,
 | 
				
			||||||
  IN CONST CHAR16 *Sections OPTIONAL,
 | 
					  IN CONST CHAR16  *Sections OPTIONAL,
 | 
				
			||||||
  OUT CHAR16      **BriefDesc OPTIONAL,
 | 
					  OUT CHAR16       **BriefDesc OPTIONAL,
 | 
				
			||||||
  OUT CHAR16      **HelpText
 | 
					  OUT CHAR16       **HelpText
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16            *TempString;
 | 
					  CHAR16                       *TempString;
 | 
				
			||||||
  SHELL_FILE_HANDLE FileHandle;
 | 
					  SHELL_FILE_HANDLE            FileHandle;
 | 
				
			||||||
  EFI_HANDLE        CmdFileImgHandle;
 | 
					  EFI_HANDLE                   CmdFileImgHandle;
 | 
				
			||||||
  EFI_STATUS        Status;
 | 
					  EFI_STATUS                   Status;
 | 
				
			||||||
  UINTN             HelpSize;
 | 
					  UINTN                        HelpSize;
 | 
				
			||||||
  UINTN             BriefSize;
 | 
					  UINTN                        BriefSize;
 | 
				
			||||||
  UINTN             StringIdWalker;
 | 
					  UINTN                        StringIdWalker;
 | 
				
			||||||
  BOOLEAN           Ascii;
 | 
					  BOOLEAN                      Ascii;
 | 
				
			||||||
  CHAR16            *CmdFileName;
 | 
					  CHAR16                       *CmdFileName;
 | 
				
			||||||
  CHAR16            *CmdFilePathName;
 | 
					  CHAR16                       *CmdFilePathName;
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL      *FileDevPath;
 | 
					  EFI_DEVICE_PATH_PROTOCOL     *FileDevPath;
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL      *DevPath;
 | 
					  EFI_DEVICE_PATH_PROTOCOL     *DevPath;
 | 
				
			||||||
  EFI_HII_PACKAGE_LIST_HEADER   *PackageListHeader;
 | 
					  EFI_HII_PACKAGE_LIST_HEADER  *PackageListHeader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( ManFileName == NULL
 | 
					  if (  (ManFileName == NULL)
 | 
				
			||||||
    || Command     == NULL
 | 
					     || (Command     == NULL)
 | 
				
			||||||
    || HelpText    == NULL
 | 
					     || (HelpText    == NULL)
 | 
				
			||||||
   ){
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    return (EFI_INVALID_PARAMETER);
 | 
					    return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -577,47 +597,49 @@ ProcessManFile(
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // See if it's in HII first
 | 
					  // See if it's in HII first
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  TempString = ShellCommandGetCommandHelp(Command);
 | 
					  TempString = ShellCommandGetCommandHelp (Command);
 | 
				
			||||||
  if (TempString != NULL) {
 | 
					  if (TempString != NULL) {
 | 
				
			||||||
    FileHandle = ConvertEfiFileProtocolToShellHandle (CreateFileInterfaceMem (TRUE), NULL);
 | 
					    FileHandle = ConvertEfiFileProtocolToShellHandle (CreateFileInterfaceMem (TRUE), NULL);
 | 
				
			||||||
    HelpSize = StrLen (TempString) * sizeof (CHAR16);
 | 
					    HelpSize   = StrLen (TempString) * sizeof (CHAR16);
 | 
				
			||||||
    ShellWriteFile (FileHandle, &HelpSize, TempString);
 | 
					    ShellWriteFile (FileHandle, &HelpSize, TempString);
 | 
				
			||||||
    ShellSetFilePosition (FileHandle, 0);
 | 
					    ShellSetFilePosition (FileHandle, 0);
 | 
				
			||||||
    HelpSize  = 0;
 | 
					    HelpSize  = 0;
 | 
				
			||||||
    BriefSize = 0;
 | 
					    BriefSize = 0;
 | 
				
			||||||
    Status = ManFileFindTitleSection(FileHandle, Command, BriefDesc, &BriefSize, &Ascii);
 | 
					    Status    = ManFileFindTitleSection (FileHandle, Command, BriefDesc, &BriefSize, &Ascii);
 | 
				
			||||||
    if (!EFI_ERROR(Status) && HelpText != NULL){
 | 
					    if (!EFI_ERROR (Status) && (HelpText != NULL)) {
 | 
				
			||||||
      Status = ManFileFindSections(FileHandle, Sections, HelpText, &HelpSize, Ascii);
 | 
					      Status = ManFileFindSections (FileHandle, Sections, HelpText, &HelpSize, Ascii);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ShellCloseFile (&FileHandle);
 | 
					    ShellCloseFile (&FileHandle);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // If the image is a external app, check .MAN file first.
 | 
					    // If the image is a external app, check .MAN file first.
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    FileHandle    = NULL;
 | 
					    FileHandle = NULL;
 | 
				
			||||||
    TempString  = GetManFileName(ManFileName);
 | 
					    TempString = GetManFileName (ManFileName);
 | 
				
			||||||
    if (TempString == NULL) {
 | 
					    if (TempString == NULL) {
 | 
				
			||||||
      return (EFI_INVALID_PARAMETER);
 | 
					      return (EFI_INVALID_PARAMETER);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Status = SearchPathForFile(TempString, &FileHandle);
 | 
					    Status = SearchPathForFile (TempString, &FileHandle);
 | 
				
			||||||
    if (EFI_ERROR(Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      FileDevPath = FileDevicePath(NULL, TempString);
 | 
					      FileDevPath = FileDevicePath (NULL, TempString);
 | 
				
			||||||
      DevPath = AppendDevicePath (ShellInfoObject.ImageDevPath, FileDevPath);
 | 
					      DevPath     = AppendDevicePath (ShellInfoObject.ImageDevPath, FileDevPath);
 | 
				
			||||||
      Status = InternalOpenFileDevicePath(DevPath, &FileHandle, EFI_FILE_MODE_READ, 0);
 | 
					      Status      = InternalOpenFileDevicePath (DevPath, &FileHandle, EFI_FILE_MODE_READ, 0);
 | 
				
			||||||
      SHELL_FREE_NON_NULL(FileDevPath);
 | 
					      SHELL_FREE_NON_NULL (FileDevPath);
 | 
				
			||||||
      SHELL_FREE_NON_NULL(DevPath);
 | 
					      SHELL_FREE_NON_NULL (DevPath);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!EFI_ERROR(Status)) {
 | 
					    if (!EFI_ERROR (Status)) {
 | 
				
			||||||
      HelpSize  = 0;
 | 
					      HelpSize  = 0;
 | 
				
			||||||
      BriefSize = 0;
 | 
					      BriefSize = 0;
 | 
				
			||||||
      Status = ManFileFindTitleSection(FileHandle, Command, BriefDesc, &BriefSize, &Ascii);
 | 
					      Status    = ManFileFindTitleSection (FileHandle, Command, BriefDesc, &BriefSize, &Ascii);
 | 
				
			||||||
      if (!EFI_ERROR(Status) && HelpText != NULL){
 | 
					      if (!EFI_ERROR (Status) && (HelpText != NULL)) {
 | 
				
			||||||
        Status = ManFileFindSections(FileHandle, Sections, HelpText, &HelpSize, Ascii);
 | 
					        Status = ManFileFindSections (FileHandle, Sections, HelpText, &HelpSize, Ascii);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      ShellInfoObject.NewEfiShellProtocol->CloseFile(FileHandle);
 | 
					
 | 
				
			||||||
      if (!EFI_ERROR(Status)) {
 | 
					      ShellInfoObject.NewEfiShellProtocol->CloseFile (FileHandle);
 | 
				
			||||||
 | 
					      if (!EFI_ERROR (Status)) {
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        // Get help text from .MAN file success.
 | 
					        // Get help text from .MAN file success.
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
@@ -628,23 +650,25 @@ ProcessManFile(
 | 
				
			|||||||
    //
 | 
					    //
 | 
				
			||||||
    // Load the app image to check  EFI_HII_PACKAGE_LIST_PROTOCOL.
 | 
					    // Load the app image to check  EFI_HII_PACKAGE_LIST_PROTOCOL.
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    CmdFileName     = GetExecuatableFileName(TempString);
 | 
					    CmdFileName = GetExecuatableFileName (TempString);
 | 
				
			||||||
    if (CmdFileName == NULL) {
 | 
					    if (CmdFileName == NULL) {
 | 
				
			||||||
      Status = EFI_OUT_OF_RESOURCES;
 | 
					      Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
      goto Done;
 | 
					      goto Done;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // If the file in CWD then use the file name, else use the full
 | 
					    // If the file in CWD then use the file name, else use the full
 | 
				
			||||||
    // path name.
 | 
					    // path name.
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    CmdFilePathName = ShellFindFilePath(CmdFileName);
 | 
					    CmdFilePathName = ShellFindFilePath (CmdFileName);
 | 
				
			||||||
    if (CmdFilePathName == NULL) {
 | 
					    if (CmdFilePathName == NULL) {
 | 
				
			||||||
      Status = EFI_NOT_FOUND;
 | 
					      Status = EFI_NOT_FOUND;
 | 
				
			||||||
      goto Done;
 | 
					      goto Done;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    DevPath = ShellInfoObject.NewEfiShellProtocol->GetDevicePathFromFilePath(CmdFilePathName);
 | 
					
 | 
				
			||||||
    Status      = gBS->LoadImage(FALSE, gImageHandle, DevPath, NULL, 0, &CmdFileImgHandle);
 | 
					    DevPath = ShellInfoObject.NewEfiShellProtocol->GetDevicePathFromFilePath (CmdFilePathName);
 | 
				
			||||||
    if(EFI_ERROR(Status)) {
 | 
					    Status  = gBS->LoadImage (FALSE, gImageHandle, DevPath, NULL, 0, &CmdFileImgHandle);
 | 
				
			||||||
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // With EFI_SECURITY_VIOLATION retval, the Image was loaded and an ImageHandle was created
 | 
					      // With EFI_SECURITY_VIOLATION retval, the Image was loaded and an ImageHandle was created
 | 
				
			||||||
      // with a valid EFI_LOADED_IMAGE_PROTOCOL, but the image can not be started right now.
 | 
					      // with a valid EFI_LOADED_IMAGE_PROTOCOL, but the image can not be started right now.
 | 
				
			||||||
@@ -654,18 +678,20 @@ ProcessManFile(
 | 
				
			|||||||
      if (Status == EFI_SECURITY_VIOLATION) {
 | 
					      if (Status == EFI_SECURITY_VIOLATION) {
 | 
				
			||||||
        gBS->UnloadImage (CmdFileImgHandle);
 | 
					        gBS->UnloadImage (CmdFileImgHandle);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      *HelpText = NULL;
 | 
					      *HelpText = NULL;
 | 
				
			||||||
      goto Done;
 | 
					      goto Done;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Status = gBS->OpenProtocol(
 | 
					
 | 
				
			||||||
 | 
					    Status = gBS->OpenProtocol (
 | 
				
			||||||
                    CmdFileImgHandle,
 | 
					                    CmdFileImgHandle,
 | 
				
			||||||
                    &gEfiHiiPackageListProtocolGuid,
 | 
					                    &gEfiHiiPackageListProtocolGuid,
 | 
				
			||||||
                    (VOID**)&PackageListHeader,
 | 
					                    (VOID **)&PackageListHeader,
 | 
				
			||||||
                    gImageHandle,
 | 
					                    gImageHandle,
 | 
				
			||||||
                    NULL,
 | 
					                    NULL,
 | 
				
			||||||
                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
					                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
    if(EFI_ERROR(Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      *HelpText = NULL;
 | 
					      *HelpText = NULL;
 | 
				
			||||||
      goto Done;
 | 
					      goto Done;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -679,60 +705,62 @@ ProcessManFile(
 | 
				
			|||||||
                    EFI_NATIVE_INTERFACE,
 | 
					                    EFI_NATIVE_INTERFACE,
 | 
				
			||||||
                    &mShellManHiiDevicePath
 | 
					                    &mShellManHiiDevicePath
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
    if (EFI_ERROR(Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      goto Done;
 | 
					      goto Done;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Status = gHiiDatabase->NewPackageList (
 | 
					    Status = gHiiDatabase->NewPackageList (
 | 
				
			||||||
                            gHiiDatabase,
 | 
					                             gHiiDatabase,
 | 
				
			||||||
                            PackageListHeader,
 | 
					                             PackageListHeader,
 | 
				
			||||||
                            mShellManDriverHandle,
 | 
					                             mShellManDriverHandle,
 | 
				
			||||||
                            &mShellManHiiHandle
 | 
					                             &mShellManHiiHandle
 | 
				
			||||||
                            );
 | 
					                             );
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      goto Done;
 | 
					      goto Done;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    StringIdWalker = 1;
 | 
					    StringIdWalker = 1;
 | 
				
			||||||
    do {
 | 
					    do {
 | 
				
			||||||
        SHELL_FREE_NON_NULL(TempString);
 | 
					      SHELL_FREE_NON_NULL (TempString);
 | 
				
			||||||
        if (BriefDesc != NULL) {
 | 
					      if (BriefDesc != NULL) {
 | 
				
			||||||
          SHELL_FREE_NON_NULL(*BriefDesc);
 | 
					        SHELL_FREE_NON_NULL (*BriefDesc);
 | 
				
			||||||
        }
 | 
					      }
 | 
				
			||||||
        TempString = HiiGetString (mShellManHiiHandle, (EFI_STRING_ID)StringIdWalker, NULL);
 | 
					 | 
				
			||||||
        if (TempString == NULL) {
 | 
					 | 
				
			||||||
          Status = EFI_NOT_FOUND;
 | 
					 | 
				
			||||||
          goto Done;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        FileHandle = ConvertEfiFileProtocolToShellHandle (CreateFileInterfaceMem (TRUE), NULL);
 | 
					 | 
				
			||||||
        HelpSize = StrLen (TempString) * sizeof (CHAR16);
 | 
					 | 
				
			||||||
        ShellWriteFile (FileHandle, &HelpSize, TempString);
 | 
					 | 
				
			||||||
        ShellSetFilePosition (FileHandle, 0);
 | 
					 | 
				
			||||||
        HelpSize  = 0;
 | 
					 | 
				
			||||||
        BriefSize = 0;
 | 
					 | 
				
			||||||
        Status = ManFileFindTitleSection(FileHandle, Command, BriefDesc, &BriefSize, &Ascii);
 | 
					 | 
				
			||||||
        if (!EFI_ERROR(Status) && HelpText != NULL){
 | 
					 | 
				
			||||||
          Status = ManFileFindSections(FileHandle, Sections, HelpText, &HelpSize, Ascii);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        ShellCloseFile (&FileHandle);
 | 
					 | 
				
			||||||
        if (!EFI_ERROR(Status)){
 | 
					 | 
				
			||||||
          //
 | 
					 | 
				
			||||||
          // Found what we need and return
 | 
					 | 
				
			||||||
          //
 | 
					 | 
				
			||||||
          goto Done;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        StringIdWalker += 1;
 | 
					      TempString = HiiGetString (mShellManHiiHandle, (EFI_STRING_ID)StringIdWalker, NULL);
 | 
				
			||||||
 | 
					      if (TempString == NULL) {
 | 
				
			||||||
 | 
					        Status = EFI_NOT_FOUND;
 | 
				
			||||||
 | 
					        goto Done;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FileHandle = ConvertEfiFileProtocolToShellHandle (CreateFileInterfaceMem (TRUE), NULL);
 | 
				
			||||||
 | 
					      HelpSize   = StrLen (TempString) * sizeof (CHAR16);
 | 
				
			||||||
 | 
					      ShellWriteFile (FileHandle, &HelpSize, TempString);
 | 
				
			||||||
 | 
					      ShellSetFilePosition (FileHandle, 0);
 | 
				
			||||||
 | 
					      HelpSize  = 0;
 | 
				
			||||||
 | 
					      BriefSize = 0;
 | 
				
			||||||
 | 
					      Status    = ManFileFindTitleSection (FileHandle, Command, BriefDesc, &BriefSize, &Ascii);
 | 
				
			||||||
 | 
					      if (!EFI_ERROR (Status) && (HelpText != NULL)) {
 | 
				
			||||||
 | 
					        Status = ManFileFindSections (FileHandle, Sections, HelpText, &HelpSize, Ascii);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      ShellCloseFile (&FileHandle);
 | 
				
			||||||
 | 
					      if (!EFI_ERROR (Status)) {
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // Found what we need and return
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        goto Done;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      StringIdWalker += 1;
 | 
				
			||||||
    } while (StringIdWalker < 0xFFFF && TempString != NULL);
 | 
					    } while (StringIdWalker < 0xFFFF && TempString != NULL);
 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Done:
 | 
					Done:
 | 
				
			||||||
  if (mShellManDriverHandle != NULL) {
 | 
					  if (mShellManDriverHandle != NULL) {
 | 
				
			||||||
    gBS->UninstallProtocolInterface (
 | 
					    gBS->UninstallProtocolInterface (
 | 
				
			||||||
            mShellManDriverHandle,
 | 
					           mShellManDriverHandle,
 | 
				
			||||||
            &gEfiDevicePathProtocolGuid,
 | 
					           &gEfiDevicePathProtocolGuid,
 | 
				
			||||||
            &mShellManHiiDevicePath
 | 
					           &mShellManHiiDevicePath
 | 
				
			||||||
           );
 | 
					           );
 | 
				
			||||||
    mShellManDriverHandle = NULL;
 | 
					    mShellManDriverHandle = NULL;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -746,12 +774,11 @@ Done:
 | 
				
			|||||||
    Status = gBS->UnloadImage (CmdFileImgHandle);
 | 
					    Status = gBS->UnloadImage (CmdFileImgHandle);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SHELL_FREE_NON_NULL(TempString);
 | 
					  SHELL_FREE_NON_NULL (TempString);
 | 
				
			||||||
  SHELL_FREE_NON_NULL(CmdFileName);
 | 
					  SHELL_FREE_NON_NULL (CmdFileName);
 | 
				
			||||||
  SHELL_FREE_NON_NULL(CmdFilePathName);
 | 
					  SHELL_FREE_NON_NULL (CmdFilePathName);
 | 
				
			||||||
  SHELL_FREE_NON_NULL(FileDevPath);
 | 
					  SHELL_FREE_NON_NULL (FileDevPath);
 | 
				
			||||||
  SHELL_FREE_NON_NULL(DevPath);
 | 
					  SHELL_FREE_NON_NULL (DevPath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (Status);
 | 
					  return (Status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,12 +39,12 @@
 | 
				
			|||||||
  @retval EFI_NOT_FOUND         There is no help text available for Command.
 | 
					  @retval EFI_NOT_FOUND         There is no help text available for Command.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ProcessManFile(
 | 
					ProcessManFile (
 | 
				
			||||||
  IN CONST CHAR16 *ManFileName,
 | 
					  IN CONST CHAR16  *ManFileName,
 | 
				
			||||||
  IN CONST CHAR16 *Command,
 | 
					  IN CONST CHAR16  *Command,
 | 
				
			||||||
  IN CONST CHAR16 *Sections OPTIONAL,
 | 
					  IN CONST CHAR16  *Sections OPTIONAL,
 | 
				
			||||||
  OUT CHAR16      **BriefDesc,
 | 
					  OUT CHAR16       **BriefDesc,
 | 
				
			||||||
  OUT CHAR16      **HelpText
 | 
					  OUT CHAR16       **HelpText
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -66,7 +66,7 @@ ProcessManFile(
 | 
				
			|||||||
                                an allocated buffer.
 | 
					                                an allocated buffer.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ManFileFindSections(
 | 
					ManFileFindSections (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE  Handle,
 | 
					  IN SHELL_FILE_HANDLE  Handle,
 | 
				
			||||||
  IN CONST CHAR16       *Sections,
 | 
					  IN CONST CHAR16       *Sections,
 | 
				
			||||||
  OUT CHAR16            **HelpText,
 | 
					  OUT CHAR16            **HelpText,
 | 
				
			||||||
@@ -75,4 +75,3 @@ ManFileFindSections(
 | 
				
			|||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_SHELL_MAN_FILE_PARSER_HEADER_
 | 
					#endif //_SHELL_MAN_FILE_PARSER_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -75,7 +75,7 @@ CleanUpShellParametersProtocol (
 | 
				
			|||||||
  @retval   EFI_OUT_OF_RESOURCES        a memory allocation failed.
 | 
					  @retval   EFI_OUT_OF_RESOURCES        a memory allocation failed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
UpdateArgcArgv(
 | 
					UpdateArgcArgv (
 | 
				
			||||||
  IN OUT EFI_SHELL_PARAMETERS_PROTOCOL  *ShellParameters,
 | 
					  IN OUT EFI_SHELL_PARAMETERS_PROTOCOL  *ShellParameters,
 | 
				
			||||||
  IN CONST CHAR16                       *NewCommandLine,
 | 
					  IN CONST CHAR16                       *NewCommandLine,
 | 
				
			||||||
  IN SHELL_OPERATION_TYPES              Type,
 | 
					  IN SHELL_OPERATION_TYPES              Type,
 | 
				
			||||||
@@ -93,19 +93,19 @@ UpdateArgcArgv(
 | 
				
			|||||||
  @param[in] OldArgc                    pointer to old number of items in Argv list
 | 
					  @param[in] OldArgc                    pointer to old number of items in Argv list
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
RestoreArgcArgv(
 | 
					RestoreArgcArgv (
 | 
				
			||||||
  IN OUT EFI_SHELL_PARAMETERS_PROTOCOL  *ShellParameters,
 | 
					  IN OUT EFI_SHELL_PARAMETERS_PROTOCOL  *ShellParameters,
 | 
				
			||||||
  IN CHAR16                             ***OldArgv,
 | 
					  IN CHAR16                             ***OldArgv,
 | 
				
			||||||
  IN UINTN                              *OldArgc
 | 
					  IN UINTN                              *OldArgc
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  EFI_SIMPLE_TEXT_INPUT_PROTOCOL        *ConIn;
 | 
					  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *ConIn;
 | 
				
			||||||
  EFI_HANDLE                            ConInHandle;
 | 
					  EFI_HANDLE                         ConInHandle;
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL       *ConOut;
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *ConOut;
 | 
				
			||||||
  EFI_HANDLE                            ConOutHandle;
 | 
					  EFI_HANDLE                         ConOutHandle;
 | 
				
			||||||
  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL       *ErrOut;
 | 
					  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *ErrOut;
 | 
				
			||||||
  EFI_HANDLE                            ErrOutHandle;
 | 
					  EFI_HANDLE                         ErrOutHandle;
 | 
				
			||||||
} SYSTEM_TABLE_INFO;
 | 
					} SYSTEM_TABLE_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -126,7 +126,7 @@ typedef struct {
 | 
				
			|||||||
  @retval   EFI_OUT_OF_RESOURCES        A memory allocation failed.
 | 
					  @retval   EFI_OUT_OF_RESOURCES        A memory allocation failed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
UpdateStdInStdOutStdErr(
 | 
					UpdateStdInStdOutStdErr (
 | 
				
			||||||
  IN OUT EFI_SHELL_PARAMETERS_PROTOCOL  *ShellParameters,
 | 
					  IN OUT EFI_SHELL_PARAMETERS_PROTOCOL  *ShellParameters,
 | 
				
			||||||
  IN CHAR16                             *NewCommandLine,
 | 
					  IN CHAR16                             *NewCommandLine,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE                 *OldStdIn,
 | 
					  OUT SHELL_FILE_HANDLE                 *OldStdIn,
 | 
				
			||||||
@@ -172,11 +172,11 @@ RestoreStdInStdOutStdErr (
 | 
				
			|||||||
  @return EFI_OUT_OF_RESOURCES  a memory allocation failed.
 | 
					  @return EFI_OUT_OF_RESOURCES  a memory allocation failed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ParseCommandLineToArgs(
 | 
					ParseCommandLineToArgs (
 | 
				
			||||||
  IN CONST CHAR16 *CommandLine,
 | 
					  IN CONST CHAR16  *CommandLine,
 | 
				
			||||||
  IN BOOLEAN      StripQuotation,
 | 
					  IN BOOLEAN       StripQuotation,
 | 
				
			||||||
  IN OUT CHAR16   ***Argv,
 | 
					  IN OUT CHAR16    ***Argv,
 | 
				
			||||||
  IN OUT UINTN    *Argc
 | 
					  IN OUT UINTN     *Argc
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -200,7 +200,7 @@ ParseCommandLineToArgs(
 | 
				
			|||||||
  @return   EFI_NOT_FOUND         A closing " could not be found on the specified string
 | 
					  @return   EFI_NOT_FOUND         A closing " could not be found on the specified string
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
GetNextParameter(
 | 
					GetNextParameter (
 | 
				
			||||||
  IN OUT CHAR16   **Walker,
 | 
					  IN OUT CHAR16   **Walker,
 | 
				
			||||||
  IN OUT CHAR16   **TempParameter,
 | 
					  IN OUT CHAR16   **TempParameter,
 | 
				
			||||||
  IN CONST UINTN  Length,
 | 
					  IN CONST UINTN  Length,
 | 
				
			||||||
@@ -208,4 +208,3 @@ GetNextParameter(
 | 
				
			|||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_SHELL_PARAMETERS_PROTOCOL_PROVIDER_HEADER_
 | 
					#endif //_SHELL_PARAMETERS_PROTOCOL_PROVIDER_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -14,13 +14,13 @@
 | 
				
			|||||||
#include "Shell.h"
 | 
					#include "Shell.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY                Link;
 | 
					  LIST_ENTRY            Link;
 | 
				
			||||||
  EFI_SHELL_PROTOCOL        *Interface;
 | 
					  EFI_SHELL_PROTOCOL    *Interface;
 | 
				
			||||||
  EFI_HANDLE                Handle;
 | 
					  EFI_HANDLE            Handle;
 | 
				
			||||||
} SHELL_PROTOCOL_HANDLE_LIST;
 | 
					} SHELL_PROTOCOL_HANDLE_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// flags values...
 | 
					// flags values...
 | 
				
			||||||
#define SHELL_MAP_FLAGS_CONSIST BIT1
 | 
					#define SHELL_MAP_FLAGS_CONSIST  BIT1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Function to create and install on the current handle.
 | 
					  Function to create and install on the current handle.
 | 
				
			||||||
@@ -87,9 +87,9 @@ CleanUpShellEnvironment (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellSetMap(
 | 
					EfiShellSetMap (
 | 
				
			||||||
  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL,
 | 
					  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath OPTIONAL,
 | 
				
			||||||
  IN CONST CHAR16 *Mapping
 | 
					  IN CONST CHAR16                    *Mapping
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -107,8 +107,8 @@ EfiShellSetMap(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CONST EFI_DEVICE_PATH_PROTOCOL *
 | 
					CONST EFI_DEVICE_PATH_PROTOCOL *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetDevicePathFromMap(
 | 
					EfiShellGetDevicePathFromMap (
 | 
				
			||||||
  IN CONST CHAR16 *Mapping
 | 
					  IN CONST CHAR16  *Mapping
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -130,8 +130,8 @@ EfiShellGetDevicePathFromMap(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16 *
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetMapFromDevicePath(
 | 
					EfiShellGetMapFromDevicePath (
 | 
				
			||||||
  IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath
 | 
					  IN OUT EFI_DEVICE_PATH_PROTOCOL  **DevicePath
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -149,8 +149,8 @@ EfiShellGetMapFromDevicePath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetFilePathFromDevicePath(
 | 
					EfiShellGetFilePathFromDevicePath (
 | 
				
			||||||
  IN CONST EFI_DEVICE_PATH_PROTOCOL *Path
 | 
					  IN CONST EFI_DEVICE_PATH_PROTOCOL  *Path
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -166,8 +166,8 @@ EfiShellGetFilePathFromDevicePath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_DEVICE_PATH_PROTOCOL *
 | 
					EFI_DEVICE_PATH_PROTOCOL *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetDevicePathFromFilePath(
 | 
					EfiShellGetDevicePathFromFilePath (
 | 
				
			||||||
  IN CONST CHAR16 *Path
 | 
					  IN CONST CHAR16  *Path
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -208,11 +208,11 @@ EfiShellGetDevicePathFromFilePath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetDeviceName(
 | 
					EfiShellGetDeviceName (
 | 
				
			||||||
  IN EFI_HANDLE DeviceHandle,
 | 
					  IN EFI_HANDLE                   DeviceHandle,
 | 
				
			||||||
  IN EFI_SHELL_DEVICE_NAME_FLAGS Flags,
 | 
					  IN EFI_SHELL_DEVICE_NAME_FLAGS  Flags,
 | 
				
			||||||
  IN CHAR8 *Language,
 | 
					  IN CHAR8                        *Language,
 | 
				
			||||||
  OUT CHAR16 **BestDeviceName
 | 
					  OUT CHAR16                      **BestDeviceName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -232,9 +232,9 @@ EfiShellGetDeviceName(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellOpenRootByHandle(
 | 
					EfiShellOpenRootByHandle (
 | 
				
			||||||
  IN EFI_HANDLE DeviceHandle,
 | 
					  IN EFI_HANDLE          DeviceHandle,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE *FileHandle
 | 
					  OUT SHELL_FILE_HANDLE  *FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -255,9 +255,9 @@ EfiShellOpenRootByHandle(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellOpenRoot(
 | 
					EfiShellOpenRoot (
 | 
				
			||||||
  IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
 | 
					  IN EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE *FileHandle
 | 
					  OUT SHELL_FILE_HANDLE        *FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -287,11 +287,11 @@ EfiShellBatchIsActive (
 | 
				
			|||||||
  @retval other                   an error occurred.
 | 
					  @retval other                   an error occurred.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
InternalOpenFileDevicePath(
 | 
					InternalOpenFileDevicePath (
 | 
				
			||||||
  IN OUT EFI_DEVICE_PATH_PROTOCOL *DevicePath2,
 | 
					  IN OUT EFI_DEVICE_PATH_PROTOCOL  *DevicePath2,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE             *FileHandle,
 | 
					  OUT SHELL_FILE_HANDLE            *FileHandle,
 | 
				
			||||||
  IN UINT64                       OpenMode,
 | 
					  IN UINT64                        OpenMode,
 | 
				
			||||||
  IN UINT64                       Attributes OPTIONAL
 | 
					  IN UINT64                        Attributes OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -332,10 +332,10 @@ InternalOpenFileDevicePath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellCreateFile(
 | 
					EfiShellCreateFile (
 | 
				
			||||||
  IN CONST CHAR16     *FileName,
 | 
					  IN CONST CHAR16        *FileName,
 | 
				
			||||||
  IN UINT64           FileAttribs,
 | 
					  IN UINT64              FileAttribs,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE *FileHandle
 | 
					  OUT SHELL_FILE_HANDLE  *FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -392,10 +392,10 @@ EfiShellCreateFile(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellOpenFileByName(
 | 
					EfiShellOpenFileByName (
 | 
				
			||||||
  IN CONST CHAR16 *FileName,
 | 
					  IN CONST CHAR16        *FileName,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE *FileHandle,
 | 
					  OUT SHELL_FILE_HANDLE  *FileHandle,
 | 
				
			||||||
  IN UINT64 OpenMode
 | 
					  IN UINT64              OpenMode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -412,8 +412,8 @@ EfiShellOpenFileByName(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellDeleteFileByName(
 | 
					EfiShellDeleteFileByName (
 | 
				
			||||||
  IN CONST CHAR16 *FileName
 | 
					  IN CONST CHAR16  *FileName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -456,12 +456,12 @@ EfiShellEnablePageBreak (
 | 
				
			|||||||
  @retval EFI_UNSUPPORTED   Nested shell invocations are not allowed.
 | 
					  @retval EFI_UNSUPPORTED   Nested shell invocations are not allowed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
InternalShellExecuteDevicePath(
 | 
					InternalShellExecuteDevicePath (
 | 
				
			||||||
  IN CONST EFI_HANDLE               *ParentImageHandle,
 | 
					  IN CONST EFI_HANDLE                *ParentImageHandle,
 | 
				
			||||||
  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
 | 
					  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
 | 
				
			||||||
  IN CONST CHAR16                   *CommandLine OPTIONAL,
 | 
					  IN CONST CHAR16                    *CommandLine OPTIONAL,
 | 
				
			||||||
  IN CONST CHAR16                   **Environment OPTIONAL,
 | 
					  IN CONST CHAR16                    **Environment OPTIONAL,
 | 
				
			||||||
  OUT EFI_STATUS                    *StartImageStatus OPTIONAL
 | 
					  OUT EFI_STATUS                     *StartImageStatus OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -497,11 +497,11 @@ InternalShellExecuteDevicePath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellExecute(
 | 
					EfiShellExecute (
 | 
				
			||||||
  IN EFI_HANDLE *ParentImageHandle,
 | 
					  IN EFI_HANDLE   *ParentImageHandle,
 | 
				
			||||||
  IN CHAR16 *CommandLine OPTIONAL,
 | 
					  IN CHAR16       *CommandLine OPTIONAL,
 | 
				
			||||||
  IN CHAR16 **Environment OPTIONAL,
 | 
					  IN CHAR16       **Environment OPTIONAL,
 | 
				
			||||||
  OUT EFI_STATUS *StatusCode OPTIONAL
 | 
					  OUT EFI_STATUS  *StatusCode OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -513,8 +513,8 @@ EfiShellExecute(
 | 
				
			|||||||
  @param FileListNode     pointer to the list node to free
 | 
					  @param FileListNode     pointer to the list node to free
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
FreeShellFileInfoNode(
 | 
					FreeShellFileInfoNode (
 | 
				
			||||||
  IN EFI_SHELL_FILE_INFO *FileListNode
 | 
					  IN EFI_SHELL_FILE_INFO  *FileListNode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -531,8 +531,8 @@ FreeShellFileInfoNode(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellFreeFileList(
 | 
					EfiShellFreeFileList (
 | 
				
			||||||
  IN EFI_SHELL_FILE_INFO **FileList
 | 
					  IN EFI_SHELL_FILE_INFO  **FileList
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -547,8 +547,8 @@ EfiShellFreeFileList(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellRemoveDupInFileList(
 | 
					EfiShellRemoveDupInFileList (
 | 
				
			||||||
  IN EFI_SHELL_FILE_INFO **FileList
 | 
					  IN EFI_SHELL_FILE_INFO  **FileList
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -563,12 +563,12 @@ EfiShellRemoveDupInFileList(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_SHELL_FILE_INFO *
 | 
					EFI_SHELL_FILE_INFO *
 | 
				
			||||||
CreateAndPopulateShellFileInfo(
 | 
					CreateAndPopulateShellFileInfo (
 | 
				
			||||||
  IN CONST CHAR16 *BasePath,
 | 
					  IN CONST CHAR16             *BasePath,
 | 
				
			||||||
  IN CONST EFI_STATUS Status,
 | 
					  IN CONST EFI_STATUS         Status,
 | 
				
			||||||
  IN CONST CHAR16 *FileName,
 | 
					  IN CONST CHAR16             *FileName,
 | 
				
			||||||
  IN CONST SHELL_FILE_HANDLE Handle,
 | 
					  IN CONST SHELL_FILE_HANDLE  Handle,
 | 
				
			||||||
  IN CONST EFI_FILE_INFO *Info
 | 
					  IN CONST EFI_FILE_INFO      *Info
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -586,9 +586,9 @@ CreateAndPopulateShellFileInfo(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellFindFilesInDir(
 | 
					EfiShellFindFilesInDir (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE FileDirHandle,
 | 
					  IN SHELL_FILE_HANDLE     FileDirHandle,
 | 
				
			||||||
  OUT EFI_SHELL_FILE_INFO **FileList
 | 
					  OUT EFI_SHELL_FILE_INFO  **FileList
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -619,9 +619,9 @@ EfiShellFindFilesInDir(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellFindFiles(
 | 
					EfiShellFindFiles (
 | 
				
			||||||
  IN CONST CHAR16 *FilePattern,
 | 
					  IN CONST CHAR16          *FilePattern,
 | 
				
			||||||
  OUT EFI_SHELL_FILE_INFO **FileList
 | 
					  OUT EFI_SHELL_FILE_INFO  **FileList
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -641,10 +641,10 @@ EfiShellFindFiles(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellOpenFileList(
 | 
					EfiShellOpenFileList (
 | 
				
			||||||
  IN CHAR16 *Path,
 | 
					  IN CHAR16                   *Path,
 | 
				
			||||||
  IN UINT64 OpenMode,
 | 
					  IN UINT64                   OpenMode,
 | 
				
			||||||
  IN OUT EFI_SHELL_FILE_INFO **FileList
 | 
					  IN OUT EFI_SHELL_FILE_INFO  **FileList
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -660,8 +660,8 @@ EfiShellOpenFileList(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16 *
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetEnv(
 | 
					EfiShellGetEnv (
 | 
				
			||||||
  IN CONST CHAR16 *Name
 | 
					  IN CONST CHAR16  *Name
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -687,10 +687,10 @@ EfiShellGetEnv(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellSetEnv(
 | 
					EfiShellSetEnv (
 | 
				
			||||||
  IN CONST CHAR16 *Name,
 | 
					  IN CONST CHAR16  *Name,
 | 
				
			||||||
  IN CONST CHAR16 *Value,
 | 
					  IN CONST CHAR16  *Value,
 | 
				
			||||||
  IN BOOLEAN Volatile
 | 
					  IN BOOLEAN       Volatile
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -709,8 +709,8 @@ EfiShellSetEnv(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16 *
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetCurDir(
 | 
					EfiShellGetCurDir (
 | 
				
			||||||
  IN CONST CHAR16 *FileSystemMapping OPTIONAL
 | 
					  IN CONST CHAR16  *FileSystemMapping OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -738,9 +738,9 @@ EfiShellGetCurDir(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellSetCurDir(
 | 
					EfiShellSetCurDir (
 | 
				
			||||||
  IN CONST CHAR16 *FileSystem OPTIONAL,
 | 
					  IN CONST CHAR16  *FileSystem OPTIONAL,
 | 
				
			||||||
  IN CONST CHAR16 *Dir
 | 
					  IN CONST CHAR16  *Dir
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -770,10 +770,10 @@ EfiShellSetCurDir(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetHelpText(
 | 
					EfiShellGetHelpText (
 | 
				
			||||||
  IN CONST CHAR16 *Command,
 | 
					  IN CONST CHAR16  *Command,
 | 
				
			||||||
  IN CONST CHAR16 *Sections OPTIONAL,
 | 
					  IN CONST CHAR16  *Sections OPTIONAL,
 | 
				
			||||||
  OUT CHAR16 **HelpText
 | 
					  OUT CHAR16       **HelpText
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -786,7 +786,7 @@ EfiShellGetHelpText(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetPageBreak(
 | 
					EfiShellGetPageBreak (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -800,7 +800,7 @@ EfiShellGetPageBreak(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellIsRootShell(
 | 
					EfiShellIsRootShell (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -823,9 +823,9 @@ EfiShellIsRootShell(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16 *
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellGetAlias(
 | 
					EfiShellGetAlias (
 | 
				
			||||||
  IN  CONST CHAR16 *Command,
 | 
					  IN  CONST CHAR16  *Command,
 | 
				
			||||||
  OUT BOOLEAN      *Volatile OPTIONAL
 | 
					  OUT BOOLEAN       *Volatile OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -845,10 +845,10 @@ EfiShellGetAlias(
 | 
				
			|||||||
  @retval EFI_NOT_FOUND         the Alias intended to be deleted was not found
 | 
					  @retval EFI_NOT_FOUND         the Alias intended to be deleted was not found
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
InternalSetAlias(
 | 
					InternalSetAlias (
 | 
				
			||||||
  IN CONST CHAR16 *Command,
 | 
					  IN CONST CHAR16  *Command,
 | 
				
			||||||
  IN CONST CHAR16 *Alias OPTIONAL,
 | 
					  IN CONST CHAR16  *Alias OPTIONAL,
 | 
				
			||||||
  IN BOOLEAN Volatile
 | 
					  IN BOOLEAN       Volatile
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -873,11 +873,11 @@ InternalSetAlias(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
EfiShellSetAlias(
 | 
					EfiShellSetAlias (
 | 
				
			||||||
  IN CONST CHAR16 *Command,
 | 
					  IN CONST CHAR16  *Command,
 | 
				
			||||||
  IN CONST CHAR16 *Alias OPTIONAL,
 | 
					  IN CONST CHAR16  *Alias OPTIONAL,
 | 
				
			||||||
  IN BOOLEAN Replace,
 | 
					  IN BOOLEAN       Replace,
 | 
				
			||||||
  IN BOOLEAN Volatile
 | 
					  IN BOOLEAN       Volatile
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -889,8 +889,8 @@ EfiShellSetAlias(
 | 
				
			|||||||
  @param FileListNode     pointer to the list node to free
 | 
					  @param FileListNode     pointer to the list node to free
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
InternalFreeShellFileInfoNode(
 | 
					InternalFreeShellFileInfoNode (
 | 
				
			||||||
  IN EFI_SHELL_FILE_INFO *FileListNode
 | 
					  IN EFI_SHELL_FILE_INFO  *FileListNode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -904,10 +904,10 @@ InternalFreeShellFileInfoNode(
 | 
				
			|||||||
  @retval EFI_SUCCESS           The environment variable was successfully updated.
 | 
					  @retval EFI_SUCCESS           The environment variable was successfully updated.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
InternalEfiShellSetEnv(
 | 
					InternalEfiShellSetEnv (
 | 
				
			||||||
  IN CONST CHAR16 *Name,
 | 
					  IN CONST CHAR16  *Name,
 | 
				
			||||||
  IN CONST CHAR16 *Value,
 | 
					  IN CONST CHAR16  *Value,
 | 
				
			||||||
  IN BOOLEAN Volatile
 | 
					  IN BOOLEAN       Volatile
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -918,7 +918,7 @@ InternalEfiShellSetEnv(
 | 
				
			|||||||
  @retval EFI_OUT_OF_RESOURCES  There is not enough memory available.
 | 
					  @retval EFI_OUT_OF_RESOURCES  There is not enough memory available.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
InernalEfiShellStartMonitor(
 | 
					InernalEfiShellStartMonitor (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -931,8 +931,8 @@ InernalEfiShellStartMonitor(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
NotificationFunction(
 | 
					NotificationFunction (
 | 
				
			||||||
  IN EFI_KEY_DATA *KeyData
 | 
					  IN EFI_KEY_DATA  *KeyData
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
#endif //_SHELL_PROTOCOL_HEADER_
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //_SHELL_PROTOCOL_HEADER_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,16 +29,18 @@
 | 
				
			|||||||
INTN
 | 
					INTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellAppMain (
 | 
					ShellAppMain (
 | 
				
			||||||
  IN UINTN Argc,
 | 
					  IN UINTN   Argc,
 | 
				
			||||||
  IN CHAR16 **Argv
 | 
					  IN CHAR16  **Argv
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN  Index;
 | 
					  UINTN  Index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Argc == 1) {
 | 
					  if (Argc == 1) {
 | 
				
			||||||
    Print (L"Argv[1] = NULL\n");
 | 
					    Print (L"Argv[1] = NULL\n");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (Index = 1; Index < Argc; Index++) {
 | 
					  for (Index = 1; Index < Argc; Index++) {
 | 
				
			||||||
    Print(L"Argv[%d]: \"%s\"\n", Index, Argv[Index]);
 | 
					    Print (L"Argv[%d]: \"%s\"\n", Index, Argv[Index]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,6 +27,6 @@ UefiMain (
 | 
				
			|||||||
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print(L"ShellExecute - Pass");
 | 
					  Print (L"ShellExecute - Pass");
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,14 +24,19 @@
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
INTN
 | 
					INTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Test(CONST VOID *b1, CONST VOID *b2)
 | 
					Test (
 | 
				
			||||||
 | 
					  CONST VOID  *b1,
 | 
				
			||||||
 | 
					  CONST VOID  *b2
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(INTN*)b1 == *(INTN*)b2) {
 | 
					  if (*(INTN *)b1 == *(INTN *)b2) {
 | 
				
			||||||
    return (0);
 | 
					    return (0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (*(INTN*)b1 < *(INTN*)b2) {
 | 
					
 | 
				
			||||||
    return(-1);
 | 
					  if (*(INTN *)b1 < *(INTN *)b2) {
 | 
				
			||||||
 | 
					    return (-1);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (1);
 | 
					  return (1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,11 +57,11 @@ Test(CONST VOID *b1, CONST VOID *b2)
 | 
				
			|||||||
INTN
 | 
					INTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellAppMain (
 | 
					ShellAppMain (
 | 
				
			||||||
  IN UINTN Argc,
 | 
					  IN UINTN   Argc,
 | 
				
			||||||
  IN CHAR16 **Argv
 | 
					  IN CHAR16  **Argv
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  INTN Array[10];
 | 
					  INTN  Array[10];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Array[0] = 2;
 | 
					  Array[0] = 2;
 | 
				
			||||||
  Array[1] = 3;
 | 
					  Array[1] = 3;
 | 
				
			||||||
@@ -69,9 +74,9 @@ ShellAppMain (
 | 
				
			|||||||
  Array[8] = 1;
 | 
					  Array[8] = 1;
 | 
				
			||||||
  Array[9] = 5;
 | 
					  Array[9] = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Print(L"Array = %d, %d, %d, %d, %d, %d, %d, %d, %d, %d\r\n", Array[0],Array[1],Array[2],Array[3],Array[4],Array[5],Array[6],Array[7],Array[8],Array[9]);
 | 
					  Print (L"Array = %d, %d, %d, %d, %d, %d, %d, %d, %d, %d\r\n", Array[0], Array[1], Array[2], Array[3], Array[4], Array[5], Array[6], Array[7], Array[8], Array[9]);
 | 
				
			||||||
  PerformQuickSort(Array, 10, sizeof(INTN), Test);
 | 
					  PerformQuickSort (Array, 10, sizeof (INTN), Test);
 | 
				
			||||||
  Print(L"POST-SORT\r\n");
 | 
					  Print (L"POST-SORT\r\n");
 | 
				
			||||||
  Print(L"Array = %d, %d, %d, %d, %d, %d, %d, %d, %d, %d\r\n", Array[0],Array[1],Array[2],Array[3],Array[4],Array[5],Array[6],Array[7],Array[8],Array[9]);
 | 
					  Print (L"Array = %d, %d, %d, %d, %d, %d, %d, %d, %d, %d\r\n", Array[0], Array[1], Array[2], Array[3], Array[4], Array[5], Array[6], Array[7], Array[8], Array[9]);
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -9,7 +9,6 @@
 | 
				
			|||||||
#ifndef _DP_H_
 | 
					#ifndef _DP_H_
 | 
				
			||||||
#define _DP_H_
 | 
					#define _DP_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <Uefi.h>
 | 
					#include <Uefi.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <Guid/Performance.h>
 | 
					#include <Guid/Performance.h>
 | 
				
			||||||
@@ -36,32 +35,32 @@
 | 
				
			|||||||
#include <Library/UefiHiiServicesLib.h>
 | 
					#include <Library/UefiHiiServicesLib.h>
 | 
				
			||||||
#include <Library/PerformanceLib.h>
 | 
					#include <Library/PerformanceLib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_HII_HANDLE mDpHiiHandle;
 | 
					extern EFI_HII_HANDLE  mDpHiiHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DP_MAJOR_VERSION        2
 | 
					#define DP_MAJOR_VERSION  2
 | 
				
			||||||
#define DP_MINOR_VERSION        5
 | 
					#define DP_MINOR_VERSION  5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  * The value assigned to DP_DEBUG controls which debug output
 | 
					  * The value assigned to DP_DEBUG controls which debug output
 | 
				
			||||||
  * is generated.  Set it to ZERO to disable.
 | 
					  * is generated.  Set it to ZERO to disable.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define DP_DEBUG                0
 | 
					#define DP_DEBUG  0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DEFAULT_THRESHOLD       1000    ///< One millisecond.
 | 
					#define DEFAULT_THRESHOLD     1000      ///< One millisecond.
 | 
				
			||||||
#define DEFAULT_DISPLAYCOUNT    50
 | 
					#define DEFAULT_DISPLAYCOUNT  50
 | 
				
			||||||
#define MAXIMUM_DISPLAYCOUNT    999999  ///< Arbitrary maximum reasonable number.
 | 
					#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.
 | 
					/// 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.
 | 
					/// Structure for storing Timer specific information.
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINT64    StartCount;   ///< Value timer is initialized with.
 | 
					  UINT64     StartCount;  ///< Value timer is initialized with.
 | 
				
			||||||
  UINT64    EndCount;     ///< Value timer has just before it wraps.
 | 
					  UINT64     EndCount;    ///< Value timer has just before it wraps.
 | 
				
			||||||
  UINT32    Frequency;    ///< Timer count frequency in KHz.
 | 
					  UINT32     Frequency;   ///< Timer count frequency in KHz.
 | 
				
			||||||
  BOOLEAN   CountUp;      ///< TRUE if the counter counts up.
 | 
					  BOOLEAN    CountUp;     ///< TRUE if the counter counts up.
 | 
				
			||||||
} TIMER_INFO;
 | 
					} TIMER_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Initialize one PERF_CUM_DATA structure instance for token t.
 | 
					/** 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(pointer)         A pointer -- CHAR8 *pointer;
 | 
				
			||||||
  *   - PERF_INIT_CUM_DATA(array)           Address of an array -- CHAR8 array[N];
 | 
					  *   - 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 {
 | 
					typedef struct {
 | 
				
			||||||
  UINT64  Duration;     ///< Cumulative duration for this item.
 | 
					  UINT64    Duration;   ///< Cumulative duration for this item.
 | 
				
			||||||
  UINT64  MinDur;       ///< Smallest duration encountered.
 | 
					  UINT64    MinDur;     ///< Smallest duration encountered.
 | 
				
			||||||
  UINT64  MaxDur;       ///< Largest duration encountered.
 | 
					  UINT64    MaxDur;     ///< Largest duration encountered.
 | 
				
			||||||
  CHAR8   *Name;        ///< ASCII name of this item.
 | 
					  CHAR8     *Name;      ///< ASCII name of this item.
 | 
				
			||||||
  UINT32  Count;        ///< Total number of measurements accumulated.
 | 
					  UINT32    Count;      ///< Total number of measurements accumulated.
 | 
				
			||||||
} PERF_CUM_DATA;
 | 
					} PERF_CUM_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINT32                NumTrace;         ///< Number of recorded TRACE performance measurements.
 | 
					  UINT32    NumTrace;                     ///< Number of recorded TRACE performance measurements.
 | 
				
			||||||
  UINT32                NumIncomplete;    ///< Number of measurements with no END value.
 | 
					  UINT32    NumIncomplete;                ///< Number of measurements with no END value.
 | 
				
			||||||
  UINT32                NumSummary;       ///< Number of summary section measurements.
 | 
					  UINT32    NumSummary;                   ///< Number of summary section measurements.
 | 
				
			||||||
  UINT32                NumHandles;       ///< Number of measurements with handles.
 | 
					  UINT32    NumHandles;                   ///< Number of measurements with handles.
 | 
				
			||||||
  UINT32                NumPEIMs;         ///< Number of measurements of PEIMs.
 | 
					  UINT32    NumPEIMs;                     ///< Number of measurements of PEIMs.
 | 
				
			||||||
  UINT32                NumGlobal;        ///< Number of measurements with END value and NULL handle.
 | 
					  UINT32    NumGlobal;                    ///< Number of measurements with END value and NULL handle.
 | 
				
			||||||
} PERF_SUMMARY_DATA;
 | 
					} PERF_SUMMARY_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  CONST VOID            *Handle;
 | 
					  CONST VOID     *Handle;
 | 
				
			||||||
  CONST CHAR8           *Token;           ///< Measured token string name.
 | 
					  CONST CHAR8    *Token;                  ///< Measured token string name.
 | 
				
			||||||
  CONST CHAR8           *Module;          ///< Module string name.
 | 
					  CONST CHAR8    *Module;                 ///< Module string name.
 | 
				
			||||||
  UINT64                StartTimeStamp;   ///< Start time point.
 | 
					  UINT64         StartTimeStamp;          ///< Start time point.
 | 
				
			||||||
  UINT64                EndTimeStamp;     ///< End time point.
 | 
					  UINT64         EndTimeStamp;            ///< End time point.
 | 
				
			||||||
  UINT32                Identifier;       ///< Identifier.
 | 
					  UINT32         Identifier;              ///< Identifier.
 | 
				
			||||||
} MEASUREMENT_RECORD;
 | 
					} MEASUREMENT_RECORD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  CHAR8                 *Name;            ///< Measured token string name.
 | 
					  CHAR8     *Name;                        ///< Measured token string name.
 | 
				
			||||||
  UINT64                CumulativeTime;   ///< Accumulated Elapsed Time.
 | 
					  UINT64    CumulativeTime;               ///< Accumulated Elapsed Time.
 | 
				
			||||||
  UINT64                MinTime;          ///< Minimum Elapsed Time.
 | 
					  UINT64    MinTime;                      ///< Minimum Elapsed Time.
 | 
				
			||||||
  UINT64                MaxTime;          ///< Maximum Elapsed Time.
 | 
					  UINT64    MaxTime;                      ///< Maximum Elapsed Time.
 | 
				
			||||||
  UINT32                Count;            ///< Number of measurements accumulated.
 | 
					  UINT32    Count;                        ///< Number of measurements accumulated.
 | 
				
			||||||
} PROFILE_RECORD;
 | 
					} PROFILE_RECORD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -122,8 +121,8 @@ typedef struct {
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
RunDp (
 | 
					RunDp (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE         *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -135,6 +134,7 @@ RunDp (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HII_HANDLE
 | 
					EFI_HII_HANDLE
 | 
				
			||||||
InitializeHiiPackage (
 | 
					InitializeHiiPackage (
 | 
				
			||||||
  EFI_HANDLE                  ImageHandle
 | 
					  EFI_HANDLE  ImageHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
#endif  // _DP_H_
 | 
					
 | 
				
			||||||
 | 
					#endif // _DP_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@
 | 
				
			|||||||
// the resource section. Thus the application can use '-?' option to show help message in
 | 
					// the resource section. Thus the application can use '-?' option to show help message in
 | 
				
			||||||
// Shell.
 | 
					// 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.
 | 
					  Entry point of Tftp standalone application.
 | 
				
			||||||
@@ -31,11 +31,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (S
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DpAppInitialize (
 | 
					DpAppInitialize (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE         *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mDpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
					  mDpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
				
			||||||
  if (mDpHiiHandle == NULL) {
 | 
					  if (mDpHiiHandle == NULL) {
 | 
				
			||||||
    return EFI_ABORTED;
 | 
					    return EFI_ABORTED;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,10 +25,10 @@
 | 
				
			|||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DpCommandHandler (
 | 
					DpCommandHandler (
 | 
				
			||||||
  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL    *This,
 | 
					  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL  *This,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE                      *SystemTable,
 | 
					  IN EFI_SYSTEM_TABLE                    *SystemTable,
 | 
				
			||||||
  IN EFI_SHELL_PARAMETERS_PROTOCOL         *ShellParameters,
 | 
					  IN EFI_SHELL_PARAMETERS_PROTOCOL       *ShellParameters,
 | 
				
			||||||
  IN EFI_SHELL_PROTOCOL                    *Shell
 | 
					  IN EFI_SHELL_PROTOCOL                  *Shell
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  gEfiShellParametersProtocol = ShellParameters;
 | 
					  gEfiShellParametersProtocol = ShellParameters;
 | 
				
			||||||
@@ -49,14 +49,14 @@ DpCommandHandler (
 | 
				
			|||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DpCommandGetHelp (
 | 
					DpCommandGetHelp (
 | 
				
			||||||
  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL    *This,
 | 
					  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL  *This,
 | 
				
			||||||
  IN CONST CHAR8                           *Language
 | 
					  IN CONST CHAR8                         *Language
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return HiiGetString (mDpHiiHandle, STRING_TOKEN (STR_GET_HELP_DP), 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",
 | 
					  L"dp",
 | 
				
			||||||
  DpCommandHandler,
 | 
					  DpCommandHandler,
 | 
				
			||||||
  DpCommandGetHelp
 | 
					  DpCommandGetHelp
 | 
				
			||||||
@@ -77,11 +77,12 @@ EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mDpDynamicCommand = {
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DpCommandInitialize (
 | 
					DpCommandInitialize (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE         *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mDpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
					  mDpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
				
			||||||
  if (mDpHiiHandle == NULL) {
 | 
					  if (mDpHiiHandle == NULL) {
 | 
				
			||||||
    return EFI_ABORTED;
 | 
					    return EFI_ABORTED;
 | 
				
			||||||
@@ -108,10 +109,11 @@ DpCommandInitialize (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DpUnload (
 | 
					DpUnload (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle
 | 
					  IN EFI_HANDLE  ImageHandle
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->UninstallProtocolInterface (
 | 
					  Status = gBS->UninstallProtocolInterface (
 | 
				
			||||||
                  ImageHandle,
 | 
					                  ImageHandle,
 | 
				
			||||||
                  &gEfiShellDynamicCommandProtocolGuid,
 | 
					                  &gEfiShellDynamicCommandProtocolGuid,
 | 
				
			||||||
@@ -120,6 +122,7 @@ DpUnload (
 | 
				
			|||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return Status;
 | 
					    return Status;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  HiiRemovePackages (mDpHiiHandle);
 | 
					  HiiRemovePackages (mDpHiiHandle);
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,31 +10,32 @@
 | 
				
			|||||||
  (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
 | 
					  (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
 | 
				
			||||||
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
					  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef _DP_INTELNAL_H_
 | 
					#ifndef _DP_INTELNAL_H_
 | 
				
			||||||
#define _DP_INTELNAL_H_
 | 
					#define _DP_INTELNAL_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DP_GAUGE_STRING_LENGTH   36
 | 
					#define DP_GAUGE_STRING_LENGTH  36
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
/// Module-Global Variables
 | 
					/// Module-Global Variables
 | 
				
			||||||
///@{
 | 
					///@{
 | 
				
			||||||
extern EFI_HII_HANDLE     mDpHiiHandle;
 | 
					extern EFI_HII_HANDLE      mDpHiiHandle;
 | 
				
			||||||
extern CHAR16             mGaugeString[DP_GAUGE_STRING_LENGTH + 1];
 | 
					extern CHAR16              mGaugeString[DP_GAUGE_STRING_LENGTH + 1];
 | 
				
			||||||
extern CHAR16             mUnicodeToken[DXE_PERFORMANCE_STRING_SIZE];
 | 
					extern CHAR16              mUnicodeToken[DXE_PERFORMANCE_STRING_SIZE];
 | 
				
			||||||
extern UINT64             mInterestThreshold;
 | 
					extern UINT64              mInterestThreshold;
 | 
				
			||||||
extern BOOLEAN            mShowId;
 | 
					extern BOOLEAN             mShowId;
 | 
				
			||||||
extern UINT8              *mBootPerformanceTable;
 | 
					extern UINT8               *mBootPerformanceTable;
 | 
				
			||||||
extern UINTN              mBootPerformanceTableLength;
 | 
					extern UINTN               mBootPerformanceTableLength;
 | 
				
			||||||
extern MEASUREMENT_RECORD *mMeasurementList;
 | 
					extern MEASUREMENT_RECORD  *mMeasurementList;
 | 
				
			||||||
extern UINTN              mMeasurementNum;
 | 
					extern UINTN               mMeasurementNum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern PERF_SUMMARY_DATA  SummaryData;    ///< Create the SummaryData structure and init. to ZERO.
 | 
					extern PERF_SUMMARY_DATA  SummaryData;    ///< Create the SummaryData structure and init. to ZERO.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Items for which to gather cumulative statistics.
 | 
					/// 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.
 | 
					/// 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
 | 
					UINT64
 | 
				
			||||||
GetDuration (
 | 
					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.
 | 
					  @retval     FALSE       The measurement record is NOT for an EFI Phase.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
IsPhase(
 | 
					IsPhase (
 | 
				
			||||||
  IN MEASUREMENT_RECORD *Measurement
 | 
					  IN MEASUREMENT_RECORD  *Measurement
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -89,8 +90,8 @@ IsPhase(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
IsCorePerf(
 | 
					IsCorePerf (
 | 
				
			||||||
  IN MEASUREMENT_RECORD        *Measurement
 | 
					  IN MEASUREMENT_RECORD  *Measurement
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -107,8 +108,8 @@ IsCorePerf(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DpGetShortPdbFileName (
 | 
					DpGetShortPdbFileName (
 | 
				
			||||||
  IN  CHAR8     *PdbFileName,
 | 
					  IN  CHAR8   *PdbFileName,
 | 
				
			||||||
  OUT CHAR16    *UnicodeBuffer
 | 
					  OUT CHAR16  *UnicodeBuffer
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -129,7 +130,7 @@ DpGetShortPdbFileName (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DpGetNameFromHandle (
 | 
					DpGetNameFromHandle (
 | 
				
			||||||
  IN EFI_HANDLE Handle
 | 
					  IN EFI_HANDLE  Handle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -147,7 +148,7 @@ DpGetNameFromHandle (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
UINT64
 | 
					UINT64
 | 
				
			||||||
DurationInMicroSeconds (
 | 
					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.
 | 
					  @retval     >=0   Return value is the index into CumData where Token is found.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
INTN
 | 
					INTN
 | 
				
			||||||
GetCumulativeItem(
 | 
					GetCumulativeItem (
 | 
				
			||||||
  IN MEASUREMENT_RECORD *Measurement
 | 
					  IN MEASUREMENT_RECORD  *Measurement
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -186,8 +187,8 @@ GetCumulativeItem(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
GatherStatistics(
 | 
					GatherStatistics (
 | 
				
			||||||
  IN OUT PERF_CUM_DATA              *CustomCumulativeData OPTIONAL
 | 
					  IN OUT PERF_CUM_DATA  *CustomCumulativeData OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -212,9 +213,9 @@ GatherStatistics(
 | 
				
			|||||||
  @return Others                from a call to gBS->LocateHandleBuffer().
 | 
					  @return Others                from a call to gBS->LocateHandleBuffer().
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
DumpAllTrace(
 | 
					DumpAllTrace (
 | 
				
			||||||
  IN UINTN             Limit,
 | 
					  IN UINTN    Limit,
 | 
				
			||||||
  IN BOOLEAN           ExcludeFlag
 | 
					  IN BOOLEAN  ExcludeFlag
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -237,9 +238,9 @@ DumpAllTrace(
 | 
				
			|||||||
  @retval EFI_ABORTED           The user aborts the operation.
 | 
					  @retval EFI_ABORTED           The user aborts the operation.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
DumpRawTrace(
 | 
					DumpRawTrace (
 | 
				
			||||||
  IN UINTN          Limit,
 | 
					  IN UINTN    Limit,
 | 
				
			||||||
  IN BOOLEAN        ExcludeFlag
 | 
					  IN BOOLEAN  ExcludeFlag
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -247,11 +248,10 @@ DumpRawTrace(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
ProcessPhases(
 | 
					ProcessPhases (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Gather and print Handle data.
 | 
					  Gather and print Handle data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -262,11 +262,10 @@ ProcessPhases(
 | 
				
			|||||||
  @return Others                  from a call to gBS->LocateHandleBuffer().
 | 
					  @return Others                  from a call to gBS->LocateHandleBuffer().
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ProcessHandles(
 | 
					ProcessHandles (
 | 
				
			||||||
  IN BOOLEAN ExcludeFlag
 | 
					  IN BOOLEAN  ExcludeFlag
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Gather and print PEIM data.
 | 
					  Gather and print PEIM data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -276,7 +275,7 @@ ProcessHandles(
 | 
				
			|||||||
  @retval EFI_ABORTED           The user aborts the operation.
 | 
					  @retval EFI_ABORTED           The user aborts the operation.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ProcessPeims(
 | 
					ProcessPeims (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -292,7 +291,7 @@ ProcessPeims(
 | 
				
			|||||||
  @retval EFI_ABORTED           The user aborts the operation.
 | 
					  @retval EFI_ABORTED           The user aborts the operation.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
ProcessGlobal(
 | 
					ProcessGlobal (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -308,8 +307,8 @@ ProcessGlobal(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
ProcessCumulative(
 | 
					ProcessCumulative (
 | 
				
			||||||
  IN PERF_CUM_DATA                  *CustomCumulativeData OPTIONAL
 | 
					  IN PERF_CUM_DATA  *CustomCumulativeData OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -55,23 +55,24 @@
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
UINT64
 | 
					UINT64
 | 
				
			||||||
GetDuration (
 | 
					GetDuration (
 | 
				
			||||||
  IN OUT MEASUREMENT_RECORD   *Measurement
 | 
					  IN OUT MEASUREMENT_RECORD  *Measurement
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT64    Duration;
 | 
					  UINT64   Duration;
 | 
				
			||||||
  BOOLEAN   Error;
 | 
					  BOOLEAN  Error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Measurement->EndTimeStamp == 0) {
 | 
					  if (Measurement->EndTimeStamp == 0) {
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Duration = Measurement->EndTimeStamp - Measurement->StartTimeStamp;
 | 
					  Duration = Measurement->EndTimeStamp - Measurement->StartTimeStamp;
 | 
				
			||||||
  Error = (BOOLEAN)(Duration > Measurement->EndTimeStamp);
 | 
					  Error    = (BOOLEAN)(Duration > Measurement->EndTimeStamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Error) {
 | 
					  if (Error) {
 | 
				
			||||||
    DEBUG ((DEBUG_ERROR, ALit_TimerLibError));
 | 
					    DEBUG ((DEBUG_ERROR, ALit_TimerLibError));
 | 
				
			||||||
    Duration = 0;
 | 
					    Duration = 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return Duration;
 | 
					  return Duration;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -87,18 +88,18 @@ GetDuration (
 | 
				
			|||||||
  @retval     FALSE       The measurement record is NOT for an EFI Phase.
 | 
					  @retval     FALSE       The measurement record is NOT for an EFI Phase.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
IsPhase(
 | 
					IsPhase (
 | 
				
			||||||
  IN MEASUREMENT_RECORD        *Measurement
 | 
					  IN MEASUREMENT_RECORD  *Measurement
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  BOOLEAN   RetVal;
 | 
					  BOOLEAN  RetVal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RetVal = (BOOLEAN)(
 | 
					  RetVal = (BOOLEAN)(
 | 
				
			||||||
            ((AsciiStrCmp (Measurement->Token, ALit_SEC) == 0)    ||
 | 
					                     ((AsciiStrCmp (Measurement->Token, ALit_SEC) == 0)    ||
 | 
				
			||||||
             (AsciiStrCmp (Measurement->Token, ALit_PEI) == 0)    ||
 | 
					                      (AsciiStrCmp (Measurement->Token, ALit_PEI) == 0)    ||
 | 
				
			||||||
             (AsciiStrCmp (Measurement->Token, ALit_DXE) == 0)    ||
 | 
					                      (AsciiStrCmp (Measurement->Token, ALit_DXE) == 0)    ||
 | 
				
			||||||
             (AsciiStrCmp (Measurement->Token, ALit_BDS) == 0))
 | 
					                      (AsciiStrCmp (Measurement->Token, ALit_BDS) == 0))
 | 
				
			||||||
            );
 | 
					                     );
 | 
				
			||||||
  return RetVal;
 | 
					  return RetVal;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -112,24 +113,24 @@ IsPhase(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
IsCorePerf(
 | 
					IsCorePerf (
 | 
				
			||||||
  IN MEASUREMENT_RECORD        *Measurement
 | 
					  IN MEASUREMENT_RECORD  *Measurement
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  BOOLEAN   RetVal;
 | 
					  BOOLEAN  RetVal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RetVal = (BOOLEAN)(
 | 
					  RetVal = (BOOLEAN)(
 | 
				
			||||||
            ((Measurement->Identifier == MODULE_START_ID)            ||
 | 
					                     ((Measurement->Identifier == MODULE_START_ID)            ||
 | 
				
			||||||
             (Measurement->Identifier == MODULE_END_ID)              ||
 | 
					                      (Measurement->Identifier == MODULE_END_ID)              ||
 | 
				
			||||||
             (Measurement->Identifier == MODULE_LOADIMAGE_START_ID)  ||
 | 
					                      (Measurement->Identifier == MODULE_LOADIMAGE_START_ID)  ||
 | 
				
			||||||
             (Measurement->Identifier == MODULE_LOADIMAGE_END_ID)    ||
 | 
					                      (Measurement->Identifier == MODULE_LOADIMAGE_END_ID)    ||
 | 
				
			||||||
             (Measurement->Identifier == MODULE_DB_START_ID)         ||
 | 
					                      (Measurement->Identifier == MODULE_DB_START_ID)         ||
 | 
				
			||||||
             (Measurement->Identifier == MODULE_DB_END_ID)           ||
 | 
					                      (Measurement->Identifier == MODULE_DB_END_ID)           ||
 | 
				
			||||||
             (Measurement->Identifier == MODULE_DB_SUPPORT_START_ID) ||
 | 
					                      (Measurement->Identifier == MODULE_DB_SUPPORT_START_ID) ||
 | 
				
			||||||
             (Measurement->Identifier == MODULE_DB_SUPPORT_END_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_DB_STOP_START_ID))
 | 
					                      (Measurement->Identifier == MODULE_DB_STOP_START_ID))
 | 
				
			||||||
            );
 | 
					                     );
 | 
				
			||||||
  return RetVal;
 | 
					  return RetVal;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -147,14 +148,14 @@ IsCorePerf(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DpGetShortPdbFileName (
 | 
					DpGetShortPdbFileName (
 | 
				
			||||||
  IN  CHAR8     *PdbFileName,
 | 
					  IN  CHAR8   *PdbFileName,
 | 
				
			||||||
  OUT CHAR16    *UnicodeBuffer
 | 
					  OUT CHAR16  *UnicodeBuffer
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN IndexA;     // Current work location within an ASCII string.
 | 
					  UINTN  IndexA;    // Current work location within an ASCII string.
 | 
				
			||||||
  UINTN IndexU;     // Current work location within a Unicode string.
 | 
					  UINTN  IndexU;    // Current work location within a Unicode string.
 | 
				
			||||||
  UINTN StartIndex;
 | 
					  UINTN  StartIndex;
 | 
				
			||||||
  UINTN EndIndex;
 | 
					  UINTN  EndIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ZeroMem (UnicodeBuffer, (DP_GAUGE_STRING_LENGTH + 1) * sizeof (CHAR16));
 | 
					  ZeroMem (UnicodeBuffer, (DP_GAUGE_STRING_LENGTH + 1) * sizeof (CHAR16));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -162,8 +163,9 @@ DpGetShortPdbFileName (
 | 
				
			|||||||
    StrnCpyS (UnicodeBuffer, DP_GAUGE_STRING_LENGTH + 1, L" ", 1);
 | 
					    StrnCpyS (UnicodeBuffer, DP_GAUGE_STRING_LENGTH + 1, L" ", 1);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    StartIndex = 0;
 | 
					    StartIndex = 0;
 | 
				
			||||||
    for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
 | 
					    for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++) {
 | 
				
			||||||
      ;
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (IndexA = 0; PdbFileName[IndexA] != 0; IndexA++) {
 | 
					    for (IndexA = 0; PdbFileName[IndexA] != 0; IndexA++) {
 | 
				
			||||||
      if ((PdbFileName[IndexA] == '\\') || (PdbFileName[IndexA] == '/')) {
 | 
					      if ((PdbFileName[IndexA] == '\\') || (PdbFileName[IndexA] == '/')) {
 | 
				
			||||||
        StartIndex = IndexA + 1;
 | 
					        StartIndex = IndexA + 1;
 | 
				
			||||||
@@ -176,7 +178,7 @@ DpGetShortPdbFileName (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    IndexU = 0;
 | 
					    IndexU = 0;
 | 
				
			||||||
    for (IndexA = StartIndex; IndexA < EndIndex; IndexA++) {
 | 
					    for (IndexA = StartIndex; IndexA < EndIndex; IndexA++) {
 | 
				
			||||||
      UnicodeBuffer[IndexU] = (CHAR16) PdbFileName[IndexA];
 | 
					      UnicodeBuffer[IndexU] = (CHAR16)PdbFileName[IndexA];
 | 
				
			||||||
      IndexU++;
 | 
					      IndexU++;
 | 
				
			||||||
      if (IndexU >= DP_GAUGE_STRING_LENGTH) {
 | 
					      if (IndexU >= DP_GAUGE_STRING_LENGTH) {
 | 
				
			||||||
        UnicodeBuffer[DP_GAUGE_STRING_LENGTH] = 0;
 | 
					        UnicodeBuffer[DP_GAUGE_STRING_LENGTH] = 0;
 | 
				
			||||||
@@ -204,26 +206,26 @@ DpGetShortPdbFileName (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DpGetNameFromHandle (
 | 
					DpGetNameFromHandle (
 | 
				
			||||||
  IN EFI_HANDLE   Handle
 | 
					  IN EFI_HANDLE  Handle
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                   Status;
 | 
					  EFI_STATUS                    Status;
 | 
				
			||||||
  EFI_LOADED_IMAGE_PROTOCOL    *Image;
 | 
					  EFI_LOADED_IMAGE_PROTOCOL     *Image;
 | 
				
			||||||
  CHAR8                        *PdbFileName;
 | 
					  CHAR8                         *PdbFileName;
 | 
				
			||||||
  EFI_DRIVER_BINDING_PROTOCOL  *DriverBinding;
 | 
					  EFI_DRIVER_BINDING_PROTOCOL   *DriverBinding;
 | 
				
			||||||
  EFI_STRING                   StringPtr;
 | 
					  EFI_STRING                    StringPtr;
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL     *LoadedImageDevicePath;
 | 
					  EFI_DEVICE_PATH_PROTOCOL      *LoadedImageDevicePath;
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL     *DevicePath;
 | 
					  EFI_DEVICE_PATH_PROTOCOL      *DevicePath;
 | 
				
			||||||
  EFI_GUID                     *NameGuid;
 | 
					  EFI_GUID                      *NameGuid;
 | 
				
			||||||
  CHAR16                       *NameString;
 | 
					  CHAR16                        *NameString;
 | 
				
			||||||
  UINTN                        StringSize;
 | 
					  UINTN                         StringSize;
 | 
				
			||||||
  CHAR8                        *PlatformLanguage;
 | 
					  CHAR8                         *PlatformLanguage;
 | 
				
			||||||
  CHAR8                        *BestLanguage;
 | 
					  CHAR8                         *BestLanguage;
 | 
				
			||||||
  EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2;
 | 
					  EFI_COMPONENT_NAME2_PROTOCOL  *ComponentName2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Image = NULL;
 | 
					  Image                 = NULL;
 | 
				
			||||||
  LoadedImageDevicePath = NULL;
 | 
					  LoadedImageDevicePath = NULL;
 | 
				
			||||||
  DevicePath = NULL;
 | 
					  DevicePath            = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Method 1: Get the name string from image PDB
 | 
					  // Method 1: Get the name string from image PDB
 | 
				
			||||||
@@ -231,14 +233,14 @@ DpGetNameFromHandle (
 | 
				
			|||||||
  Status = gBS->HandleProtocol (
 | 
					  Status = gBS->HandleProtocol (
 | 
				
			||||||
                  Handle,
 | 
					                  Handle,
 | 
				
			||||||
                  &gEfiLoadedImageProtocolGuid,
 | 
					                  &gEfiLoadedImageProtocolGuid,
 | 
				
			||||||
                  (VOID **) &Image
 | 
					                  (VOID **)&Image
 | 
				
			||||||
                  );
 | 
					                  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    Status = gBS->OpenProtocol (
 | 
					    Status = gBS->OpenProtocol (
 | 
				
			||||||
                    Handle,
 | 
					                    Handle,
 | 
				
			||||||
                    &gEfiDriverBindingProtocolGuid,
 | 
					                    &gEfiDriverBindingProtocolGuid,
 | 
				
			||||||
                    (VOID **) &DriverBinding,
 | 
					                    (VOID **)&DriverBinding,
 | 
				
			||||||
                    NULL,
 | 
					                    NULL,
 | 
				
			||||||
                    NULL,
 | 
					                    NULL,
 | 
				
			||||||
                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
					                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
				
			||||||
@@ -247,7 +249,7 @@ DpGetNameFromHandle (
 | 
				
			|||||||
      Status = gBS->HandleProtocol (
 | 
					      Status = gBS->HandleProtocol (
 | 
				
			||||||
                      DriverBinding->ImageHandle,
 | 
					                      DriverBinding->ImageHandle,
 | 
				
			||||||
                      &gEfiLoadedImageProtocolGuid,
 | 
					                      &gEfiLoadedImageProtocolGuid,
 | 
				
			||||||
                      (VOID **) &Image
 | 
					                      (VOID **)&Image
 | 
				
			||||||
                      );
 | 
					                      );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -267,14 +269,14 @@ DpGetNameFromHandle (
 | 
				
			|||||||
  Status = gBS->HandleProtocol (
 | 
					  Status = gBS->HandleProtocol (
 | 
				
			||||||
                  Handle,
 | 
					                  Handle,
 | 
				
			||||||
                  &gEfiComponentName2ProtocolGuid,
 | 
					                  &gEfiComponentName2ProtocolGuid,
 | 
				
			||||||
                  (VOID **) &ComponentName2
 | 
					                  (VOID **)&ComponentName2
 | 
				
			||||||
                  );
 | 
					                  );
 | 
				
			||||||
  if (!EFI_ERROR (Status)) {
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // Firstly use platform language setting, secondly use driver's first supported language.
 | 
					    // Firstly use platform language setting, secondly use driver's first supported language.
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    GetVariable2 (L"PlatformLang", &gEfiGlobalVariableGuid, (VOID**)&PlatformLanguage, NULL);
 | 
					    GetVariable2 (L"PlatformLang", &gEfiGlobalVariableGuid, (VOID **)&PlatformLanguage, NULL);
 | 
				
			||||||
    BestLanguage = GetBestLanguage(
 | 
					    BestLanguage = GetBestLanguage (
 | 
				
			||||||
                     ComponentName2->SupportedLanguages,
 | 
					                     ComponentName2->SupportedLanguages,
 | 
				
			||||||
                     FALSE,
 | 
					                     FALSE,
 | 
				
			||||||
                     (PlatformLanguage != NULL) ? PlatformLanguage : "",
 | 
					                     (PlatformLanguage != NULL) ? PlatformLanguage : "",
 | 
				
			||||||
@@ -299,7 +301,7 @@ DpGetNameFromHandle (
 | 
				
			|||||||
  Status = gBS->HandleProtocol (
 | 
					  Status = gBS->HandleProtocol (
 | 
				
			||||||
                  Handle,
 | 
					                  Handle,
 | 
				
			||||||
                  &gEfiLoadedImageDevicePathProtocolGuid,
 | 
					                  &gEfiLoadedImageDevicePathProtocolGuid,
 | 
				
			||||||
                  (VOID **) &LoadedImageDevicePath
 | 
					                  (VOID **)&LoadedImageDevicePath
 | 
				
			||||||
                  );
 | 
					                  );
 | 
				
			||||||
  if (!EFI_ERROR (Status) && (LoadedImageDevicePath != NULL)) {
 | 
					  if (!EFI_ERROR (Status) && (LoadedImageDevicePath != NULL)) {
 | 
				
			||||||
    DevicePath = LoadedImageDevicePath;
 | 
					    DevicePath = LoadedImageDevicePath;
 | 
				
			||||||
@@ -313,10 +315,11 @@ DpGetNameFromHandle (
 | 
				
			|||||||
    //
 | 
					    //
 | 
				
			||||||
    NameGuid = NULL;
 | 
					    NameGuid = NULL;
 | 
				
			||||||
    while (!IsDevicePathEndType (DevicePath)) {
 | 
					    while (!IsDevicePathEndType (DevicePath)) {
 | 
				
			||||||
      NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *) DevicePath);
 | 
					      NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)DevicePath);
 | 
				
			||||||
      if (NameGuid != NULL) {
 | 
					      if (NameGuid != NULL) {
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      DevicePath = NextDevicePathNode (DevicePath);
 | 
					      DevicePath = NextDevicePathNode (DevicePath);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -326,13 +329,13 @@ DpGetNameFromHandle (
 | 
				
			|||||||
      //
 | 
					      //
 | 
				
			||||||
      NameString = NULL;
 | 
					      NameString = NULL;
 | 
				
			||||||
      StringSize = 0;
 | 
					      StringSize = 0;
 | 
				
			||||||
      Status = GetSectionFromAnyFv (
 | 
					      Status     = GetSectionFromAnyFv (
 | 
				
			||||||
                NameGuid,
 | 
					                     NameGuid,
 | 
				
			||||||
                EFI_SECTION_USER_INTERFACE,
 | 
					                     EFI_SECTION_USER_INTERFACE,
 | 
				
			||||||
                0,
 | 
					                     0,
 | 
				
			||||||
                (VOID **) &NameString,
 | 
					                     (VOID **)&NameString,
 | 
				
			||||||
                &StringSize
 | 
					                     &StringSize
 | 
				
			||||||
                );
 | 
					                     );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!EFI_ERROR (Status)) {
 | 
					      if (!EFI_ERROR (Status)) {
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
@@ -347,6 +350,7 @@ DpGetNameFromHandle (
 | 
				
			|||||||
        //
 | 
					        //
 | 
				
			||||||
        UnicodeSPrint (mGaugeString, sizeof (mGaugeString), L"%g", NameGuid);
 | 
					        UnicodeSPrint (mGaugeString, sizeof (mGaugeString), L"%g", NameGuid);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
@@ -386,7 +390,7 @@ DpGetNameFromHandle (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
UINT64
 | 
					UINT64
 | 
				
			||||||
DurationInMicroSeconds (
 | 
					DurationInMicroSeconds (
 | 
				
			||||||
  IN UINT64 Duration
 | 
					  IN UINT64  Duration
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return DivU64x32 (Duration, 1000);
 | 
					  return DivU64x32 (Duration, 1000);
 | 
				
			||||||
@@ -406,17 +410,18 @@ DurationInMicroSeconds (
 | 
				
			|||||||
  @retval     >=0   Return value is the index into CumData where Token is found.
 | 
					  @retval     >=0   Return value is the index into CumData where Token is found.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
INTN
 | 
					INTN
 | 
				
			||||||
GetCumulativeItem(
 | 
					GetCumulativeItem (
 | 
				
			||||||
  IN MEASUREMENT_RECORD   *Measurement
 | 
					  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) {
 | 
					    if (AsciiStrCmp (Measurement->Token, CumData[Index].Name) == 0) {
 | 
				
			||||||
      return Index;  // Exit, we found a match
 | 
					      return Index;  // Exit, we found a match
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // If the for loop exits, Token was not found.
 | 
					  // If the for loop exits, Token was not found.
 | 
				
			||||||
  return -1;   // Indicate failure
 | 
					  return -1;   // Indicate failure
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,16 +7,16 @@
 | 
				
			|||||||
#include <Guid/ExtendedFirmwarePerformance.h>
 | 
					#include <Guid/ExtendedFirmwarePerformance.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ASCII String literals which probably don't need translation
 | 
					// ASCII String literals which probably don't need translation
 | 
				
			||||||
CHAR8 const ALit_TimerLibError[]  = "Timer library instance error!\n";
 | 
					CHAR8 const  ALit_TimerLibError[] = "Timer library instance error!\n";
 | 
				
			||||||
CHAR8 const ALit_SEC[]            = SEC_TOK;
 | 
					CHAR8 const  ALit_SEC[]           = SEC_TOK;
 | 
				
			||||||
CHAR8 const ALit_DXE[]            = DXE_TOK;
 | 
					CHAR8 const  ALit_DXE[]           = DXE_TOK;
 | 
				
			||||||
CHAR8 const ALit_PEI[]            = PEI_TOK;
 | 
					CHAR8 const  ALit_PEI[]           = PEI_TOK;
 | 
				
			||||||
CHAR8 const ALit_BDS[]            = BDS_TOK;
 | 
					CHAR8 const  ALit_BDS[]           = BDS_TOK;
 | 
				
			||||||
CHAR8 const ALit_START_IMAGE[]    = START_IMAGE_TOK;
 | 
					CHAR8 const  ALit_START_IMAGE[]   = START_IMAGE_TOK;
 | 
				
			||||||
CHAR8 const ALit_LOAD_IMAGE[]     = LOAD_IMAGE_TOK;
 | 
					CHAR8 const  ALit_LOAD_IMAGE[]    = LOAD_IMAGE_TOK;
 | 
				
			||||||
CHAR8 const ALit_DB_START[]       = DRIVERBINDING_START_TOK;
 | 
					CHAR8 const  ALit_DB_START[]      = DRIVERBINDING_START_TOK;
 | 
				
			||||||
CHAR8 const ALit_DB_SUPPORT[]     = DRIVERBINDING_SUPPORT_TOK;
 | 
					CHAR8 const  ALit_DB_SUPPORT[]    = DRIVERBINDING_SUPPORT_TOK;
 | 
				
			||||||
CHAR8 const ALit_DB_STOP[]        = DRIVERBINDING_STOP_TOK;
 | 
					CHAR8 const  ALit_DB_STOP[]       = DRIVERBINDING_STOP_TOK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CHAR8 const ALit_BdsTO[]      = "BdsTimeOut";
 | 
					CHAR8 const  ALit_BdsTO[] = "BdsTimeOut";
 | 
				
			||||||
CHAR8 const ALit_PEIM[]       = "PEIM";
 | 
					CHAR8 const  ALit_PEIM[]  = "PEIM";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,23 +4,24 @@
 | 
				
			|||||||
  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
					  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
					  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef _LITERALS_H_
 | 
					#ifndef _LITERALS_H_
 | 
				
			||||||
#define _LITERALS_H_
 | 
					#define _LITERALS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ASCII String literals which probably don't need translation
 | 
					// ASCII String literals which probably don't need translation
 | 
				
			||||||
extern CHAR8 const ALit_TimerLibError[];
 | 
					extern CHAR8 const  ALit_TimerLibError[];
 | 
				
			||||||
extern CHAR8 const ALit_SEC[];
 | 
					extern CHAR8 const  ALit_SEC[];
 | 
				
			||||||
extern CHAR8 const ALit_DXE[];
 | 
					extern CHAR8 const  ALit_DXE[];
 | 
				
			||||||
extern CHAR8 const ALit_SHELL[];
 | 
					extern CHAR8 const  ALit_SHELL[];
 | 
				
			||||||
extern CHAR8 const ALit_PEI[];
 | 
					extern CHAR8 const  ALit_PEI[];
 | 
				
			||||||
extern CHAR8 const ALit_BDS[];
 | 
					extern CHAR8 const  ALit_BDS[];
 | 
				
			||||||
extern CHAR8 const ALit_PEIM[];
 | 
					extern CHAR8 const  ALit_PEIM[];
 | 
				
			||||||
extern CHAR8 const ALit_START_IMAGE[];
 | 
					extern CHAR8 const  ALit_START_IMAGE[];
 | 
				
			||||||
extern CHAR8 const ALit_LOAD_IMAGE[];
 | 
					extern CHAR8 const  ALit_LOAD_IMAGE[];
 | 
				
			||||||
extern CHAR8 const ALit_DB_START[];
 | 
					extern CHAR8 const  ALit_DB_START[];
 | 
				
			||||||
extern CHAR8 const ALit_DB_SUPPORT[];
 | 
					extern CHAR8 const  ALit_DB_SUPPORT[];
 | 
				
			||||||
extern CHAR8 const ALit_DB_STOP[];
 | 
					extern CHAR8 const  ALit_DB_STOP[];
 | 
				
			||||||
extern CHAR8 const ALit_BdsTO[];
 | 
					extern CHAR8 const  ALit_BdsTO[];
 | 
				
			||||||
extern CHAR8 const ALit_PEIM[];
 | 
					extern CHAR8 const  ALit_PEIM[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif  // _LITERALS_H_
 | 
					#endif // _LITERALS_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "Http.h"
 | 
					#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
 | 
					// Constant strings and definitions related to the message
 | 
				
			||||||
@@ -37,17 +37,17 @@
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// Buffer size. Note that larger buffer does not mean better speed.
 | 
					// Buffer size. Note that larger buffer does not mean better speed.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#define DEFAULT_BUF_SIZE      SIZE_32KB
 | 
					#define DEFAULT_BUF_SIZE  SIZE_32KB
 | 
				
			||||||
#define MAX_BUF_SIZE          SIZE_4MB
 | 
					#define MAX_BUF_SIZE      SIZE_4MB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MIN_PARAM_COUNT       2
 | 
					#define MIN_PARAM_COUNT  2
 | 
				
			||||||
#define MAX_PARAM_COUNT       4
 | 
					#define MAX_PARAM_COUNT  4
 | 
				
			||||||
#define NEED_REDIRECTION(Code) \
 | 
					#define NEED_REDIRECTION(Code) \
 | 
				
			||||||
  (((Code >= HTTP_STATUS_300_MULTIPLE_CHOICES) \
 | 
					  (((Code >= HTTP_STATUS_300_MULTIPLE_CHOICES) \
 | 
				
			||||||
  && (Code <= HTTP_STATUS_307_TEMPORARY_REDIRECT)) \
 | 
					  && (Code <= HTTP_STATUS_307_TEMPORARY_REDIRECT)) \
 | 
				
			||||||
  || (Code == HTTP_STATUS_308_PERMANENT_REDIRECT))
 | 
					  || (Code == HTTP_STATUS_308_PERMANENT_REDIRECT))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CLOSE_HTTP_HANDLE(ControllerHandle,HttpChildHandle) \
 | 
					#define CLOSE_HTTP_HANDLE(ControllerHandle, HttpChildHandle) \
 | 
				
			||||||
  do { \
 | 
					  do { \
 | 
				
			||||||
    if (HttpChildHandle) { \
 | 
					    if (HttpChildHandle) { \
 | 
				
			||||||
      CloseProtocolAndDestroyServiceChild ( \
 | 
					      CloseProtocolAndDestroyServiceChild ( \
 | 
				
			||||||
@@ -69,13 +69,13 @@ typedef enum {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define USER_AGENT_HDR  "Mozilla/5.0 (EDK2; Linux) Gecko/20100101 Firefox/79.0"
 | 
					#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 "/".
 | 
					// File name to use when Uri ends with "/".
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#define DEFAULT_HTML_FILE     L"index.html"
 | 
					#define DEFAULT_HTML_FILE   L"index.html"
 | 
				
			||||||
#define DEFAULT_HTTP_PROTO    L"http"
 | 
					#define DEFAULT_HTTP_PROTO  L"http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// String to delete the HTTP progress message to be able to update it :
 | 
					// 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\
 | 
					  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"
 | 
					\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.
 | 
					// Frame for the progression slider.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#define HTTP_PROGR_FRAME     L"[                                        ]"
 | 
					#define HTTP_PROGR_FRAME  L"[                                        ]"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Improve readability by using these macros.
 | 
					// Improve readability by using these macros.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#define PRINT_HII(token,...) \
 | 
					#define PRINT_HII(token, ...) \
 | 
				
			||||||
  ShellPrintHiiEx (\
 | 
					  ShellPrintHiiEx (\
 | 
				
			||||||
      -1, -1, NULL, token, mHttpHiiHandle, __VA_ARGS__)
 | 
					      -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)
 | 
					  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 (1970-JANUARY-01) in the Julian Date representation.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#define EPOCH_JULIAN_DATE                               2440588
 | 
					#define EPOCH_JULIAN_DATE  2440588
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Seconds per unit.
 | 
					// Seconds per unit.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#define SEC_PER_MIN                                     ((UINTN)    60)
 | 
					#define SEC_PER_MIN   ((UINTN)    60)
 | 
				
			||||||
#define SEC_PER_HOUR                                    ((UINTN)  3600)
 | 
					#define SEC_PER_HOUR  ((UINTN)  3600)
 | 
				
			||||||
#define SEC_PER_DAY                                     ((UINTN) 86400)
 | 
					#define SEC_PER_DAY   ((UINTN) 86400)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// String descriptions for server errors.
 | 
					// String descriptions for server errors.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
STATIC CONST CHAR16 *ErrStatusDesc[] =
 | 
					STATIC CONST CHAR16  *ErrStatusDesc[] =
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  L"400 Bad Request",
 | 
					  L"400 Bad Request",
 | 
				
			||||||
  L"401 Unauthorized",
 | 
					  L"401 Unauthorized",
 | 
				
			||||||
@@ -149,32 +149,32 @@ STATIC CONST CHAR16 *ErrStatusDesc[] =
 | 
				
			|||||||
  L"505 HTTP version not supported"
 | 
					  L"505 HTTP version not supported"
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
 | 
					STATIC CONST SHELL_PARAM_ITEM  ParamList[] = {
 | 
				
			||||||
  {L"-i", TypeValue},
 | 
					  { L"-i", TypeValue },
 | 
				
			||||||
  {L"-k", TypeFlag},
 | 
					  { L"-k", TypeFlag  },
 | 
				
			||||||
  {L"-l", TypeValue},
 | 
					  { L"-l", TypeValue },
 | 
				
			||||||
  {L"-m", TypeFlag},
 | 
					  { L"-m", TypeFlag  },
 | 
				
			||||||
  {L"-s", TypeValue},
 | 
					  { L"-s", TypeValue },
 | 
				
			||||||
  {L"-t", TypeValue},
 | 
					  { L"-t", TypeValue },
 | 
				
			||||||
  {NULL , TypeMax}
 | 
					  { NULL,  TypeMax   }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Local File Handle.
 | 
					// Local File Handle.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
STATIC SHELL_FILE_HANDLE   mFileHandle = NULL;
 | 
					STATIC SHELL_FILE_HANDLE  mFileHandle = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Path of the local file, Unicode encoded.
 | 
					// Path of the local file, Unicode encoded.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
STATIC CONST CHAR16        *mLocalFilePath;
 | 
					STATIC CONST CHAR16  *mLocalFilePath;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC BOOLEAN             gRequestCallbackComplete = FALSE;
 | 
					STATIC BOOLEAN  gRequestCallbackComplete  = FALSE;
 | 
				
			||||||
STATIC BOOLEAN             gResponseCallbackComplete = FALSE;
 | 
					STATIC BOOLEAN  gResponseCallbackComplete = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC BOOLEAN             gHttpError;
 | 
					STATIC BOOLEAN  gHttpError;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EFI_HII_HANDLE             mHttpHiiHandle;
 | 
					EFI_HII_HANDLE  mHttpHiiHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Functions declarations.
 | 
					// Functions declarations.
 | 
				
			||||||
@@ -286,9 +286,9 @@ CloseProtocolAndDestroyServiceChild (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
DownloadFile (
 | 
					DownloadFile (
 | 
				
			||||||
  IN   HTTP_DOWNLOAD_CONTEXT   *Context,
 | 
					  IN   HTTP_DOWNLOAD_CONTEXT  *Context,
 | 
				
			||||||
  IN   EFI_HANDLE              ControllerHandle,
 | 
					  IN   EFI_HANDLE             ControllerHandle,
 | 
				
			||||||
  IN   CHAR16                  *NicName
 | 
					  IN   CHAR16                 *NicName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -302,11 +302,11 @@ DownloadFile (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
TrimSpaces (
 | 
					TrimSpaces (
 | 
				
			||||||
  IN CHAR16 *String
 | 
					  IN CHAR16  *String
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16 *Str;
 | 
					  CHAR16  *Str;
 | 
				
			||||||
  UINTN  Len;
 | 
					  UINTN   Len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ASSERT (String != NULL);
 | 
					  ASSERT (String != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -328,7 +328,7 @@ TrimSpaces (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  do {
 | 
					  do {
 | 
				
			||||||
    Len = StrLen (Str);
 | 
					    Len = StrLen (Str);
 | 
				
			||||||
    if (!Len || (Str[Len - 1] != L' ' && Str[Len - 1] != '\t')) {
 | 
					    if (!Len || ((Str[Len - 1] != L' ') && (Str[Len - 1] != '\t'))) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -355,8 +355,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
RequestCallback (
 | 
					RequestCallback (
 | 
				
			||||||
  IN EFI_EVENT Event,
 | 
					  IN EFI_EVENT  Event,
 | 
				
			||||||
  IN VOID      *Context
 | 
					  IN VOID       *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  gRequestCallbackComplete = TRUE;
 | 
					  gRequestCallbackComplete = TRUE;
 | 
				
			||||||
@@ -371,8 +371,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ResponseCallback (
 | 
					ResponseCallback (
 | 
				
			||||||
  IN EFI_EVENT Event,
 | 
					  IN EFI_EVENT  Event,
 | 
				
			||||||
  IN VOID      *Context
 | 
					  IN VOID       *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  gResponseCallbackComplete = TRUE;
 | 
					  gResponseCallbackComplete = TRUE;
 | 
				
			||||||
@@ -396,19 +396,19 @@ EfiGetEpochDays (
 | 
				
			|||||||
  IN  EFI_TIME  *Time
 | 
					  IN  EFI_TIME  *Time
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN a;
 | 
					  UINTN  a;
 | 
				
			||||||
  UINTN y;
 | 
					  UINTN  y;
 | 
				
			||||||
  UINTN m;
 | 
					  UINTN  m;
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Absolute Julian Date representation of the supplied Time.
 | 
					  // Absolute Julian Date representation of the supplied Time.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  UINTN JulianDate;
 | 
					  UINTN  JulianDate;
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Number of days elapsed since EPOCH_JULIAN_DAY.
 | 
					  // 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;
 | 
					  y = Time->Year + 4800 - a;
 | 
				
			||||||
  m = Time->Month + (12 * a) - 3;
 | 
					  m = Time->Month + (12 * a) - 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -437,8 +437,8 @@ EfiTimeToEpoch (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // Number of days elapsed since EPOCH_JULIAN_DAY.
 | 
					  // Number of days elapsed since EPOCH_JULIAN_DAY.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  UINTN EpochDays;
 | 
					  UINTN  EpochDays;
 | 
				
			||||||
  UINTN EpochSeconds;
 | 
					  UINTN  EpochSeconds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  EpochDays = EfiGetEpochDays (Time);
 | 
					  EpochDays = EfiGetEpochDays (Time);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -471,32 +471,32 @@ RunHttp (
 | 
				
			|||||||
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS              Status;
 | 
					  EFI_STATUS               Status;
 | 
				
			||||||
  LIST_ENTRY              *CheckPackage;
 | 
					  LIST_ENTRY               *CheckPackage;
 | 
				
			||||||
  UINTN                   ParamCount;
 | 
					  UINTN                    ParamCount;
 | 
				
			||||||
  UINTN                   HandleCount;
 | 
					  UINTN                    HandleCount;
 | 
				
			||||||
  UINTN                   NicNumber;
 | 
					  UINTN                    NicNumber;
 | 
				
			||||||
  UINTN                   InitialSize;
 | 
					  UINTN                    InitialSize;
 | 
				
			||||||
  UINTN                   ParamOffset;
 | 
					  UINTN                    ParamOffset;
 | 
				
			||||||
  UINTN                   StartSize;
 | 
					  UINTN                    StartSize;
 | 
				
			||||||
  CHAR16                  *ProblemParam;
 | 
					  CHAR16                   *ProblemParam;
 | 
				
			||||||
  CHAR16                  NicName[IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH];
 | 
					  CHAR16                   NicName[IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH];
 | 
				
			||||||
  CHAR16                  *Walker1;
 | 
					  CHAR16                   *Walker1;
 | 
				
			||||||
  CHAR16                  *VStr;
 | 
					  CHAR16                   *VStr;
 | 
				
			||||||
  CONST CHAR16            *UserNicName;
 | 
					  CONST CHAR16             *UserNicName;
 | 
				
			||||||
  CONST CHAR16            *ValueStr;
 | 
					  CONST CHAR16             *ValueStr;
 | 
				
			||||||
  CONST CHAR16            *RemoteFilePath;
 | 
					  CONST CHAR16             *RemoteFilePath;
 | 
				
			||||||
  CONST CHAR16            *Walker;
 | 
					  CONST CHAR16             *Walker;
 | 
				
			||||||
  EFI_HTTPv4_ACCESS_POINT IPv4Node;
 | 
					  EFI_HTTPv4_ACCESS_POINT  IPv4Node;
 | 
				
			||||||
  EFI_HANDLE              *Handles;
 | 
					  EFI_HANDLE               *Handles;
 | 
				
			||||||
  EFI_HANDLE              ControllerHandle;
 | 
					  EFI_HANDLE               ControllerHandle;
 | 
				
			||||||
  HTTP_DOWNLOAD_CONTEXT   Context;
 | 
					  HTTP_DOWNLOAD_CONTEXT    Context;
 | 
				
			||||||
  BOOLEAN                 NicFound;
 | 
					  BOOLEAN                  NicFound;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ProblemParam        = NULL;
 | 
					  ProblemParam   = NULL;
 | 
				
			||||||
  RemoteFilePath      = NULL;
 | 
					  RemoteFilePath = NULL;
 | 
				
			||||||
  NicFound            = FALSE;
 | 
					  NicFound       = FALSE;
 | 
				
			||||||
  Handles             = NULL;
 | 
					  Handles        = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Initialize the Shell library (we must be in non-auto-init...).
 | 
					  // Initialize the Shell library (we must be in non-auto-init...).
 | 
				
			||||||
@@ -522,8 +522,8 @@ RunHttp (
 | 
				
			|||||||
             TRUE
 | 
					             TRUE
 | 
				
			||||||
             );
 | 
					             );
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if ((Status == EFI_VOLUME_CORRUPTED)
 | 
					    if (  (Status == EFI_VOLUME_CORRUPTED)
 | 
				
			||||||
     && (ProblemParam != NULL))
 | 
					       && (ProblemParam != NULL))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      PRINT_HII_APP (STRING_TOKEN (STR_GEN_PROBLEM), ProblemParam);
 | 
					      PRINT_HII_APP (STRING_TOKEN (STR_GEN_PROBLEM), ProblemParam);
 | 
				
			||||||
      SHELL_FREE_NON_NULL (ProblemParam);
 | 
					      SHELL_FREE_NON_NULL (ProblemParam);
 | 
				
			||||||
@@ -554,7 +554,7 @@ RunHttp (
 | 
				
			|||||||
  ZeroMem (&IPv4Node, sizeof (IPv4Node));
 | 
					  ZeroMem (&IPv4Node, sizeof (IPv4Node));
 | 
				
			||||||
  IPv4Node.UseDefaultAddress = TRUE;
 | 
					  IPv4Node.UseDefaultAddress = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Context.HttpConfigData.HttpVersion = HttpVersion11;
 | 
					  Context.HttpConfigData.HttpVersion          = HttpVersion11;
 | 
				
			||||||
  Context.HttpConfigData.AccessPoint.IPv4Node = &IPv4Node;
 | 
					  Context.HttpConfigData.AccessPoint.IPv4Node = &IPv4Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -592,7 +592,7 @@ RunHttp (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (*Walker1 == L'/') {
 | 
					    if (*Walker1 == L'/') {
 | 
				
			||||||
      ParamOffset = 1;
 | 
					      ParamOffset    = 1;
 | 
				
			||||||
      RemoteFilePath = Walker1;
 | 
					      RemoteFilePath = Walker1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -629,7 +629,8 @@ RunHttp (
 | 
				
			|||||||
    Walker = RemoteFilePath + StrLen (RemoteFilePath);
 | 
					    Walker = RemoteFilePath + StrLen (RemoteFilePath);
 | 
				
			||||||
    while ((--Walker) >= RemoteFilePath) {
 | 
					    while ((--Walker) >= RemoteFilePath) {
 | 
				
			||||||
      if ((*Walker == L'\\') ||
 | 
					      if ((*Walker == L'\\') ||
 | 
				
			||||||
          (*Walker == L'/' )    ) {
 | 
					          (*Walker == L'/'))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -659,12 +660,12 @@ RunHttp (
 | 
				
			|||||||
  UserNicName = ShellCommandLineGetValue (CheckPackage, L"-i");
 | 
					  UserNicName = ShellCommandLineGetValue (CheckPackage, L"-i");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ValueStr = ShellCommandLineGetValue (CheckPackage, L"-l");
 | 
					  ValueStr = ShellCommandLineGetValue (CheckPackage, L"-l");
 | 
				
			||||||
  if ((ValueStr != NULL)
 | 
					  if (  (ValueStr != NULL)
 | 
				
			||||||
   && (!StringToUint16 (
 | 
					     && (!StringToUint16 (
 | 
				
			||||||
          ValueStr,
 | 
					            ValueStr,
 | 
				
			||||||
          &Context.HttpConfigData.AccessPoint.IPv4Node->LocalPort
 | 
					            &Context.HttpConfigData.AccessPoint.IPv4Node->LocalPort
 | 
				
			||||||
          )
 | 
					            )
 | 
				
			||||||
      ))
 | 
					         ))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -674,7 +675,7 @@ RunHttp (
 | 
				
			|||||||
  ValueStr = ShellCommandLineGetValue (CheckPackage, L"-s");
 | 
					  ValueStr = ShellCommandLineGetValue (CheckPackage, L"-s");
 | 
				
			||||||
  if (ValueStr != NULL) {
 | 
					  if (ValueStr != NULL) {
 | 
				
			||||||
    Context.BufferSize = ShellStrToUintn (ValueStr);
 | 
					    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);
 | 
					      PRINT_HII_APP (STRING_TOKEN (STR_GEN_PARAM_INV), ValueStr);
 | 
				
			||||||
      goto Error;
 | 
					      goto Error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -756,10 +757,10 @@ RunHttp (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (gHttpError) {
 | 
					    if (gHttpError) {
 | 
				
			||||||
     //
 | 
					      //
 | 
				
			||||||
     // This is not related to connection, so no need to repeat with
 | 
					      // This is not related to connection, so no need to repeat with
 | 
				
			||||||
     // another interface.
 | 
					      // another interface.
 | 
				
			||||||
     //
 | 
					      //
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -841,7 +842,7 @@ GetNicName (
 | 
				
			|||||||
             &gEfiManagedNetworkServiceBindingProtocolGuid,
 | 
					             &gEfiManagedNetworkServiceBindingProtocolGuid,
 | 
				
			||||||
             &gEfiManagedNetworkProtocolGuid,
 | 
					             &gEfiManagedNetworkProtocolGuid,
 | 
				
			||||||
             &MnpHandle,
 | 
					             &MnpHandle,
 | 
				
			||||||
             (VOID**)&Mnp
 | 
					             (VOID **)&Mnp
 | 
				
			||||||
             );
 | 
					             );
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
@@ -907,12 +908,12 @@ CreateServiceChildAndOpenProtocol (
 | 
				
			|||||||
  EFI_STATUS  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *ChildHandle = NULL;
 | 
					  *ChildHandle = NULL;
 | 
				
			||||||
  Status = NetLibCreateServiceChild (
 | 
					  Status       = NetLibCreateServiceChild (
 | 
				
			||||||
             ControllerHandle,
 | 
					                   ControllerHandle,
 | 
				
			||||||
             gImageHandle,
 | 
					                   gImageHandle,
 | 
				
			||||||
             ServiceBindingProtocolGuid,
 | 
					                   ServiceBindingProtocolGuid,
 | 
				
			||||||
             ChildHandle
 | 
					                   ChildHandle
 | 
				
			||||||
             );
 | 
					                   );
 | 
				
			||||||
  if (!EFI_ERROR (Status)) {
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
    Status = gBS->OpenProtocol (
 | 
					    Status = gBS->OpenProtocol (
 | 
				
			||||||
                    *ChildHandle,
 | 
					                    *ChildHandle,
 | 
				
			||||||
@@ -990,8 +991,8 @@ WaitForCompletion (
 | 
				
			|||||||
  IN OUT BOOLEAN            *CallBackComplete
 | 
					  IN OUT BOOLEAN            *CallBackComplete
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
  EFI_EVENT                 WaitEvt;
 | 
					  EFI_EVENT   WaitEvt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = EFI_SUCCESS;
 | 
					  Status = EFI_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1005,25 +1006,25 @@ WaitForCompletion (
 | 
				
			|||||||
                  NULL,
 | 
					                  NULL,
 | 
				
			||||||
                  &WaitEvt
 | 
					                  &WaitEvt
 | 
				
			||||||
                  );
 | 
					                  );
 | 
				
			||||||
   ASSERT_EFI_ERROR (Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (!EFI_ERROR (Status)) {
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
     Status = gBS->SetTimer (
 | 
					    Status = gBS->SetTimer (
 | 
				
			||||||
                     WaitEvt,
 | 
					                    WaitEvt,
 | 
				
			||||||
                     TimerRelative,
 | 
					                    TimerRelative,
 | 
				
			||||||
                     EFI_TIMER_PERIOD_SECONDS (TIMER_MAX_TIMEOUT_S)
 | 
					                    EFI_TIMER_PERIOD_SECONDS (TIMER_MAX_TIMEOUT_S)
 | 
				
			||||||
                     );
 | 
					                    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     ASSERT_EFI_ERROR (Status);
 | 
					    ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
   }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (! *CallBackComplete
 | 
					  while (  !*CallBackComplete
 | 
				
			||||||
      && (!EFI_ERROR (Status))
 | 
					        && (!EFI_ERROR (Status))
 | 
				
			||||||
      && EFI_ERROR (gBS->CheckEvent (WaitEvt)))
 | 
					        && EFI_ERROR (gBS->CheckEvent (WaitEvt)))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    Status = Context->Http->Poll (Context->Http);
 | 
					    Status = Context->Http->Poll (Context->Http);
 | 
				
			||||||
    if (!Context->ContentDownloaded
 | 
					    if (  !Context->ContentDownloaded
 | 
				
			||||||
     && CallBackComplete == &gResponseCallbackComplete)
 | 
					       && (CallBackComplete == &gResponseCallbackComplete))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // An HTTP server may just send a response redirection header.
 | 
					      // 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,
 | 
					      // Note that at this point Response may not has been populated,
 | 
				
			||||||
      // so it needs to be checked first.
 | 
					      // so it needs to be checked first.
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      if (Context->ResponseToken.Message
 | 
					      if (  Context->ResponseToken.Message
 | 
				
			||||||
       && Context->ResponseToken.Message->Data.Response
 | 
					         && Context->ResponseToken.Message->Data.Response
 | 
				
			||||||
       && (NEED_REDIRECTION (
 | 
					         && (NEED_REDIRECTION (
 | 
				
			||||||
            Context->ResponseToken.Message->Data.Response->StatusCode
 | 
					               Context->ResponseToken.Message->Data.Response->StatusCode
 | 
				
			||||||
            )
 | 
					               )
 | 
				
			||||||
         ))
 | 
					             ))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -1079,20 +1080,20 @@ SendRequest (
 | 
				
			|||||||
  IN CHAR16                 *DownloadUrl
 | 
					  IN CHAR16                 *DownloadUrl
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_HTTP_REQUEST_DATA       RequestData;
 | 
					  EFI_HTTP_REQUEST_DATA  RequestData;
 | 
				
			||||||
  EFI_HTTP_HEADER             RequestHeader[HdrMax];
 | 
					  EFI_HTTP_HEADER        RequestHeader[HdrMax];
 | 
				
			||||||
  EFI_HTTP_MESSAGE            RequestMessage;
 | 
					  EFI_HTTP_MESSAGE       RequestMessage;
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS             Status;
 | 
				
			||||||
  CHAR16                      *Host;
 | 
					  CHAR16                 *Host;
 | 
				
			||||||
  UINTN                       StringSize;
 | 
					  UINTN                  StringSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ZeroMem (&RequestData, sizeof (RequestData));
 | 
					  ZeroMem (&RequestData, sizeof (RequestData));
 | 
				
			||||||
  ZeroMem (&RequestHeader, sizeof (RequestHeader));
 | 
					  ZeroMem (&RequestHeader, sizeof (RequestHeader));
 | 
				
			||||||
  ZeroMem (&RequestMessage, sizeof (RequestMessage));
 | 
					  ZeroMem (&RequestMessage, sizeof (RequestMessage));
 | 
				
			||||||
  ZeroMem (&Context->RequestToken, sizeof (Context->RequestToken));
 | 
					  ZeroMem (&Context->RequestToken, sizeof (Context->RequestToken));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RequestHeader[HdrHost].FieldName = "Host";
 | 
					  RequestHeader[HdrHost].FieldName  = "Host";
 | 
				
			||||||
  RequestHeader[HdrConn].FieldName = "Connection";
 | 
					  RequestHeader[HdrConn].FieldName  = "Connection";
 | 
				
			||||||
  RequestHeader[HdrAgent].FieldName = "User-Agent";
 | 
					  RequestHeader[HdrAgent].FieldName = "User-Agent";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Host = (CHAR16 *)Context->ServerAddrAndProto;
 | 
					  Host = (CHAR16 *)Context->ServerAddrAndProto;
 | 
				
			||||||
@@ -1113,7 +1114,7 @@ SendRequest (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  Host++;
 | 
					  Host++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  StringSize = StrLen (Host) + 1;
 | 
					  StringSize                        = StrLen (Host) + 1;
 | 
				
			||||||
  RequestHeader[HdrHost].FieldValue = AllocatePool (StringSize);
 | 
					  RequestHeader[HdrHost].FieldValue = AllocatePool (StringSize);
 | 
				
			||||||
  if (!RequestHeader[HdrHost].FieldValue) {
 | 
					  if (!RequestHeader[HdrHost].FieldValue) {
 | 
				
			||||||
    return EFI_OUT_OF_RESOURCES;
 | 
					    return EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
@@ -1125,17 +1126,17 @@ SendRequest (
 | 
				
			|||||||
    StringSize
 | 
					    StringSize
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RequestHeader[HdrConn].FieldValue = "close";
 | 
					  RequestHeader[HdrConn].FieldValue  = "close";
 | 
				
			||||||
  RequestHeader[HdrAgent].FieldValue = USER_AGENT_HDR;
 | 
					  RequestHeader[HdrAgent].FieldValue = USER_AGENT_HDR;
 | 
				
			||||||
  RequestMessage.HeaderCount = HdrMax;
 | 
					  RequestMessage.HeaderCount         = HdrMax;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RequestData.Method = HttpMethodGet;
 | 
					  RequestData.Method = HttpMethodGet;
 | 
				
			||||||
  RequestData.Url = DownloadUrl;
 | 
					  RequestData.Url    = DownloadUrl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RequestMessage.Data.Request = &RequestData;
 | 
					  RequestMessage.Data.Request = &RequestData;
 | 
				
			||||||
  RequestMessage.Headers = RequestHeader;
 | 
					  RequestMessage.Headers      = RequestHeader;
 | 
				
			||||||
  RequestMessage.BodyLength = 0;
 | 
					  RequestMessage.BodyLength   = 0;
 | 
				
			||||||
  RequestMessage.Body = NULL;
 | 
					  RequestMessage.Body         = NULL;
 | 
				
			||||||
  Context->RequestToken.Event = NULL;
 | 
					  Context->RequestToken.Event = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -1150,10 +1151,10 @@ SendRequest (
 | 
				
			|||||||
                  );
 | 
					                  );
 | 
				
			||||||
  ASSERT_EFI_ERROR (Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Context->RequestToken.Status = EFI_SUCCESS;
 | 
					  Context->RequestToken.Status  = EFI_SUCCESS;
 | 
				
			||||||
  Context->RequestToken.Message = &RequestMessage;
 | 
					  Context->RequestToken.Message = &RequestMessage;
 | 
				
			||||||
  gRequestCallbackComplete = FALSE;
 | 
					  gRequestCallbackComplete      = FALSE;
 | 
				
			||||||
  Status = Context->Http->Request (Context->Http, &Context->RequestToken);
 | 
					  Status                        = Context->Http->Request (Context->Http, &Context->RequestToken);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -1193,15 +1194,15 @@ SavePortion (
 | 
				
			|||||||
  IN CHAR8                  *Buffer
 | 
					  IN CHAR8                  *Buffer
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16            Progress[HTTP_PROGRESS_MESSAGE_SIZE];
 | 
					  CHAR16      Progress[HTTP_PROGRESS_MESSAGE_SIZE];
 | 
				
			||||||
  UINTN             NbOfKb;
 | 
					  UINTN       NbOfKb;
 | 
				
			||||||
  UINTN             Index;
 | 
					  UINTN       Index;
 | 
				
			||||||
  UINTN             LastStep;
 | 
					  UINTN       LastStep;
 | 
				
			||||||
  UINTN             Step;
 | 
					  UINTN       Step;
 | 
				
			||||||
  EFI_STATUS        Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LastStep = 0;
 | 
					  LastStep = 0;
 | 
				
			||||||
  Step = 0;
 | 
					  Step     = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellSetFilePosition (mFileHandle, Context->LastReportedNbOfBytes);
 | 
					  ShellSetFilePosition (mFileHandle, Context->LastReportedNbOfBytes);
 | 
				
			||||||
  Status = ShellWriteFile (mFileHandle, &DownloadLen, Buffer);
 | 
					  Status = ShellWriteFile (mFileHandle, &DownloadLen, Buffer);
 | 
				
			||||||
@@ -1219,14 +1220,14 @@ SavePortion (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Context->ContentDownloaded += DownloadLen;
 | 
					  Context->ContentDownloaded += DownloadLen;
 | 
				
			||||||
  NbOfKb = Context->ContentDownloaded >> 10;
 | 
					  NbOfKb                      = Context->ContentDownloaded >> 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Progress[0] = L'\0';
 | 
					  Progress[0] = L'\0';
 | 
				
			||||||
  if (Context->ContentLength) {
 | 
					  if (Context->ContentLength) {
 | 
				
			||||||
    LastStep  = (Context->LastReportedNbOfBytes * HTTP_PROGRESS_SLIDER_STEPS) /
 | 
					    LastStep = (Context->LastReportedNbOfBytes * HTTP_PROGRESS_SLIDER_STEPS) /
 | 
				
			||||||
                 Context->ContentLength;
 | 
					               Context->ContentLength;
 | 
				
			||||||
    Step      = (Context->ContentDownloaded * HTTP_PROGRESS_SLIDER_STEPS) /
 | 
					    Step = (Context->ContentDownloaded * HTTP_PROGRESS_SLIDER_STEPS) /
 | 
				
			||||||
                 Context->ContentLength;
 | 
					           Context->ContentLength;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Context->LastReportedNbOfBytes = Context->ContentDownloaded;
 | 
					  Context->LastReportedNbOfBytes = Context->ContentDownloaded;
 | 
				
			||||||
@@ -1265,7 +1266,6 @@ SavePortion (
 | 
				
			|||||||
    NbOfKb
 | 
					    NbOfKb
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
  ShellPrintEx (-1, -1, L"%s", Progress);
 | 
					  ShellPrintEx (-1, -1, L"%s", Progress);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
@@ -1286,29 +1286,29 @@ SavePortion (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
SetHostURI (
 | 
					SetHostURI (
 | 
				
			||||||
  IN CHAR8                 *Location,
 | 
					  IN CHAR8                  *Location,
 | 
				
			||||||
  IN HTTP_DOWNLOAD_CONTEXT *Context,
 | 
					  IN HTTP_DOWNLOAD_CONTEXT  *Context,
 | 
				
			||||||
  IN CHAR16                *DownloadUrl
 | 
					  IN CHAR16                 *DownloadUrl
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS    Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
  UINTN         StringSize;
 | 
					  UINTN       StringSize;
 | 
				
			||||||
  UINTN         FirstStep;
 | 
					  UINTN       FirstStep;
 | 
				
			||||||
  UINTN         Idx;
 | 
					  UINTN       Idx;
 | 
				
			||||||
  UINTN         Step;
 | 
					  UINTN       Step;
 | 
				
			||||||
  CHAR8         *Walker;
 | 
					  CHAR8       *Walker;
 | 
				
			||||||
  CHAR16        *Temp;
 | 
					  CHAR16      *Temp;
 | 
				
			||||||
  CHAR8         *Tmp;
 | 
					  CHAR8       *Tmp;
 | 
				
			||||||
  CHAR16        *Url;
 | 
					  CHAR16      *Url;
 | 
				
			||||||
  BOOLEAN       IsAbEmptyUrl;
 | 
					  BOOLEAN     IsAbEmptyUrl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Tmp = NULL;
 | 
					  Tmp          = NULL;
 | 
				
			||||||
  Url = NULL;
 | 
					  Url          = NULL;
 | 
				
			||||||
  IsAbEmptyUrl = FALSE;
 | 
					  IsAbEmptyUrl = FALSE;
 | 
				
			||||||
  FirstStep = 0;
 | 
					  FirstStep    = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  StringSize = (AsciiStrSize (Location) * sizeof (CHAR16));
 | 
					  StringSize = (AsciiStrSize (Location) * sizeof (CHAR16));
 | 
				
			||||||
  Url = AllocateZeroPool (StringSize);
 | 
					  Url        = AllocateZeroPool (StringSize);
 | 
				
			||||||
  if (!Url) {
 | 
					  if (!Url) {
 | 
				
			||||||
    return EFI_OUT_OF_RESOURCES;
 | 
					    return EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -1320,7 +1320,7 @@ SetHostURI (
 | 
				
			|||||||
             );
 | 
					             );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
        goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -1347,11 +1347,11 @@ SetHostURI (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (AsciiStrStr (Location, "://") || IsAbEmptyUrl) {
 | 
					  if (AsciiStrStr (Location, "://") || IsAbEmptyUrl) {
 | 
				
			||||||
    Idx = 0;
 | 
					    Idx    = 0;
 | 
				
			||||||
    Walker = Location;
 | 
					    Walker = Location;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (Step = FirstStep; Step < 2; Step++) {
 | 
					    for (Step = FirstStep; Step < 2; Step++) {
 | 
				
			||||||
      for (; *Walker != '/' && *Walker != '\0'; Walker++) {
 | 
					      for ( ; *Walker != '/' && *Walker != '\0'; Walker++) {
 | 
				
			||||||
        Idx++;
 | 
					        Idx++;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1359,7 +1359,7 @@ SetHostURI (
 | 
				
			|||||||
        //
 | 
					        //
 | 
				
			||||||
        // Skip "//"
 | 
					        // Skip "//"
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        Idx += 2;
 | 
					        Idx    += 2;
 | 
				
			||||||
        Walker += 2;
 | 
					        Walker += 2;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1375,7 +1375,7 @@ SetHostURI (
 | 
				
			|||||||
    //
 | 
					    //
 | 
				
			||||||
    // Location now points to Uri
 | 
					    // Location now points to Uri
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    Location += Idx;
 | 
					    Location  += Idx;
 | 
				
			||||||
    StringSize = (Idx + 1) * sizeof (CHAR16);
 | 
					    StringSize = (Idx + 1) * sizeof (CHAR16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SHELL_FREE_NON_NULL (Context->ServerAddrAndProto);
 | 
					    SHELL_FREE_NON_NULL (Context->ServerAddrAndProto);
 | 
				
			||||||
@@ -1421,7 +1421,7 @@ SetHostURI (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  SHELL_FREE_NON_NULL (Context->Uri);
 | 
					  SHELL_FREE_NON_NULL (Context->Uri);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  StringSize = AsciiStrSize (Location) * sizeof (CHAR16);
 | 
					  StringSize   = AsciiStrSize (Location) * sizeof (CHAR16);
 | 
				
			||||||
  Context->Uri = AllocateZeroPool (StringSize);
 | 
					  Context->Uri = AllocateZeroPool (StringSize);
 | 
				
			||||||
  if (!Context->Uri) {
 | 
					  if (!Context->Uri) {
 | 
				
			||||||
    Status = EFI_OUT_OF_RESOURCES;
 | 
					    Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
@@ -1460,15 +1460,15 @@ STATIC
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseMsg (
 | 
					ParseMsg (
 | 
				
			||||||
  IN HTTP_BODY_PARSE_EVENT      EventType,
 | 
					  IN HTTP_BODY_PARSE_EVENT  EventType,
 | 
				
			||||||
  IN CHAR8                      *Data,
 | 
					  IN CHAR8                  *Data,
 | 
				
			||||||
  IN UINTN                      Length,
 | 
					  IN UINTN                  Length,
 | 
				
			||||||
  IN VOID                       *Context
 | 
					  IN VOID                   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if ((Data == NULL)
 | 
					  if (  (Data == NULL)
 | 
				
			||||||
   || (EventType == BodyParseEventOnComplete)
 | 
					     || (EventType == BodyParseEventOnComplete)
 | 
				
			||||||
   || (Context == NULL))
 | 
					     || (Context == NULL))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    return EFI_SUCCESS;
 | 
					    return EFI_SUCCESS;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -1476,7 +1476,6 @@ ParseMsg (
 | 
				
			|||||||
  return SavePortion (Context, Length, Data);
 | 
					  return SavePortion (Context, Length, Data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Get HTTP server response and collect the whole body as a file.
 | 
					  Get HTTP server response and collect the whole body as a file.
 | 
				
			||||||
  Set appropriate status in Context (REQ_OK, REQ_REPEAT, REQ_ERROR).
 | 
					  Set appropriate status in Context (REQ_OK, REQ_REPEAT, REQ_ERROR).
 | 
				
			||||||
@@ -1498,38 +1497,38 @@ ParseMsg (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
GetResponse (
 | 
					GetResponse (
 | 
				
			||||||
  IN HTTP_DOWNLOAD_CONTEXT    *Context,
 | 
					  IN HTTP_DOWNLOAD_CONTEXT  *Context,
 | 
				
			||||||
  IN CHAR16                   *DownloadUrl
 | 
					  IN CHAR16                 *DownloadUrl
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_HTTP_RESPONSE_DATA      ResponseData;
 | 
					  EFI_HTTP_RESPONSE_DATA  ResponseData;
 | 
				
			||||||
  EFI_HTTP_MESSAGE            ResponseMessage;
 | 
					  EFI_HTTP_MESSAGE        ResponseMessage;
 | 
				
			||||||
  EFI_HTTP_HEADER             *Header;
 | 
					  EFI_HTTP_HEADER         *Header;
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS              Status;
 | 
				
			||||||
  VOID                        *MsgParser;
 | 
					  VOID                    *MsgParser;
 | 
				
			||||||
  EFI_TIME                    StartTime;
 | 
					  EFI_TIME                StartTime;
 | 
				
			||||||
  EFI_TIME                    EndTime;
 | 
					  EFI_TIME                EndTime;
 | 
				
			||||||
  CONST CHAR16                *Desc;
 | 
					  CONST CHAR16            *Desc;
 | 
				
			||||||
  UINTN                       ElapsedSeconds;
 | 
					  UINTN                   ElapsedSeconds;
 | 
				
			||||||
  BOOLEAN                     IsTrunked;
 | 
					  BOOLEAN                 IsTrunked;
 | 
				
			||||||
  BOOLEAN                     CanMeasureTime;
 | 
					  BOOLEAN                 CanMeasureTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ZeroMem (&ResponseData, sizeof (ResponseData));
 | 
					  ZeroMem (&ResponseData, sizeof (ResponseData));
 | 
				
			||||||
  ZeroMem (&ResponseMessage, sizeof (ResponseMessage));
 | 
					  ZeroMem (&ResponseMessage, sizeof (ResponseMessage));
 | 
				
			||||||
  ZeroMem (&Context->ResponseToken, sizeof (Context->ResponseToken));
 | 
					  ZeroMem (&Context->ResponseToken, sizeof (Context->ResponseToken));
 | 
				
			||||||
  IsTrunked = FALSE;
 | 
					  IsTrunked = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ResponseMessage.Body = Context->Buffer;
 | 
					  ResponseMessage.Body           = Context->Buffer;
 | 
				
			||||||
  Context->ResponseToken.Status = EFI_SUCCESS;
 | 
					  Context->ResponseToken.Status  = EFI_SUCCESS;
 | 
				
			||||||
  Context->ResponseToken.Message = &ResponseMessage;
 | 
					  Context->ResponseToken.Message = &ResponseMessage;
 | 
				
			||||||
  Context->ContentLength = 0;
 | 
					  Context->ContentLength         = 0;
 | 
				
			||||||
  Context->Status = REQ_OK;
 | 
					  Context->Status                = REQ_OK;
 | 
				
			||||||
  Status = EFI_SUCCESS;
 | 
					  Status                         = EFI_SUCCESS;
 | 
				
			||||||
  MsgParser = NULL;
 | 
					  MsgParser                      = NULL;
 | 
				
			||||||
  ResponseData.StatusCode = HTTP_STATUS_UNSUPPORTED_STATUS;
 | 
					  ResponseData.StatusCode        = HTTP_STATUS_UNSUPPORTED_STATUS;
 | 
				
			||||||
  ResponseMessage.Data.Response = &ResponseData;
 | 
					  ResponseMessage.Data.Response  = &ResponseData;
 | 
				
			||||||
  Context->ResponseToken.Event = NULL;
 | 
					  Context->ResponseToken.Event   = NULL;
 | 
				
			||||||
  CanMeasureTime = FALSE;
 | 
					  CanMeasureTime                 = FALSE;
 | 
				
			||||||
  if (Context->Flags & DL_FLAG_TIME) {
 | 
					  if (Context->Flags & DL_FLAG_TIME) {
 | 
				
			||||||
    ZeroMem (&StartTime, sizeof (StartTime));
 | 
					    ZeroMem (&StartTime, sizeof (StartTime));
 | 
				
			||||||
    CanMeasureTime = !EFI_ERROR (gRT->GetTime (&StartTime, NULL));
 | 
					    CanMeasureTime = !EFI_ERROR (gRT->GetTime (&StartTime, NULL));
 | 
				
			||||||
@@ -1538,8 +1537,8 @@ GetResponse (
 | 
				
			|||||||
  do {
 | 
					  do {
 | 
				
			||||||
    SHELL_FREE_NON_NULL (ResponseMessage.Headers);
 | 
					    SHELL_FREE_NON_NULL (ResponseMessage.Headers);
 | 
				
			||||||
    ResponseMessage.HeaderCount = 0;
 | 
					    ResponseMessage.HeaderCount = 0;
 | 
				
			||||||
    gResponseCallbackComplete = FALSE;
 | 
					    gResponseCallbackComplete   = FALSE;
 | 
				
			||||||
    ResponseMessage.BodyLength = Context->BufferSize;
 | 
					    ResponseMessage.BodyLength  = Context->BufferSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (ShellGetExecutionBreakFlag ()) {
 | 
					    if (ShellGetExecutionBreakFlag ()) {
 | 
				
			||||||
      Status = EFI_ABORTED;
 | 
					      Status = EFI_ABORTED;
 | 
				
			||||||
@@ -1642,8 +1641,8 @@ GetResponse (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      HttpGetEntityLength (MsgParser, &Context->ContentLength);
 | 
					      HttpGetEntityLength (MsgParser, &Context->ContentLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (ResponseData.StatusCode >= HTTP_STATUS_400_BAD_REQUEST
 | 
					      if (  (ResponseData.StatusCode >= HTTP_STATUS_400_BAD_REQUEST)
 | 
				
			||||||
       && (ResponseData.StatusCode != HTTP_STATUS_308_PERMANENT_REDIRECT))
 | 
					         && (ResponseData.StatusCode != HTTP_STATUS_308_PERMANENT_REDIRECT))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        // Server reported an error via Response code.
 | 
					        // Server reported an error via Response code.
 | 
				
			||||||
@@ -1665,7 +1664,7 @@ GetResponse (
 | 
				
			|||||||
          // This gives an RFC HTTP error.
 | 
					          // This gives an RFC HTTP error.
 | 
				
			||||||
          //
 | 
					          //
 | 
				
			||||||
          Context->Status = ShellStrToUintn (Desc);
 | 
					          Context->Status = ShellStrToUintn (Desc);
 | 
				
			||||||
          Status = ENCODE_ERROR (Context->Status);
 | 
					          Status          = ENCODE_ERROR (Context->Status);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1680,13 +1679,13 @@ GetResponse (
 | 
				
			|||||||
                 ResponseMessage.Body
 | 
					                 ResponseMessage.Body
 | 
				
			||||||
                 );
 | 
					                 );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } while (!HttpIsMessageComplete (MsgParser)
 | 
					  } while (  !HttpIsMessageComplete (MsgParser)
 | 
				
			||||||
        && !EFI_ERROR (Status)
 | 
					          && !EFI_ERROR (Status)
 | 
				
			||||||
        && ResponseMessage.BodyLength);
 | 
					          && ResponseMessage.BodyLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Context->Status != REQ_NEED_REPEAT
 | 
					  if (  (Context->Status != REQ_NEED_REPEAT)
 | 
				
			||||||
   && Status == EFI_SUCCESS
 | 
					     && (Status == EFI_SUCCESS)
 | 
				
			||||||
   && CanMeasureTime)
 | 
					     && CanMeasureTime)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    if (!EFI_ERROR (gRT->GetTime (&EndTime, NULL))) {
 | 
					    if (!EFI_ERROR (gRT->GetTime (&EndTime, NULL))) {
 | 
				
			||||||
      ElapsedSeconds = EfiTimeToEpoch (&EndTime) - EfiTimeToEpoch (&StartTime);
 | 
					      ElapsedSeconds = EfiTimeToEpoch (&EndTime) - EfiTimeToEpoch (&StartTime);
 | 
				
			||||||
@@ -1726,22 +1725,22 @@ GetResponse (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
DownloadFile (
 | 
					DownloadFile (
 | 
				
			||||||
  IN HTTP_DOWNLOAD_CONTEXT   *Context,
 | 
					  IN HTTP_DOWNLOAD_CONTEXT  *Context,
 | 
				
			||||||
  IN EFI_HANDLE              ControllerHandle,
 | 
					  IN EFI_HANDLE             ControllerHandle,
 | 
				
			||||||
  IN CHAR16                  *NicName
 | 
					  IN CHAR16                 *NicName
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                 Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
  CHAR16                     *DownloadUrl;
 | 
					  CHAR16      *DownloadUrl;
 | 
				
			||||||
  UINTN                      UrlSize;
 | 
					  UINTN       UrlSize;
 | 
				
			||||||
  EFI_HANDLE                 HttpChildHandle;
 | 
					  EFI_HANDLE  HttpChildHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ASSERT (Context);
 | 
					  ASSERT (Context);
 | 
				
			||||||
  if (Context == NULL) {
 | 
					  if (Context == NULL) {
 | 
				
			||||||
    return EFI_INVALID_PARAMETER;
 | 
					    return EFI_INVALID_PARAMETER;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  DownloadUrl = NULL;
 | 
					  DownloadUrl     = NULL;
 | 
				
			||||||
  HttpChildHandle = NULL;
 | 
					  HttpChildHandle = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Context->Buffer = AllocatePool (Context->BufferSize);
 | 
					  Context->Buffer = AllocatePool (Context->BufferSize);
 | 
				
			||||||
@@ -1780,7 +1779,7 @@ DownloadFile (
 | 
				
			|||||||
               &gEfiHttpServiceBindingProtocolGuid,
 | 
					               &gEfiHttpServiceBindingProtocolGuid,
 | 
				
			||||||
               &gEfiHttpProtocolGuid,
 | 
					               &gEfiHttpProtocolGuid,
 | 
				
			||||||
               &HttpChildHandle,
 | 
					               &HttpChildHandle,
 | 
				
			||||||
               (VOID**)&Context->Http
 | 
					               (VOID **)&Context->Http
 | 
				
			||||||
               );
 | 
					               );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
@@ -1794,7 +1793,7 @@ DownloadFile (
 | 
				
			|||||||
      goto ON_EXIT;
 | 
					      goto ON_EXIT;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    UrlSize = 0;
 | 
					    UrlSize     = 0;
 | 
				
			||||||
    DownloadUrl = StrnCatGrow (
 | 
					    DownloadUrl = StrnCatGrow (
 | 
				
			||||||
                    &DownloadUrl,
 | 
					                    &DownloadUrl,
 | 
				
			||||||
                    &UrlSize,
 | 
					                    &UrlSize,
 | 
				
			||||||
@@ -1814,7 +1813,8 @@ DownloadFile (
 | 
				
			|||||||
                    &DownloadUrl,
 | 
					                    &DownloadUrl,
 | 
				
			||||||
                    &UrlSize,
 | 
					                    &UrlSize,
 | 
				
			||||||
                    Context->Uri,
 | 
					                    Context->Uri,
 | 
				
			||||||
                    StrLen (Context->Uri));
 | 
					                    StrLen (Context->Uri)
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PRINT_HII (STRING_TOKEN (STR_HTTP_DOWNLOADING), DownloadUrl);
 | 
					    PRINT_HII (STRING_TOKEN (STR_HTTP_DOWNLOADING), DownloadUrl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1828,7 +1828,6 @@ DownloadFile (
 | 
				
			|||||||
    if (Status) {
 | 
					    if (Status) {
 | 
				
			||||||
      goto ON_EXIT;
 | 
					      goto ON_EXIT;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  } while (Context->Status == REQ_NEED_REPEAT);
 | 
					  } while (Context->Status == REQ_NEED_REPEAT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Context->Status) {
 | 
					  if (Context->Status) {
 | 
				
			||||||
@@ -1864,12 +1863,12 @@ ON_EXIT:
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HII_HANDLE
 | 
					EFI_HII_HANDLE
 | 
				
			||||||
InitializeHiiPackage (
 | 
					InitializeHiiPackage (
 | 
				
			||||||
  IN EFI_HANDLE                  ImageHandle
 | 
					  IN EFI_HANDLE  ImageHandle
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS                   Status;
 | 
				
			||||||
  EFI_HII_PACKAGE_LIST_HEADER *PackageList;
 | 
					  EFI_HII_PACKAGE_LIST_HEADER  *PackageList;
 | 
				
			||||||
  EFI_HII_HANDLE              HiiHandle;
 | 
					  EFI_HII_HANDLE               HiiHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Retrieve HII package list from ImageHandle.
 | 
					  // Retrieve HII package list from ImageHandle.
 | 
				
			||||||
@@ -1891,11 +1890,11 @@ InitializeHiiPackage (
 | 
				
			|||||||
  // Publish HII package list to HII Database.
 | 
					  // Publish HII package list to HII Database.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = gHiiDatabase->NewPackageList (
 | 
					  Status = gHiiDatabase->NewPackageList (
 | 
				
			||||||
             gHiiDatabase,
 | 
					                           gHiiDatabase,
 | 
				
			||||||
             PackageList,
 | 
					                           PackageList,
 | 
				
			||||||
             NULL,
 | 
					                           NULL,
 | 
				
			||||||
             &HiiHandle
 | 
					                           &HiiHandle
 | 
				
			||||||
             );
 | 
					                           );
 | 
				
			||||||
  ASSERT_EFI_ERROR (Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@
 | 
				
			|||||||
#include <Protocol/HttpUtilities.h>
 | 
					#include <Protocol/HttpUtilities.h>
 | 
				
			||||||
#include <Protocol/ServiceBinding.h>
 | 
					#include <Protocol/ServiceBinding.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HTTP_APP_NAME L"http"
 | 
					#define HTTP_APP_NAME  L"http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define REQ_OK           0
 | 
					#define REQ_OK           0
 | 
				
			||||||
#define REQ_NEED_REPEAT  1
 | 
					#define REQ_NEED_REPEAT  1
 | 
				
			||||||
@@ -40,25 +40,25 @@
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// Download Flags.
 | 
					// Download Flags.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
#define DL_FLAG_TIME     BIT0 // Show elapsed time.
 | 
					#define DL_FLAG_TIME      BIT0 // Show elapsed time.
 | 
				
			||||||
#define DL_FLAG_KEEP_BAD BIT1 // Keep files even if download failed.
 | 
					#define DL_FLAG_KEEP_BAD  BIT1 // Keep files even if download failed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_HII_HANDLE mHttpHiiHandle;
 | 
					extern EFI_HII_HANDLE  mHttpHiiHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINTN                 ContentDownloaded;
 | 
					  UINTN                   ContentDownloaded;
 | 
				
			||||||
  UINTN                 ContentLength;
 | 
					  UINTN                   ContentLength;
 | 
				
			||||||
  UINTN                 LastReportedNbOfBytes;
 | 
					  UINTN                   LastReportedNbOfBytes;
 | 
				
			||||||
  UINTN                 BufferSize;
 | 
					  UINTN                   BufferSize;
 | 
				
			||||||
  UINTN                 Status;
 | 
					  UINTN                   Status;
 | 
				
			||||||
  UINTN                 Flags;
 | 
					  UINTN                   Flags;
 | 
				
			||||||
  UINT8                 *Buffer;
 | 
					  UINT8                   *Buffer;
 | 
				
			||||||
  CHAR16                *ServerAddrAndProto;
 | 
					  CHAR16                  *ServerAddrAndProto;
 | 
				
			||||||
  CHAR16                *Uri;
 | 
					  CHAR16                  *Uri;
 | 
				
			||||||
  EFI_HTTP_TOKEN        ResponseToken;
 | 
					  EFI_HTTP_TOKEN          ResponseToken;
 | 
				
			||||||
  EFI_HTTP_TOKEN        RequestToken;
 | 
					  EFI_HTTP_TOKEN          RequestToken;
 | 
				
			||||||
  EFI_HTTP_PROTOCOL     *Http;
 | 
					  EFI_HTTP_PROTOCOL       *Http;
 | 
				
			||||||
  EFI_HTTP_CONFIG_DATA  HttpConfigData;
 | 
					  EFI_HTTP_CONFIG_DATA    HttpConfigData;
 | 
				
			||||||
} HTTP_DOWNLOAD_CONTEXT;
 | 
					} HTTP_DOWNLOAD_CONTEXT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -87,6 +87,7 @@ RunHttp (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HII_HANDLE
 | 
					EFI_HII_HANDLE
 | 
				
			||||||
InitializeHiiPackage (
 | 
					InitializeHiiPackage (
 | 
				
			||||||
  IN EFI_HANDLE                  ImageHandle
 | 
					  IN EFI_HANDLE  ImageHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // _HTTP_H_
 | 
					#endif // _HTTP_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@
 | 
				
			|||||||
 * Thus the application can use '-?' option to show help message in Shell.
 | 
					 * Thus the application can use '-?' option to show help message in Shell.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
GLOBAL_REMOVE_IF_UNREFERENCED
 | 
					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.
 | 
					  Entry point of Http standalone application.
 | 
				
			||||||
@@ -35,12 +35,12 @@ EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_GET_HELP_HTTP);
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
HttpAppInitialize (
 | 
					HttpAppInitialize (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE         *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS    Status;
 | 
				
			||||||
  SHELL_STATUS                ShellStatus;
 | 
					  SHELL_STATUS  ShellStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mHttpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
					  mHttpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
				
			||||||
  if (mHttpHiiHandle == NULL) {
 | 
					  if (mHttpHiiHandle == NULL) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,10 +28,10 @@
 | 
				
			|||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
HttpCommandHandler (
 | 
					HttpCommandHandler (
 | 
				
			||||||
  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL    *This,
 | 
					  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL  *This,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE                      *SystemTable,
 | 
					  IN EFI_SYSTEM_TABLE                    *SystemTable,
 | 
				
			||||||
  IN EFI_SHELL_PARAMETERS_PROTOCOL         *ShellParameters,
 | 
					  IN EFI_SHELL_PARAMETERS_PROTOCOL       *ShellParameters,
 | 
				
			||||||
  IN EFI_SHELL_PROTOCOL                    *Shell
 | 
					  IN EFI_SHELL_PROTOCOL                  *Shell
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  gEfiShellParametersProtocol = ShellParameters;
 | 
					  gEfiShellParametersProtocol = ShellParameters;
 | 
				
			||||||
@@ -53,8 +53,8 @@ HttpCommandHandler (
 | 
				
			|||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
HttpCommandGetHelp (
 | 
					HttpCommandGetHelp (
 | 
				
			||||||
  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL    *This,
 | 
					  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL  *This,
 | 
				
			||||||
  IN CONST CHAR8                           *Language
 | 
					  IN CONST CHAR8                         *Language
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return HiiGetString (
 | 
					  return HiiGetString (
 | 
				
			||||||
@@ -64,7 +64,7 @@ HttpCommandGetHelp (
 | 
				
			|||||||
           );
 | 
					           );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mHttpDynamicCommand = {
 | 
					EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL  mHttpDynamicCommand = {
 | 
				
			||||||
  HTTP_APP_NAME,
 | 
					  HTTP_APP_NAME,
 | 
				
			||||||
  HttpCommandHandler,
 | 
					  HttpCommandHandler,
 | 
				
			||||||
  HttpCommandGetHelp
 | 
					  HttpCommandGetHelp
 | 
				
			||||||
@@ -85,11 +85,11 @@ EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mHttpDynamicCommand = {
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
HttpCommandInitialize (
 | 
					HttpCommandInitialize (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE         *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mHttpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
					  mHttpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
				
			||||||
  if (mHttpHiiHandle == NULL) {
 | 
					  if (mHttpHiiHandle == NULL) {
 | 
				
			||||||
@@ -117,10 +117,10 @@ HttpCommandInitialize (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
HttpUnload (
 | 
					HttpUnload (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle
 | 
					  IN EFI_HANDLE  ImageHandle
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->UninstallProtocolInterface (
 | 
					  Status = gBS->UninstallProtocolInterface (
 | 
				
			||||||
                  ImageHandle,
 | 
					                  ImageHandle,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,8 +10,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "Tftp.h"
 | 
					#include "Tftp.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH 32
 | 
					#define IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH  32
 | 
				
			||||||
EFI_HII_HANDLE   mTftpHiiHandle;
 | 
					EFI_HII_HANDLE  mTftpHiiHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
   Constant strings and definitions related to the message indicating the amount of
 | 
					   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
 | 
					// Frame for the progression slider
 | 
				
			||||||
STATIC CONST CHAR16 mTftpProgressFrame[] = L"[                                        ]";
 | 
					STATIC CONST CHAR16  mTftpProgressFrame[] = L"[                                        ]";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Number of steps in the progression slider
 | 
					// Number of steps in the progression slider
 | 
				
			||||||
#define TFTP_PROGRESS_SLIDER_STEPS  ((sizeof (mTftpProgressFrame) / sizeof (CHAR16)) - 3)
 | 
					#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 :
 | 
					// String to delete the TFTP progress message to be able to update it :
 | 
				
			||||||
// (TFTP_PROGRESS_MESSAGE_SIZE-1) '\b'
 | 
					// (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
 | 
					// Local File Handle
 | 
				
			||||||
SHELL_FILE_HANDLE     mFileHandle;
 | 
					SHELL_FILE_HANDLE  mFileHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Path of the local file, Unicode encoded
 | 
					// Path of the local file, Unicode encoded
 | 
				
			||||||
CONST CHAR16         *mLocalFilePath;
 | 
					CONST CHAR16  *mLocalFilePath;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Check and convert the UINT16 option values of the 'tftp' command
 | 
					  Check and convert the UINT16 option values of the 'tftp' command
 | 
				
			||||||
@@ -206,49 +206,57 @@ CheckPacket (
 | 
				
			|||||||
  IN EFI_MTFTP4_PACKET    *Packet
 | 
					  IN EFI_MTFTP4_PACKET    *Packet
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EFI_MTFTP4_CONFIG_DATA DefaultMtftp4ConfigData = {
 | 
					EFI_MTFTP4_CONFIG_DATA  DefaultMtftp4ConfigData = {
 | 
				
			||||||
  TRUE,                             // Use default setting
 | 
					  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,                                // 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
 | 
					  69,                               // InitialServerPort - Standard TFTP server port
 | 
				
			||||||
  6,                                // TryCount          - The number of times to transmit request packets and wait for a response.
 | 
					  6,                                // TryCount          - The number of times to transmit request packets and wait for a response.
 | 
				
			||||||
  4                                 // TimeoutValue      - Retransmission timeout in seconds.
 | 
					  4                                 // TimeoutValue      - Retransmission timeout in seconds.
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
 | 
					STATIC CONST SHELL_PARAM_ITEM  ParamList[] = {
 | 
				
			||||||
  {L"-i", TypeValue},
 | 
					  { L"-i", TypeValue },
 | 
				
			||||||
  {L"-l", TypeValue},
 | 
					  { L"-l", TypeValue },
 | 
				
			||||||
  {L"-r", TypeValue},
 | 
					  { L"-r", TypeValue },
 | 
				
			||||||
  {L"-c", TypeValue},
 | 
					  { L"-c", TypeValue },
 | 
				
			||||||
  {L"-t", TypeValue},
 | 
					  { L"-t", TypeValue },
 | 
				
			||||||
  {L"-s", TypeValue},
 | 
					  { L"-s", TypeValue },
 | 
				
			||||||
  {L"-w", TypeValue},
 | 
					  { L"-w", TypeValue },
 | 
				
			||||||
  {NULL , TypeMax}
 | 
					  { NULL,  TypeMax   }
 | 
				
			||||||
  };
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// The default block size (512) of tftp is defined in the RFC1350.
 | 
					/// 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.
 | 
					/// The valid range of block size option is defined in the RFC2348.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
#define MTFTP_MIN_BLKSIZE          8
 | 
					#define MTFTP_MIN_BLKSIZE  8
 | 
				
			||||||
#define MTFTP_MAX_BLKSIZE          65464
 | 
					#define MTFTP_MAX_BLKSIZE  65464
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// The default windowsize (1) of tftp.
 | 
					/// The default windowsize (1) of tftp.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
#define MTFTP_DEFAULT_WINDOWSIZE   1
 | 
					#define MTFTP_DEFAULT_WINDOWSIZE  1
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// The valid range of window size option.
 | 
					/// The valid range of window size option.
 | 
				
			||||||
/// Note that: RFC 7440 does not mention max window size value, but for the
 | 
					/// Note that: RFC 7440 does not mention max window size value, but for the
 | 
				
			||||||
/// stability reason, the value is limited to 64.
 | 
					/// stability reason, the value is limited to 64.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
#define MTFTP_MIN_WINDOWSIZE       1
 | 
					#define MTFTP_MIN_WINDOWSIZE  1
 | 
				
			||||||
#define MTFTP_MAX_WINDOWSIZE       64
 | 
					#define MTFTP_MAX_WINDOWSIZE  64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Function for 'tftp' command.
 | 
					  Function for 'tftp' command.
 | 
				
			||||||
@@ -319,15 +327,22 @@ RunTftp (
 | 
				
			|||||||
  Status = ShellCommandLineParse (ParamList, &CheckPackage, &ProblemParam, TRUE);
 | 
					  Status = ShellCommandLineParse (ParamList, &CheckPackage, &ProblemParam, TRUE);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if ((Status == EFI_VOLUME_CORRUPTED) &&
 | 
					    if ((Status == EFI_VOLUME_CORRUPTED) &&
 | 
				
			||||||
        (ProblemParam != NULL) ) {
 | 
					        (ProblemParam != NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), mTftpHiiHandle,
 | 
					        -1,
 | 
				
			||||||
        L"tftp", ProblemParam
 | 
					        -1,
 | 
				
			||||||
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_GEN_PROBLEM),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        L"tftp",
 | 
				
			||||||
 | 
					        ProblemParam
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      FreePool (ProblemParam);
 | 
					      FreePool (ProblemParam);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ASSERT (FALSE);
 | 
					      ASSERT (FALSE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -337,15 +352,24 @@ RunTftp (
 | 
				
			|||||||
  ParamCount = ShellCommandLineGetCount (CheckPackage);
 | 
					  ParamCount = ShellCommandLineGetCount (CheckPackage);
 | 
				
			||||||
  if (ParamCount > 4) {
 | 
					  if (ParamCount > 4) {
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY),
 | 
					      -1,
 | 
				
			||||||
      mTftpHiiHandle, L"tftp"
 | 
					      -1,
 | 
				
			||||||
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_GEN_TOO_MANY),
 | 
				
			||||||
 | 
					      mTftpHiiHandle,
 | 
				
			||||||
 | 
					      L"tftp"
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ParamCount < 3) {
 | 
					  if (ParamCount < 3) {
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW),
 | 
					      -1,
 | 
				
			||||||
      mTftpHiiHandle, L"tftp"
 | 
					      -1,
 | 
				
			||||||
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_GEN_TOO_FEW),
 | 
				
			||||||
 | 
					      mTftpHiiHandle,
 | 
				
			||||||
 | 
					      L"tftp"
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -356,23 +380,29 @@ RunTftp (
 | 
				
			|||||||
  // Check the host IPv4 address
 | 
					  // Check the host IPv4 address
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  ValueStr = ShellCommandLineGetRawValue (CheckPackage, 1);
 | 
					  ValueStr = ShellCommandLineGetRawValue (CheckPackage, 1);
 | 
				
			||||||
  Status = NetLibStrToIp4 (ValueStr, &Mtftp4ConfigData.ServerIp);
 | 
					  Status   = NetLibStrToIp4 (ValueStr, &Mtftp4ConfigData.ServerIp);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
					      -1,
 | 
				
			||||||
      mTftpHiiHandle, L"tftp", ValueStr
 | 
					      -1,
 | 
				
			||||||
    );
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
				
			||||||
 | 
					      mTftpHiiHandle,
 | 
				
			||||||
 | 
					      L"tftp",
 | 
				
			||||||
 | 
					      ValueStr
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RemoteFilePath = ShellCommandLineGetRawValue (CheckPackage, 2);
 | 
					  RemoteFilePath = ShellCommandLineGetRawValue (CheckPackage, 2);
 | 
				
			||||||
  ASSERT(RemoteFilePath != NULL);
 | 
					  ASSERT (RemoteFilePath != NULL);
 | 
				
			||||||
  FilePathSize = StrLen (RemoteFilePath) + 1;
 | 
					  FilePathSize        = StrLen (RemoteFilePath) + 1;
 | 
				
			||||||
  AsciiRemoteFilePath = AllocatePool (FilePathSize);
 | 
					  AsciiRemoteFilePath = AllocatePool (FilePathSize);
 | 
				
			||||||
  if (AsciiRemoteFilePath == NULL) {
 | 
					  if (AsciiRemoteFilePath == NULL) {
 | 
				
			||||||
    ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
					    ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UnicodeStrToAsciiStrS (RemoteFilePath, AsciiRemoteFilePath, FilePathSize);
 | 
					  UnicodeStrToAsciiStrS (RemoteFilePath, AsciiRemoteFilePath, FilePathSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ParamCount == 4) {
 | 
					  if (ParamCount == 4) {
 | 
				
			||||||
@@ -381,10 +411,12 @@ RunTftp (
 | 
				
			|||||||
    Walker = RemoteFilePath + StrLen (RemoteFilePath);
 | 
					    Walker = RemoteFilePath + StrLen (RemoteFilePath);
 | 
				
			||||||
    while ((--Walker) >= RemoteFilePath) {
 | 
					    while ((--Walker) >= RemoteFilePath) {
 | 
				
			||||||
      if ((*Walker == L'\\') ||
 | 
					      if ((*Walker == L'\\') ||
 | 
				
			||||||
          (*Walker == L'/' )    ) {
 | 
					          (*Walker == L'/'))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mLocalFilePath = Walker + 1;
 | 
					    mLocalFilePath = Walker + 1;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -423,11 +455,17 @@ RunTftp (
 | 
				
			|||||||
    if (!StringToUint16 (ValueStr, &Mtftp4ConfigData.TimeoutValue)) {
 | 
					    if (!StringToUint16 (ValueStr, &Mtftp4ConfigData.TimeoutValue)) {
 | 
				
			||||||
      goto Error;
 | 
					      goto Error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (Mtftp4ConfigData.TimeoutValue == 0) {
 | 
					    if (Mtftp4ConfigData.TimeoutValue == 0) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, L"tftp", ValueStr
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        L"tftp",
 | 
				
			||||||
 | 
					        ValueStr
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      goto Error;
 | 
					      goto Error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -437,11 +475,17 @@ RunTftp (
 | 
				
			|||||||
    if (!StringToUint16 (ValueStr, &BlockSize)) {
 | 
					    if (!StringToUint16 (ValueStr, &BlockSize)) {
 | 
				
			||||||
      goto Error;
 | 
					      goto Error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (BlockSize < MTFTP_MIN_BLKSIZE || BlockSize > MTFTP_MAX_BLKSIZE) {
 | 
					
 | 
				
			||||||
 | 
					    if ((BlockSize < MTFTP_MIN_BLKSIZE) || (BlockSize > MTFTP_MAX_BLKSIZE)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, L"tftp", ValueStr
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        L"tftp",
 | 
				
			||||||
 | 
					        ValueStr
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      goto Error;
 | 
					      goto Error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -451,11 +495,17 @@ RunTftp (
 | 
				
			|||||||
    if (!StringToUint16 (ValueStr, &WindowSize)) {
 | 
					    if (!StringToUint16 (ValueStr, &WindowSize)) {
 | 
				
			||||||
      goto Error;
 | 
					      goto Error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (WindowSize < MTFTP_MIN_WINDOWSIZE || WindowSize > MTFTP_MAX_WINDOWSIZE) {
 | 
					
 | 
				
			||||||
 | 
					    if ((WindowSize < MTFTP_MIN_WINDOWSIZE) || (WindowSize > MTFTP_MAX_WINDOWSIZE)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, L"tftp", ValueStr
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        L"tftp",
 | 
				
			||||||
 | 
					        ValueStr
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      goto Error;
 | 
					      goto Error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -464,32 +514,41 @@ RunTftp (
 | 
				
			|||||||
  // Locate all MTFTP4 Service Binding protocols
 | 
					  // Locate all MTFTP4 Service Binding protocols
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  ShellStatus = SHELL_NOT_FOUND;
 | 
					  ShellStatus = SHELL_NOT_FOUND;
 | 
				
			||||||
  Status = gBS->LocateHandleBuffer (
 | 
					  Status      = gBS->LocateHandleBuffer (
 | 
				
			||||||
                 ByProtocol,
 | 
					                       ByProtocol,
 | 
				
			||||||
                 &gEfiManagedNetworkServiceBindingProtocolGuid,
 | 
					                       &gEfiManagedNetworkServiceBindingProtocolGuid,
 | 
				
			||||||
                 NULL,
 | 
					                       NULL,
 | 
				
			||||||
                 &HandleCount,
 | 
					                       &HandleCount,
 | 
				
			||||||
                 &Handles
 | 
					                       &Handles
 | 
				
			||||||
                 );
 | 
					                       );
 | 
				
			||||||
  if (EFI_ERROR (Status) || (HandleCount == 0)) {
 | 
					  if (EFI_ERROR (Status) || (HandleCount == 0)) {
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_NO_NIC),
 | 
					      -1,
 | 
				
			||||||
 | 
					      -1,
 | 
				
			||||||
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_TFTP_ERR_NO_NIC),
 | 
				
			||||||
      mTftpHiiHandle
 | 
					      mTftpHiiHandle
 | 
				
			||||||
    );
 | 
					      );
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (NicNumber = 0;
 | 
					  for (NicNumber = 0;
 | 
				
			||||||
       (NicNumber < HandleCount) && (ShellStatus != SHELL_SUCCESS);
 | 
					       (NicNumber < HandleCount) && (ShellStatus != SHELL_SUCCESS);
 | 
				
			||||||
       NicNumber++) {
 | 
					       NicNumber++)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    ControllerHandle = Handles[NicNumber];
 | 
					    ControllerHandle = Handles[NicNumber];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Status = GetNicName (ControllerHandle, NicNumber, NicName);
 | 
					    Status = GetNicName (ControllerHandle, NicNumber, NicName);
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_NIC_NAME),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, NicNumber, Status
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_TFTP_ERR_NIC_NAME),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        NicNumber,
 | 
				
			||||||
 | 
					        Status
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      continue;
 | 
					      continue;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -497,6 +556,7 @@ RunTftp (
 | 
				
			|||||||
      if (StrCmp (NicName, UserNicName) != 0) {
 | 
					      if (StrCmp (NicName, UserNicName) != 0) {
 | 
				
			||||||
        continue;
 | 
					        continue;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      NicFound = TRUE;
 | 
					      NicFound = TRUE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -505,46 +565,68 @@ RunTftp (
 | 
				
			|||||||
               &gEfiMtftp4ServiceBindingProtocolGuid,
 | 
					               &gEfiMtftp4ServiceBindingProtocolGuid,
 | 
				
			||||||
               &gEfiMtftp4ProtocolGuid,
 | 
					               &gEfiMtftp4ProtocolGuid,
 | 
				
			||||||
               &Mtftp4ChildHandle,
 | 
					               &Mtftp4ChildHandle,
 | 
				
			||||||
               (VOID**)&Mtftp4
 | 
					               (VOID **)&Mtftp4
 | 
				
			||||||
               );
 | 
					               );
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_OPEN_PROTOCOL),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, NicName, Status
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_TFTP_ERR_OPEN_PROTOCOL),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        NicName,
 | 
				
			||||||
 | 
					        Status
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      continue;
 | 
					      continue;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Status = Mtftp4->Configure (Mtftp4, &Mtftp4ConfigData);
 | 
					    Status = Mtftp4->Configure (Mtftp4, &Mtftp4ConfigData);
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_CONFIGURE),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, NicName, Status
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_TFTP_ERR_CONFIGURE),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        NicName,
 | 
				
			||||||
 | 
					        Status
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      goto NextHandle;
 | 
					      goto NextHandle;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Status = GetFileSize (Mtftp4, AsciiRemoteFilePath, &FileSize);
 | 
					    Status = GetFileSize (Mtftp4, AsciiRemoteFilePath, &FileSize);
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_FILE_SIZE),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, RemoteFilePath, NicName, Status
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_TFTP_ERR_FILE_SIZE),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        RemoteFilePath,
 | 
				
			||||||
 | 
					        NicName,
 | 
				
			||||||
 | 
					        Status
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      goto NextHandle;
 | 
					      goto NextHandle;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Status = DownloadFile (Mtftp4, RemoteFilePath, AsciiRemoteFilePath, FileSize, BlockSize, WindowSize);
 | 
					    Status = DownloadFile (Mtftp4, RemoteFilePath, AsciiRemoteFilePath, FileSize, BlockSize, WindowSize);
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_DOWNLOAD),
 | 
					        -1,
 | 
				
			||||||
        mTftpHiiHandle, RemoteFilePath, NicName, Status
 | 
					        -1,
 | 
				
			||||||
      );
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_TFTP_ERR_DOWNLOAD),
 | 
				
			||||||
 | 
					        mTftpHiiHandle,
 | 
				
			||||||
 | 
					        RemoteFilePath,
 | 
				
			||||||
 | 
					        NicName,
 | 
				
			||||||
 | 
					        Status
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
      goto NextHandle;
 | 
					      goto NextHandle;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ShellStatus = SHELL_SUCCESS;
 | 
					    ShellStatus = SHELL_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NextHandle:
 | 
					NextHandle:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CloseProtocolAndDestroyServiceChild (
 | 
					    CloseProtocolAndDestroyServiceChild (
 | 
				
			||||||
      ControllerHandle,
 | 
					      ControllerHandle,
 | 
				
			||||||
@@ -556,22 +638,27 @@ RunTftp (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if ((UserNicName != NULL) && (!NicFound)) {
 | 
					  if ((UserNicName != NULL) && (!NicFound)) {
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_NIC_NOT_FOUND),
 | 
					      -1,
 | 
				
			||||||
      mTftpHiiHandle, UserNicName
 | 
					      -1,
 | 
				
			||||||
    );
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_TFTP_ERR_NIC_NOT_FOUND),
 | 
				
			||||||
 | 
					      mTftpHiiHandle,
 | 
				
			||||||
 | 
					      UserNicName
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Error:
 | 
					Error:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellCommandLineFreeVarList (CheckPackage);
 | 
					  ShellCommandLineFreeVarList (CheckPackage);
 | 
				
			||||||
  if (AsciiRemoteFilePath != NULL) {
 | 
					  if (AsciiRemoteFilePath != NULL) {
 | 
				
			||||||
    FreePool (AsciiRemoteFilePath);
 | 
					    FreePool (AsciiRemoteFilePath);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Handles != NULL) {
 | 
					  if (Handles != NULL) {
 | 
				
			||||||
    FreePool (Handles);
 | 
					    FreePool (Handles);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((ShellStatus != SHELL_SUCCESS) && (EFI_ERROR(Status))) {
 | 
					  if ((ShellStatus != SHELL_SUCCESS) && (EFI_ERROR (Status))) {
 | 
				
			||||||
    ShellStatus = Status & ~MAX_BIT;
 | 
					    ShellStatus = Status & ~MAX_BIT;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -599,9 +686,14 @@ StringToUint16 (
 | 
				
			|||||||
  Val = ShellStrToUintn (ValueStr);
 | 
					  Val = ShellStrToUintn (ValueStr);
 | 
				
			||||||
  if (Val > MAX_UINT16) {
 | 
					  if (Val > MAX_UINT16) {
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
					      -1,
 | 
				
			||||||
      mTftpHiiHandle, L"tftp", ValueStr
 | 
					      -1,
 | 
				
			||||||
    );
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_GEN_PARAM_INV),
 | 
				
			||||||
 | 
					      mTftpHiiHandle,
 | 
				
			||||||
 | 
					      L"tftp",
 | 
				
			||||||
 | 
					      ValueStr
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
    return FALSE;
 | 
					    return FALSE;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -645,7 +737,7 @@ GetNicName (
 | 
				
			|||||||
             &gEfiManagedNetworkServiceBindingProtocolGuid,
 | 
					             &gEfiManagedNetworkServiceBindingProtocolGuid,
 | 
				
			||||||
             &gEfiManagedNetworkProtocolGuid,
 | 
					             &gEfiManagedNetworkProtocolGuid,
 | 
				
			||||||
             &MnpHandle,
 | 
					             &MnpHandle,
 | 
				
			||||||
             (VOID**)&Mnp
 | 
					             (VOID **)&Mnp
 | 
				
			||||||
             );
 | 
					             );
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
@@ -661,7 +753,7 @@ GetNicName (
 | 
				
			|||||||
    IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH,
 | 
					    IP4_CONFIG2_INTERFACE_INFO_NAME_LENGTH,
 | 
				
			||||||
    SnpMode.IfType == NET_IFTYPE_ETHERNET ?
 | 
					    SnpMode.IfType == NET_IFTYPE_ETHERNET ?
 | 
				
			||||||
    L"eth%d" :
 | 
					    L"eth%d" :
 | 
				
			||||||
    L"unk%d" ,
 | 
					    L"unk%d",
 | 
				
			||||||
    NicNumber
 | 
					    NicNumber
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -713,12 +805,12 @@ CreateServiceChildAndOpenProtocol (
 | 
				
			|||||||
  EFI_STATUS  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *ChildHandle = NULL;
 | 
					  *ChildHandle = NULL;
 | 
				
			||||||
  Status = NetLibCreateServiceChild (
 | 
					  Status       = NetLibCreateServiceChild (
 | 
				
			||||||
             ControllerHandle,
 | 
					                   ControllerHandle,
 | 
				
			||||||
             gImageHandle,
 | 
					                   gImageHandle,
 | 
				
			||||||
             ServiceBindingProtocolGuid,
 | 
					                   ServiceBindingProtocolGuid,
 | 
				
			||||||
             ChildHandle
 | 
					                   ChildHandle
 | 
				
			||||||
             );
 | 
					                   );
 | 
				
			||||||
  if (!EFI_ERROR (Status)) {
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
    Status = gBS->OpenProtocol (
 | 
					    Status = gBS->OpenProtocol (
 | 
				
			||||||
                    *ChildHandle,
 | 
					                    *ChildHandle,
 | 
				
			||||||
@@ -810,21 +902,21 @@ GetFileSize (
 | 
				
			|||||||
  UINT32             OptCnt;
 | 
					  UINT32             OptCnt;
 | 
				
			||||||
  UINT8              OptBuf[128];
 | 
					  UINT8              OptBuf[128];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReqOpt[0].OptionStr = (UINT8*)"tsize";
 | 
					  ReqOpt[0].OptionStr = (UINT8 *)"tsize";
 | 
				
			||||||
  OptBuf[0] = '0';
 | 
					  OptBuf[0]           = '0';
 | 
				
			||||||
  OptBuf[1] = 0;
 | 
					  OptBuf[1]           = 0;
 | 
				
			||||||
  ReqOpt[0].ValueStr = OptBuf;
 | 
					  ReqOpt[0].ValueStr  = OptBuf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = Mtftp4->GetInfo (
 | 
					  Status = Mtftp4->GetInfo (
 | 
				
			||||||
             Mtftp4,
 | 
					                     Mtftp4,
 | 
				
			||||||
             NULL,
 | 
					                     NULL,
 | 
				
			||||||
             (UINT8*)FilePath,
 | 
					                     (UINT8 *)FilePath,
 | 
				
			||||||
             NULL,
 | 
					                     NULL,
 | 
				
			||||||
             1,
 | 
					                     1,
 | 
				
			||||||
             ReqOpt,
 | 
					                     ReqOpt,
 | 
				
			||||||
             &PktLen,
 | 
					                     &PktLen,
 | 
				
			||||||
             &Packet
 | 
					                     &Packet
 | 
				
			||||||
             );
 | 
					                     );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
@@ -834,7 +926,7 @@ GetFileSize (
 | 
				
			|||||||
                     Mtftp4,
 | 
					                     Mtftp4,
 | 
				
			||||||
                     PktLen,
 | 
					                     PktLen,
 | 
				
			||||||
                     Packet,
 | 
					                     Packet,
 | 
				
			||||||
                     (UINT32 *) &OptCnt,
 | 
					                     (UINT32 *)&OptCnt,
 | 
				
			||||||
                     &TableOfOptions
 | 
					                     &TableOfOptions
 | 
				
			||||||
                     );
 | 
					                     );
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
@@ -847,16 +939,18 @@ GetFileSize (
 | 
				
			|||||||
      *FileSize = AsciiStrDecimalToUintn ((CHAR8 *)Option->ValueStr);
 | 
					      *FileSize = AsciiStrDecimalToUintn ((CHAR8 *)Option->ValueStr);
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OptCnt--;
 | 
					    OptCnt--;
 | 
				
			||||||
    Option++;
 | 
					    Option++;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FreePool (TableOfOptions);
 | 
					  FreePool (TableOfOptions);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (OptCnt == 0) {
 | 
					  if (OptCnt == 0) {
 | 
				
			||||||
    Status = EFI_UNSUPPORTED;
 | 
					    Status = EFI_UNSUPPORTED;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Error :
 | 
					Error:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return Status;
 | 
					  return Status;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -889,11 +983,11 @@ DownloadFile (
 | 
				
			|||||||
  IN   UINT16               WindowSize
 | 
					  IN   UINT16               WindowSize
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS            Status;
 | 
					  EFI_STATUS        Status;
 | 
				
			||||||
  DOWNLOAD_CONTEXT      *TftpContext;
 | 
					  DOWNLOAD_CONTEXT  *TftpContext;
 | 
				
			||||||
  EFI_MTFTP4_TOKEN      Mtftp4Token;
 | 
					  EFI_MTFTP4_TOKEN  Mtftp4Token;
 | 
				
			||||||
  UINT8                 BlksizeBuf[10];
 | 
					  UINT8             BlksizeBuf[10];
 | 
				
			||||||
  UINT8                 WindowsizeBuf[10];
 | 
					  UINT8             WindowsizeBuf[10];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ZeroMem (&Mtftp4Token, sizeof (EFI_MTFTP4_TOKEN));
 | 
					  ZeroMem (&Mtftp4Token, sizeof (EFI_MTFTP4_TOKEN));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -902,13 +996,14 @@ DownloadFile (
 | 
				
			|||||||
    Status = EFI_OUT_OF_RESOURCES;
 | 
					    Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  TftpContext->FileSize = FileSize;
 | 
					
 | 
				
			||||||
 | 
					  TftpContext->FileSize              = FileSize;
 | 
				
			||||||
  TftpContext->DownloadedNbOfBytes   = 0;
 | 
					  TftpContext->DownloadedNbOfBytes   = 0;
 | 
				
			||||||
  TftpContext->LastReportedNbOfBytes = 0;
 | 
					  TftpContext->LastReportedNbOfBytes = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Mtftp4Token.Filename    = (UINT8*)AsciiFilePath;
 | 
					  Mtftp4Token.Filename    = (UINT8 *)AsciiFilePath;
 | 
				
			||||||
  Mtftp4Token.CheckPacket = CheckPacket;
 | 
					  Mtftp4Token.CheckPacket = CheckPacket;
 | 
				
			||||||
  Mtftp4Token.Context     = (VOID*)TftpContext;
 | 
					  Mtftp4Token.Context     = (VOID *)TftpContext;
 | 
				
			||||||
  Mtftp4Token.OptionCount = 0;
 | 
					  Mtftp4Token.OptionCount = 0;
 | 
				
			||||||
  Mtftp4Token.OptionList  = AllocatePool (sizeof (EFI_MTFTP4_OPTION) * 2);
 | 
					  Mtftp4Token.OptionList  = AllocatePool (sizeof (EFI_MTFTP4_OPTION) * 2);
 | 
				
			||||||
  if (Mtftp4Token.OptionList == NULL) {
 | 
					  if (Mtftp4Token.OptionList == NULL) {
 | 
				
			||||||
@@ -917,22 +1012,26 @@ DownloadFile (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (BlockSize != MTFTP_DEFAULT_BLKSIZE) {
 | 
					  if (BlockSize != MTFTP_DEFAULT_BLKSIZE) {
 | 
				
			||||||
    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *) "blksize";
 | 
					    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *)"blksize";
 | 
				
			||||||
    AsciiSPrint ((CHAR8 *) BlksizeBuf, sizeof (BlksizeBuf), "%d", BlockSize);
 | 
					    AsciiSPrint ((CHAR8 *)BlksizeBuf, sizeof (BlksizeBuf), "%d", BlockSize);
 | 
				
			||||||
    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr  = BlksizeBuf;
 | 
					    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr = BlksizeBuf;
 | 
				
			||||||
    Mtftp4Token.OptionCount ++;
 | 
					    Mtftp4Token.OptionCount++;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (WindowSize != MTFTP_DEFAULT_WINDOWSIZE) {
 | 
					  if (WindowSize != MTFTP_DEFAULT_WINDOWSIZE) {
 | 
				
			||||||
    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *) "windowsize";
 | 
					    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].OptionStr = (UINT8 *)"windowsize";
 | 
				
			||||||
    AsciiSPrint ((CHAR8 *) WindowsizeBuf, sizeof (WindowsizeBuf), "%d", WindowSize);
 | 
					    AsciiSPrint ((CHAR8 *)WindowsizeBuf, sizeof (WindowsizeBuf), "%d", WindowSize);
 | 
				
			||||||
    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr  = WindowsizeBuf;
 | 
					    Mtftp4Token.OptionList[Mtftp4Token.OptionCount].ValueStr = WindowsizeBuf;
 | 
				
			||||||
    Mtftp4Token.OptionCount ++;
 | 
					    Mtftp4Token.OptionCount++;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellPrintHiiEx (
 | 
					  ShellPrintHiiEx (
 | 
				
			||||||
    -1, -1, NULL, STRING_TOKEN (STR_TFTP_DOWNLOADING),
 | 
					    -1,
 | 
				
			||||||
    mTftpHiiHandle, FilePath
 | 
					    -1,
 | 
				
			||||||
 | 
					    NULL,
 | 
				
			||||||
 | 
					    STRING_TOKEN (STR_TFTP_DOWNLOADING),
 | 
				
			||||||
 | 
					    mTftpHiiHandle,
 | 
				
			||||||
 | 
					    FilePath
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -943,24 +1042,32 @@ DownloadFile (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = ShellOpenFileByName (
 | 
					  Status = ShellOpenFileByName (
 | 
				
			||||||
              mLocalFilePath,
 | 
					             mLocalFilePath,
 | 
				
			||||||
              &mFileHandle,
 | 
					             &mFileHandle,
 | 
				
			||||||
              EFI_FILE_MODE_CREATE |
 | 
					             EFI_FILE_MODE_CREATE |
 | 
				
			||||||
              EFI_FILE_MODE_WRITE  |
 | 
					             EFI_FILE_MODE_WRITE  |
 | 
				
			||||||
              EFI_FILE_MODE_READ,
 | 
					             EFI_FILE_MODE_READ,
 | 
				
			||||||
              0
 | 
					             0
 | 
				
			||||||
              );
 | 
					             );
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL),
 | 
					      -1,
 | 
				
			||||||
      mTftpHiiHandle, L"tftp", mLocalFilePath
 | 
					      -1,
 | 
				
			||||||
    );
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL),
 | 
				
			||||||
 | 
					      mTftpHiiHandle,
 | 
				
			||||||
 | 
					      L"tftp",
 | 
				
			||||||
 | 
					      mLocalFilePath
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
    goto Error;
 | 
					    goto Error;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = Mtftp4->ReadFile (Mtftp4, &Mtftp4Token);
 | 
					  Status = Mtftp4->ReadFile (Mtftp4, &Mtftp4Token);
 | 
				
			||||||
  ShellPrintHiiEx (
 | 
					  ShellPrintHiiEx (
 | 
				
			||||||
    -1, -1, NULL, STRING_TOKEN (STR_GEN_CRLF),
 | 
					    -1,
 | 
				
			||||||
 | 
					    -1,
 | 
				
			||||||
 | 
					    NULL,
 | 
				
			||||||
 | 
					    STRING_TOKEN (STR_GEN_CRLF),
 | 
				
			||||||
    mTftpHiiHandle
 | 
					    mTftpHiiHandle
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -969,7 +1076,7 @@ DownloadFile (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  ShellCloseFile (&mFileHandle);
 | 
					  ShellCloseFile (&mFileHandle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Error :
 | 
					Error:
 | 
				
			||||||
  if (TftpContext != NULL) {
 | 
					  if (TftpContext != NULL) {
 | 
				
			||||||
    FreePool (TftpContext);
 | 
					    FreePool (TftpContext);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -1016,7 +1123,7 @@ CheckPacket (
 | 
				
			|||||||
    return EFI_SUCCESS;
 | 
					    return EFI_SUCCESS;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Context = (DOWNLOAD_CONTEXT*)Token->Context;
 | 
					  Context = (DOWNLOAD_CONTEXT *)Token->Context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // The data in the packet are prepended with two UINT16 :
 | 
					  // 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);
 | 
					  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);
 | 
					  Status = ShellWriteFile (mFileHandle, &DownloadLen, Packet->Data.Data);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if (Context->DownloadedNbOfBytes > 0) {
 | 
					    if (Context->DownloadedNbOfBytes > 0) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN (STR_GEN_CRLF),
 | 
					        -1,
 | 
				
			||||||
 | 
					        -1,
 | 
				
			||||||
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_GEN_CRLF),
 | 
				
			||||||
        mTftpHiiHandle
 | 
					        mTftpHiiHandle
 | 
				
			||||||
      );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ShellPrintHiiEx (
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1, -1, NULL, STRING_TOKEN (STR_TFTP_ERR_WRITE),
 | 
					      -1,
 | 
				
			||||||
      mTftpHiiHandle, mLocalFilePath, Status
 | 
					      -1,
 | 
				
			||||||
    );
 | 
					      NULL,
 | 
				
			||||||
 | 
					      STRING_TOKEN (STR_TFTP_ERR_WRITE),
 | 
				
			||||||
 | 
					      mTftpHiiHandle,
 | 
				
			||||||
 | 
					      mLocalFilePath,
 | 
				
			||||||
 | 
					      Status
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
    return Status;
 | 
					    return Status;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1046,11 +1162,11 @@ CheckPacket (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Context->DownloadedNbOfBytes += DownloadLen;
 | 
					  Context->DownloadedNbOfBytes += DownloadLen;
 | 
				
			||||||
  NbOfKb = Context->DownloadedNbOfBytes / 1024;
 | 
					  NbOfKb                        = Context->DownloadedNbOfBytes / 1024;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Progress[0] = L'\0';
 | 
					  Progress[0] = L'\0';
 | 
				
			||||||
  LastStep  = (Context->LastReportedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
 | 
					  LastStep    = (Context->LastReportedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
 | 
				
			||||||
  Step      = (Context->DownloadedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
 | 
					  Step        = (Context->DownloadedNbOfBytes * TFTP_PROGRESS_SLIDER_STEPS) / Context->FileSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Step <= LastStep) {
 | 
					  if (Step <= LastStep) {
 | 
				
			||||||
    return EFI_SUCCESS;
 | 
					    return EFI_SUCCESS;
 | 
				
			||||||
@@ -1059,12 +1175,14 @@ CheckPacket (
 | 
				
			|||||||
  ShellPrintEx (-1, -1, L"%s", mTftpProgressDelete);
 | 
					  ShellPrintEx (-1, -1, L"%s", mTftpProgressDelete);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = StrCpyS (Progress, TFTP_PROGRESS_MESSAGE_SIZE, mTftpProgressFrame);
 | 
					  Status = StrCpyS (Progress, TFTP_PROGRESS_MESSAGE_SIZE, mTftpProgressFrame);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return Status;
 | 
					    return Status;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (Index = 1; Index < Step; Index++) {
 | 
					  for (Index = 1; Index < Step; Index++) {
 | 
				
			||||||
    Progress[Index] = L'=';
 | 
					    Progress[Index] = L'=';
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Progress[Step] = L'>';
 | 
					  Progress[Step] = L'>';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UnicodeSPrint (
 | 
					  UnicodeSPrint (
 | 
				
			||||||
@@ -1089,12 +1207,12 @@ CheckPacket (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HII_HANDLE
 | 
					EFI_HII_HANDLE
 | 
				
			||||||
InitializeHiiPackage (
 | 
					InitializeHiiPackage (
 | 
				
			||||||
  EFI_HANDLE                  ImageHandle
 | 
					  EFI_HANDLE  ImageHandle
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS                   Status;
 | 
				
			||||||
  EFI_HII_PACKAGE_LIST_HEADER *PackageList;
 | 
					  EFI_HII_PACKAGE_LIST_HEADER  *PackageList;
 | 
				
			||||||
  EFI_HII_HANDLE              HiiHandle;
 | 
					  EFI_HII_HANDLE               HiiHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Retrieve HII package list from ImageHandle
 | 
					  // Retrieve HII package list from ImageHandle
 | 
				
			||||||
@@ -1125,5 +1243,6 @@ InitializeHiiPackage (
 | 
				
			|||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return HiiHandle;
 | 
					  return HiiHandle;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,12 +30,12 @@
 | 
				
			|||||||
#include <Library/PrintLib.h>
 | 
					#include <Library/PrintLib.h>
 | 
				
			||||||
#include <Library/UefiHiiServicesLib.h>
 | 
					#include <Library/UefiHiiServicesLib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_HII_HANDLE mTftpHiiHandle;
 | 
					extern EFI_HII_HANDLE  mTftpHiiHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINTN  FileSize;
 | 
					  UINTN    FileSize;
 | 
				
			||||||
  UINTN  DownloadedNbOfBytes;
 | 
					  UINTN    DownloadedNbOfBytes;
 | 
				
			||||||
  UINTN  LastReportedNbOfBytes;
 | 
					  UINTN    LastReportedNbOfBytes;
 | 
				
			||||||
} DOWNLOAD_CONTEXT;
 | 
					} DOWNLOAD_CONTEXT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -64,6 +64,7 @@ RunTftp (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HII_HANDLE
 | 
					EFI_HII_HANDLE
 | 
				
			||||||
InitializeHiiPackage (
 | 
					InitializeHiiPackage (
 | 
				
			||||||
  EFI_HANDLE                  ImageHandle
 | 
					  EFI_HANDLE  ImageHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // _TFTP_H_
 | 
					#endif // _TFTP_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
// the resource section. Thus the application can use '-?' option to show help message in
 | 
					// the resource section. Thus the application can use '-?' option to show help message in
 | 
				
			||||||
// Shell.
 | 
					// 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.
 | 
					  Entry point of Tftp standalone application.
 | 
				
			||||||
@@ -32,11 +32,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (S
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
TftpAppInitialize (
 | 
					TftpAppInitialize (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE         *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mTftpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
					  mTftpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
				
			||||||
  if (mTftpHiiHandle == NULL) {
 | 
					  if (mTftpHiiHandle == NULL) {
 | 
				
			||||||
    return EFI_ABORTED;
 | 
					    return EFI_ABORTED;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,10 +26,10 @@
 | 
				
			|||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
TftpCommandHandler (
 | 
					TftpCommandHandler (
 | 
				
			||||||
  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL    *This,
 | 
					  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL  *This,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE                      *SystemTable,
 | 
					  IN EFI_SYSTEM_TABLE                    *SystemTable,
 | 
				
			||||||
  IN EFI_SHELL_PARAMETERS_PROTOCOL         *ShellParameters,
 | 
					  IN EFI_SHELL_PARAMETERS_PROTOCOL       *ShellParameters,
 | 
				
			||||||
  IN EFI_SHELL_PROTOCOL                    *Shell
 | 
					  IN EFI_SHELL_PROTOCOL                  *Shell
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  gEfiShellParametersProtocol = ShellParameters;
 | 
					  gEfiShellParametersProtocol = ShellParameters;
 | 
				
			||||||
@@ -50,14 +50,14 @@ TftpCommandHandler (
 | 
				
			|||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
TftpCommandGetHelp (
 | 
					TftpCommandGetHelp (
 | 
				
			||||||
  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL    *This,
 | 
					  IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL  *This,
 | 
				
			||||||
  IN CONST CHAR8                           *Language
 | 
					  IN CONST CHAR8                         *Language
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return HiiGetString (mTftpHiiHandle, STRING_TOKEN (STR_GET_HELP_TFTP), 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",
 | 
					  L"tftp",
 | 
				
			||||||
  TftpCommandHandler,
 | 
					  TftpCommandHandler,
 | 
				
			||||||
  TftpCommandGetHelp
 | 
					  TftpCommandGetHelp
 | 
				
			||||||
@@ -78,11 +78,12 @@ EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mTftpDynamicCommand = {
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
TftpCommandInitialize (
 | 
					TftpCommandInitialize (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE         *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mTftpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
					  mTftpHiiHandle = InitializeHiiPackage (ImageHandle);
 | 
				
			||||||
  if (mTftpHiiHandle == NULL) {
 | 
					  if (mTftpHiiHandle == NULL) {
 | 
				
			||||||
    return EFI_ABORTED;
 | 
					    return EFI_ABORTED;
 | 
				
			||||||
@@ -109,10 +110,11 @@ TftpCommandInitialize (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
TftpUnload (
 | 
					TftpUnload (
 | 
				
			||||||
  IN EFI_HANDLE               ImageHandle
 | 
					  IN EFI_HANDLE  ImageHandle
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                  Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->UninstallProtocolInterface (
 | 
					  Status = gBS->UninstallProtocolInterface (
 | 
				
			||||||
                  ImageHandle,
 | 
					                  ImageHandle,
 | 
				
			||||||
                  &gEfiShellDynamicCommandProtocolGuid,
 | 
					                  &gEfiShellDynamicCommandProtocolGuid,
 | 
				
			||||||
@@ -121,6 +123,7 @@ TftpUnload (
 | 
				
			|||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return Status;
 | 
					    return Status;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  HiiRemovePackages (mTftpHiiHandle);
 | 
					  HiiRemovePackages (mTftpHiiHandle);
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,6 @@
 | 
				
			|||||||
  0x0053d9d6, 0x2659, 0x4599, { 0xa2, 0x6b, 0xef, 0x45, 0x36, 0xe6, 0x31, 0xa9 } \
 | 
					  0x0053d9d6, 0x2659, 0x4599, { 0xa2, 0x6b, 0xef, 0x45, 0x36, 0xe6, 0x31, 0xa9 } \
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gShellAliasGuid;
 | 
					extern EFI_GUID  gShellAliasGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,6 @@
 | 
				
			|||||||
  0xd2c18636, 0x40e5, 0x4eb5, {0xa3, 0x1b, 0x36, 0x69, 0x5f, 0xd4, 0x2c, 0x87} \
 | 
					  0xd2c18636, 0x40e5, 0x4eb5, {0xa3, 0x1b, 0x36, 0x69, 0x5f, 0xd4, 0x2c, 0x87} \
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gEfiShellEnvironment2ExtGuid;
 | 
					extern EFI_GUID  gEfiShellEnvironment2ExtGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,17 +69,17 @@
 | 
				
			|||||||
    0x5f5f605d, 0x1583, 0x4a2d, {0xa6, 0xb2, 0xeb, 0x12, 0xda, 0xb4, 0xa2, 0xb6 } \
 | 
					    0x5f5f605d, 0x1583, 0x4a2d, {0xa6, 0xb2, 0xeb, 0x12, 0xda, 0xb4, 0xa2, 0xb6 } \
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gHandleParsingHiiGuid;
 | 
					extern EFI_GUID  gHandleParsingHiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellDebug1HiiGuid;
 | 
					extern EFI_GUID  gShellDebug1HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellDriver1HiiGuid;
 | 
					extern EFI_GUID  gShellDriver1HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellInstall1HiiGuid;
 | 
					extern EFI_GUID  gShellInstall1HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellLevel1HiiGuid;
 | 
					extern EFI_GUID  gShellLevel1HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellLevel2HiiGuid;
 | 
					extern EFI_GUID  gShellLevel2HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellLevel3HiiGuid;
 | 
					extern EFI_GUID  gShellLevel3HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellNetwork1HiiGuid;
 | 
					extern EFI_GUID  gShellNetwork1HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellNetwork2HiiGuid;
 | 
					extern EFI_GUID  gShellNetwork2HiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellTftpHiiGuid;
 | 
					extern EFI_GUID  gShellTftpHiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellHttpHiiGuid;
 | 
					extern EFI_GUID  gShellHttpHiiGuid;
 | 
				
			||||||
extern EFI_GUID gShellBcfgHiiGuid;
 | 
					extern EFI_GUID  gShellBcfgHiiGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,6 @@
 | 
				
			|||||||
  0x51271e13, 0x7de3, 0x43af, { 0x8b, 0xc2, 0x71, 0xad, 0x3b, 0x82, 0x43, 0x25 } \
 | 
					  0x51271e13, 0x7de3, 0x43af, { 0x8b, 0xc2, 0x71, 0xad, 0x3b, 0x82, 0x43, 0x25 } \
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gShellMapGuid;
 | 
					extern EFI_GUID  gShellMapGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,6 @@
 | 
				
			|||||||
  0x171e9188, 0x31d3, 0x40f5, { 0xb1, 0xc, 0x53, 0x9b, 0x2d, 0xb9, 0x40, 0xcd } \
 | 
					  0x171e9188, 0x31d3, 0x40f5, { 0xb1, 0xc, 0x53, 0x9b, 0x2d, 0xb9, 0x40, 0xcd } \
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gEfiShellPkgTokenSpaceGuid;
 | 
					extern EFI_GUID  gEfiShellPkgTokenSpaceGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,6 @@
 | 
				
			|||||||
  0x158def5a, 0xf656, 0x419c, { 0xb0, 0x27, 0x7a, 0x31, 0x92, 0xc0, 0x79, 0xd2 } \
 | 
					  0x158def5a, 0xf656, 0x419c, { 0xb0, 0x27, 0x7a, 0x31, 0x92, 0xc0, 0x79, 0xd2 } \
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gShellVariableGuid;
 | 
					extern EFI_GUID  gShellVariableGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,8 @@
 | 
				
			|||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellDumpBufferToFile (
 | 
					ShellDumpBufferToFile (
 | 
				
			||||||
  IN CONST CHAR16* FileNameBuffer,
 | 
					  IN CONST CHAR16  *FileNameBuffer,
 | 
				
			||||||
  IN CONST VOID*   Buffer,
 | 
					  IN CONST VOID    *Buffer,
 | 
				
			||||||
  IN CONST UINTN   BufferSize
 | 
					  IN CONST UINTN   BufferSize
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,4 +43,3 @@ BcfgLibraryUnregisterBcfgCommand (
 | 
				
			|||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,10 +26,10 @@
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
AddNewGuidNameMapping(
 | 
					AddNewGuidNameMapping (
 | 
				
			||||||
  IN CONST EFI_GUID *Guid,
 | 
					  IN CONST EFI_GUID  *Guid,
 | 
				
			||||||
  IN CONST CHAR16   *TheName,
 | 
					  IN CONST CHAR16    *TheName,
 | 
				
			||||||
  IN CONST CHAR8    *Lang OPTIONAL
 | 
					  IN CONST CHAR8     *Lang OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -43,11 +43,11 @@ AddNewGuidNameMapping(
 | 
				
			|||||||
  @return                       The pointer to a string of the name.  The caller
 | 
					  @return                       The pointer to a string of the name.  The caller
 | 
				
			||||||
                                is responsible to free this memory.
 | 
					                                is responsible to free this memory.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetStringNameFromGuid(
 | 
					GetStringNameFromGuid (
 | 
				
			||||||
  IN CONST EFI_GUID *Guid,
 | 
					  IN CONST EFI_GUID  *Guid,
 | 
				
			||||||
  IN CONST CHAR8    *Lang OPTIONAL
 | 
					  IN CONST CHAR8     *Lang OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -63,10 +63,10 @@ GetStringNameFromGuid(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetGuidFromStringName(
 | 
					GetGuidFromStringName (
 | 
				
			||||||
  IN CONST CHAR16 *Name,
 | 
					  IN CONST CHAR16  *Name,
 | 
				
			||||||
  IN CONST CHAR8  *Lang OPTIONAL,
 | 
					  IN CONST CHAR8   *Lang OPTIONAL,
 | 
				
			||||||
  OUT EFI_GUID    **Guid
 | 
					  OUT EFI_GUID     **Guid
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -85,12 +85,12 @@ GetGuidFromStringName(
 | 
				
			|||||||
  @return                   The pointer to string.
 | 
					  @return                   The pointer to string.
 | 
				
			||||||
  @retval NULL              An error was encountered.
 | 
					  @retval NULL              An error was encountered.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetProtocolInformationDump(
 | 
					GetProtocolInformationDump (
 | 
				
			||||||
  IN CONST EFI_HANDLE TheHandle,
 | 
					  IN CONST EFI_HANDLE  TheHandle,
 | 
				
			||||||
  IN CONST EFI_GUID   *Guid,
 | 
					  IN CONST EFI_GUID    *Guid,
 | 
				
			||||||
  IN CONST BOOLEAN    Verbose
 | 
					  IN CONST BOOLEAN     Verbose
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -105,11 +105,11 @@ GetProtocolInformationDump(
 | 
				
			|||||||
  @retval NULL              The name could not be found.
 | 
					  @retval NULL              The name could not be found.
 | 
				
			||||||
  @return                   A pointer to the string name.  Do not de-allocate the memory.
 | 
					  @return                   A pointer to the string name.  Do not de-allocate the memory.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetStringNameFromHandle(
 | 
					GetStringNameFromHandle (
 | 
				
			||||||
  IN CONST EFI_HANDLE TheHandle,
 | 
					  IN CONST EFI_HANDLE  TheHandle,
 | 
				
			||||||
  IN CONST CHAR8      *Language
 | 
					  IN CONST CHAR8       *Language
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -133,19 +133,19 @@ GetBestLanguageForDriver (
 | 
				
			|||||||
  IN BOOLEAN      Iso639Language
 | 
					  IN BOOLEAN      Iso639Language
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HR_UNKNOWN                     0
 | 
					#define HR_UNKNOWN                      0
 | 
				
			||||||
#define HR_IMAGE_HANDLE                BIT1
 | 
					#define HR_IMAGE_HANDLE                 BIT1
 | 
				
			||||||
#define HR_DRIVER_BINDING_HANDLE       BIT2 // has driver binding
 | 
					#define HR_DRIVER_BINDING_HANDLE        BIT2 // has driver binding
 | 
				
			||||||
#define HR_DEVICE_DRIVER               BIT3 // device driver (hybrid?)
 | 
					#define HR_DEVICE_DRIVER                BIT3 // device driver (hybrid?)
 | 
				
			||||||
#define HR_BUS_DRIVER                  BIT4 // a bus driver  (hybrid?)
 | 
					#define HR_BUS_DRIVER                   BIT4 // a bus driver  (hybrid?)
 | 
				
			||||||
#define HR_DRIVER_CONFIGURATION_HANDLE BIT5
 | 
					#define HR_DRIVER_CONFIGURATION_HANDLE  BIT5
 | 
				
			||||||
#define HR_DRIVER_DIAGNOSTICS_HANDLE   BIT6
 | 
					#define HR_DRIVER_DIAGNOSTICS_HANDLE    BIT6
 | 
				
			||||||
#define HR_COMPONENT_NAME_HANDLE       BIT7
 | 
					#define HR_COMPONENT_NAME_HANDLE        BIT7
 | 
				
			||||||
#define HR_DEVICE_HANDLE               BIT8
 | 
					#define HR_DEVICE_HANDLE                BIT8
 | 
				
			||||||
#define HR_PARENT_HANDLE               BIT9
 | 
					#define HR_PARENT_HANDLE                BIT9
 | 
				
			||||||
#define HR_CONTROLLER_HANDLE           BIT10
 | 
					#define HR_CONTROLLER_HANDLE            BIT10
 | 
				
			||||||
#define HR_CHILD_HANDLE                BIT11
 | 
					#define HR_CHILD_HANDLE                 BIT11
 | 
				
			||||||
#define HR_VALID_MASK                  (BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7|BIT8|BIT9|BIT10|BIT11)
 | 
					#define HR_VALID_MASK                   (BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7|BIT8|BIT9|BIT10|BIT11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Gets all the related EFI_HANDLEs based on the mask supplied.
 | 
					  Gets all the related EFI_HANDLEs based on the mask supplied.
 | 
				
			||||||
@@ -177,11 +177,11 @@ GetBestLanguageForDriver (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseHandleDatabaseByRelationship (
 | 
					ParseHandleDatabaseByRelationship (
 | 
				
			||||||
  IN CONST EFI_HANDLE       DriverBindingHandle OPTIONAL,
 | 
					  IN CONST EFI_HANDLE  DriverBindingHandle OPTIONAL,
 | 
				
			||||||
  IN CONST EFI_HANDLE       ControllerHandle OPTIONAL,
 | 
					  IN CONST EFI_HANDLE  ControllerHandle OPTIONAL,
 | 
				
			||||||
  IN CONST UINTN            Mask,
 | 
					  IN CONST UINTN       Mask,
 | 
				
			||||||
  IN UINTN                  *MatchingHandleCount,
 | 
					  IN UINTN             *MatchingHandleCount,
 | 
				
			||||||
  OUT EFI_HANDLE            **MatchingHandleBuffer OPTIONAL
 | 
					  OUT EFI_HANDLE       **MatchingHandleBuffer OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -213,11 +213,11 @@ ParseHandleDatabaseByRelationship (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseHandleDatabaseByRelationshipWithType (
 | 
					ParseHandleDatabaseByRelationshipWithType (
 | 
				
			||||||
  IN CONST EFI_HANDLE DriverBindingHandle OPTIONAL,
 | 
					  IN CONST EFI_HANDLE  DriverBindingHandle OPTIONAL,
 | 
				
			||||||
  IN CONST EFI_HANDLE ControllerHandle OPTIONAL,
 | 
					  IN CONST EFI_HANDLE  ControllerHandle OPTIONAL,
 | 
				
			||||||
  IN UINTN            *HandleCount,
 | 
					  IN UINTN             *HandleCount,
 | 
				
			||||||
  OUT EFI_HANDLE      **HandleBuffer,
 | 
					  OUT EFI_HANDLE       **HandleBuffer,
 | 
				
			||||||
  OUT UINTN           **HandleType
 | 
					  OUT UINTN            **HandleType
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -290,10 +290,10 @@ ParseHandleDatabaseByRelationshipWithType (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseHandleDatabaseForChildDevices(
 | 
					ParseHandleDatabaseForChildDevices (
 | 
				
			||||||
  IN CONST EFI_HANDLE       DriverHandle,
 | 
					  IN CONST EFI_HANDLE  DriverHandle,
 | 
				
			||||||
  IN UINTN                  *MatchingHandleCount,
 | 
					  IN UINTN             *MatchingHandleCount,
 | 
				
			||||||
  OUT EFI_HANDLE            **MatchingHandleBuffer OPTIONAL
 | 
					  OUT EFI_HANDLE       **MatchingHandleBuffer OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -309,13 +309,12 @@ ParseHandleDatabaseForChildDevices(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseHandleDatabaseForChildControllers(
 | 
					ParseHandleDatabaseForChildControllers (
 | 
				
			||||||
  IN CONST EFI_HANDLE       ControllerHandle,
 | 
					  IN CONST EFI_HANDLE  ControllerHandle,
 | 
				
			||||||
  OUT UINTN                 *MatchingHandleCount,
 | 
					  OUT UINTN            *MatchingHandleCount,
 | 
				
			||||||
  OUT EFI_HANDLE            **MatchingHandleBuffer OPTIONAL
 | 
					  OUT EFI_HANDLE       **MatchingHandleBuffer OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Function to retrieve the human-friendly index of a given handle.  If the handle
 | 
					  Function to retrieve the human-friendly index of a given handle.  If the handle
 | 
				
			||||||
  does not have a index one will be automatically assigned.  The index value is valid
 | 
					  does not have a index one will be automatically assigned.  The index value is valid
 | 
				
			||||||
@@ -329,8 +328,8 @@ ParseHandleDatabaseForChildControllers(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConvertHandleToHandleIndex(
 | 
					ConvertHandleToHandleIndex (
 | 
				
			||||||
  IN CONST EFI_HANDLE TheHandle
 | 
					  IN CONST EFI_HANDLE  TheHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -344,8 +343,8 @@ ConvertHandleToHandleIndex(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HANDLE
 | 
					EFI_HANDLE
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConvertHandleIndexToHandle(
 | 
					ConvertHandleIndexToHandle (
 | 
				
			||||||
  IN CONST UINTN TheIndex
 | 
					  IN CONST UINTN  TheIndex
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -359,10 +358,10 @@ ConvertHandleIndexToHandle(
 | 
				
			|||||||
  @retval NULL            A memory allocation failed.
 | 
					  @retval NULL            A memory allocation failed.
 | 
				
			||||||
  @return                 A NULL terminated list of handles.
 | 
					  @return                 A NULL terminated list of handles.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HANDLE*
 | 
					EFI_HANDLE *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetHandleListByProtocol (
 | 
					GetHandleListByProtocol (
 | 
				
			||||||
  IN CONST EFI_GUID *ProtocolGuid OPTIONAL
 | 
					  IN CONST EFI_GUID  *ProtocolGuid OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -376,13 +375,12 @@ GetHandleListByProtocol (
 | 
				
			|||||||
  @retval NULL              ProtocolGuids was NULL.
 | 
					  @retval NULL              ProtocolGuids was NULL.
 | 
				
			||||||
  @return                   A NULL terminated list of EFI_HANDLEs.
 | 
					  @return                   A NULL terminated list of EFI_HANDLEs.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_HANDLE*
 | 
					EFI_HANDLE *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetHandleListByProtocolList (
 | 
					GetHandleListByProtocolList (
 | 
				
			||||||
  IN CONST EFI_GUID **ProtocolGuids
 | 
					  IN CONST EFI_GUID  **ProtocolGuids
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Return all supported GUIDs.
 | 
					  Return all supported GUIDs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -397,8 +395,8 @@ GetHandleListByProtocolList (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetAllMappingGuids (
 | 
					GetAllMappingGuids (
 | 
				
			||||||
  OUT EFI_GUID *Guids,
 | 
					  OUT EFI_GUID  *Guids,
 | 
				
			||||||
  IN OUT UINTN *Count
 | 
					  IN OUT UINTN  *Count
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // __HANDLE_PARSING_LIB__
 | 
					#endif // __HANDLE_PARSING_LIB__
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,9 +26,8 @@
 | 
				
			|||||||
INTN
 | 
					INTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellAppMain (
 | 
					ShellAppMain (
 | 
				
			||||||
  IN UINTN Argc,
 | 
					  IN UINTN   Argc,
 | 
				
			||||||
  IN CHAR16 **Argv
 | 
					  IN CHAR16  **Argv
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,23 +26,23 @@
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// The extern global protocol poionters.
 | 
					// The extern global protocol poionters.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
extern        EFI_UNICODE_COLLATION_PROTOCOL    *gUnicodeCollation;
 | 
					extern        EFI_UNICODE_COLLATION_PROTOCOL  *gUnicodeCollation;
 | 
				
			||||||
extern        CONST CHAR16*                     SupportLevel[];
 | 
					extern        CONST CHAR16                    *SupportLevel[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// The map list objects.
 | 
					// The map list objects.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY                    Link;
 | 
					  LIST_ENTRY                  Link;
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL      *DevicePath;
 | 
					  EFI_DEVICE_PATH_PROTOCOL    *DevicePath;
 | 
				
			||||||
  CHAR16                        *MapName;
 | 
					  CHAR16                      *MapName;
 | 
				
			||||||
  CHAR16                        *CurrentDirectoryPath;
 | 
					  CHAR16                      *CurrentDirectoryPath;
 | 
				
			||||||
  UINT64                         Flags;
 | 
					  UINT64                      Flags;
 | 
				
			||||||
} SHELL_MAP_LIST;
 | 
					} SHELL_MAP_LIST;
 | 
				
			||||||
/// List of Mappings - DeviceName and Drive Letter(ism).
 | 
					/// List of Mappings - DeviceName and Drive Letter(ism).
 | 
				
			||||||
extern        SHELL_MAP_LIST                      gShellMapList;
 | 
					extern        SHELL_MAP_LIST  gShellMapList;
 | 
				
			||||||
/// Pointer to node of current directory in the mMapList.
 | 
					/// Pointer to node of current directory in the mMapList.
 | 
				
			||||||
extern        SHELL_MAP_LIST                      *gShellCurMapping;
 | 
					extern        SHELL_MAP_LIST  *gShellCurMapping;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Returns the help MAN fileName for a given shell command.
 | 
					  Returns the help MAN fileName for a given shell command.
 | 
				
			||||||
@@ -130,14 +130,14 @@ SHELL_STATUS
 | 
				
			|||||||
RETURN_STATUS
 | 
					RETURN_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandRegisterCommandName (
 | 
					ShellCommandRegisterCommandName (
 | 
				
			||||||
  IN CONST  CHAR16                      *CommandString,
 | 
					  IN CONST  CHAR16                  *CommandString,
 | 
				
			||||||
  IN        SHELL_RUN_COMMAND           CommandHandler,
 | 
					  IN        SHELL_RUN_COMMAND       CommandHandler,
 | 
				
			||||||
  IN        SHELL_GET_MAN_FILENAME      GetManFileName,
 | 
					  IN        SHELL_GET_MAN_FILENAME  GetManFileName,
 | 
				
			||||||
  IN        UINT32                      ShellMinSupportLevel,
 | 
					  IN        UINT32                  ShellMinSupportLevel,
 | 
				
			||||||
  IN CONST  CHAR16                      *ProfileName,
 | 
					  IN CONST  CHAR16                  *ProfileName,
 | 
				
			||||||
  IN CONST  BOOLEAN                     CanAffectLE,
 | 
					  IN CONST  BOOLEAN                 CanAffectLE,
 | 
				
			||||||
  IN CONST  EFI_HII_HANDLE              HiiHandle,
 | 
					  IN CONST  EFI_HII_HANDLE          HiiHandle,
 | 
				
			||||||
  IN CONST  EFI_STRING_ID               ManFormatHelp
 | 
					  IN CONST  EFI_STRING_ID           ManFormatHelp
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -167,9 +167,9 @@ ShellCommandRegisterCommandName (
 | 
				
			|||||||
RETURN_STATUS
 | 
					RETURN_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandRunCommandHandler (
 | 
					ShellCommandRunCommandHandler (
 | 
				
			||||||
  IN CONST CHAR16               *CommandString,
 | 
					  IN CONST CHAR16      *CommandString,
 | 
				
			||||||
  IN OUT SHELL_STATUS           *RetVal,
 | 
					  IN OUT SHELL_STATUS  *RetVal,
 | 
				
			||||||
  IN OUT BOOLEAN                *CanAffectLE OPTIONAL
 | 
					  IN OUT BOOLEAN       *CanAffectLE OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -185,16 +185,15 @@ ShellCommandRunCommandHandler (
 | 
				
			|||||||
  @retval other                     The name of the MAN file.
 | 
					  @retval other                     The name of the MAN file.
 | 
				
			||||||
  @sa SHELL_GET_MAN_FILENAME
 | 
					  @sa SHELL_GET_MAN_FILENAME
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandGetManFileNameHandler (
 | 
					ShellCommandGetManFileNameHandler (
 | 
				
			||||||
  IN CONST CHAR16               *CommandString
 | 
					  IN CONST CHAR16  *CommandString
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY  Link;
 | 
					  LIST_ENTRY    Link;
 | 
				
			||||||
  CHAR16      *CommandString;
 | 
					  CHAR16        *CommandString;
 | 
				
			||||||
} COMMAND_LIST;
 | 
					} COMMAND_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -206,16 +205,16 @@ typedef struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return A linked list of all available shell commands.
 | 
					  @return A linked list of all available shell commands.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST COMMAND_LIST*
 | 
					CONST COMMAND_LIST *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandGetCommandList (
 | 
					ShellCommandGetCommandList (
 | 
				
			||||||
  IN CONST BOOLEAN Sort
 | 
					  IN CONST BOOLEAN  Sort
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY  Link;
 | 
					  LIST_ENTRY    Link;
 | 
				
			||||||
  CHAR16      *CommandString;
 | 
					  CHAR16        *CommandString;
 | 
				
			||||||
  CHAR16      *Alias;
 | 
					  CHAR16        *Alias;
 | 
				
			||||||
} ALIAS_LIST;
 | 
					} ALIAS_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -234,8 +233,8 @@ typedef struct {
 | 
				
			|||||||
RETURN_STATUS
 | 
					RETURN_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandRegisterAlias (
 | 
					ShellCommandRegisterAlias (
 | 
				
			||||||
  IN CONST CHAR16                       *Command,
 | 
					  IN CONST CHAR16  *Command,
 | 
				
			||||||
  IN CONST CHAR16                       *Alias
 | 
					  IN CONST CHAR16  *Alias
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -245,7 +244,7 @@ ShellCommandRegisterAlias (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return A linked list of all requested shell aliases.
 | 
					  @return A linked list of all requested shell aliases.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST ALIAS_LIST*
 | 
					CONST ALIAS_LIST *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandGetInitAliasList (
 | 
					ShellCommandGetInitAliasList (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
@@ -262,7 +261,7 @@ ShellCommandGetInitAliasList (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandIsOnAliasList (
 | 
					ShellCommandIsOnAliasList (
 | 
				
			||||||
  IN CONST CHAR16 *Alias
 | 
					  IN CONST CHAR16  *Alias
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -276,7 +275,7 @@ ShellCommandIsOnAliasList (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandIsCommandOnList (
 | 
					ShellCommandIsCommandOnList (
 | 
				
			||||||
  IN CONST  CHAR16                      *CommandString
 | 
					  IN CONST  CHAR16  *CommandString
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -287,10 +286,10 @@ ShellCommandIsCommandOnList (
 | 
				
			|||||||
  @retval NULL  No help text was found.
 | 
					  @retval NULL  No help text was found.
 | 
				
			||||||
  @return       The string of the help text.  The caller required to free.
 | 
					  @return       The string of the help text.  The caller required to free.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandGetCommandHelp (
 | 
					ShellCommandGetCommandHelp (
 | 
				
			||||||
  IN CONST  CHAR16                      *CommandString
 | 
					  IN CONST  CHAR16  *CommandString
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -324,11 +323,9 @@ ShellCommandGetEchoState (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandSetEchoState (
 | 
					ShellCommandSetEchoState (
 | 
				
			||||||
  IN BOOLEAN State
 | 
					  IN BOOLEAN  State
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Indicate that the current shell or script should exit.
 | 
					  Indicate that the current shell or script should exit.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -338,8 +335,8 @@ ShellCommandSetEchoState (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandRegisterExit (
 | 
					ShellCommandRegisterExit (
 | 
				
			||||||
  IN BOOLEAN      ScriptOnly,
 | 
					  IN BOOLEAN       ScriptOnly,
 | 
				
			||||||
  IN CONST UINT64 ErrorCode
 | 
					  IN CONST UINT64  ErrorCode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -380,20 +377,20 @@ ShellCommandGetScriptExit (
 | 
				
			|||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY      Link;     ///< List enumerator items.
 | 
					  LIST_ENTRY    Link;       ///< List enumerator items.
 | 
				
			||||||
  UINTN           Line;     ///< What line of the script file this was on.
 | 
					  UINTN         Line;       ///< What line of the script file this was on.
 | 
				
			||||||
  CHAR16          *Cl;      ///< The original command line.
 | 
					  CHAR16        *Cl;        ///< The original command line.
 | 
				
			||||||
  VOID            *Data;    ///< The data structure format dependant upon Command. (not always used)
 | 
					  VOID          *Data;      ///< The data structure format dependant upon Command. (not always used)
 | 
				
			||||||
  BOOLEAN         Reset;    ///< Reset the command (it must be treated like a initial run (but it may have data already))
 | 
					  BOOLEAN       Reset;      ///< Reset the command (it must be treated like a initial run (but it may have data already))
 | 
				
			||||||
} SCRIPT_COMMAND_LIST;
 | 
					} SCRIPT_COMMAND_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  CHAR16              *ScriptName;        ///< The filename of this script.
 | 
					  CHAR16                 *ScriptName;     ///< The filename of this script.
 | 
				
			||||||
  CHAR16              **Argv;             ///< The parmameters to the script file.
 | 
					  CHAR16                 **Argv;          ///< The parmameters to the script file.
 | 
				
			||||||
  UINTN               Argc;               ///< The count of parameters.
 | 
					  UINTN                  Argc;            ///< The count of parameters.
 | 
				
			||||||
  LIST_ENTRY          CommandList;        ///< The script converted to a list of commands (SCRIPT_COMMAND_LIST objects).
 | 
					  LIST_ENTRY             CommandList;     ///< The script converted to a list of commands (SCRIPT_COMMAND_LIST objects).
 | 
				
			||||||
  SCRIPT_COMMAND_LIST *CurrentCommand;    ///< The command currently being operated.  If !=NULL must be a member of CommandList.
 | 
					  SCRIPT_COMMAND_LIST    *CurrentCommand; ///< The command currently being operated.  If !=NULL must be a member of CommandList.
 | 
				
			||||||
  LIST_ENTRY          SubstList;          ///< A list of current script loop alias' (ALIAS_LIST objects) (Used for the for %-based replacement).
 | 
					  LIST_ENTRY             SubstList;       ///< A list of current script loop alias' (ALIAS_LIST objects) (Used for the for %-based replacement).
 | 
				
			||||||
} SCRIPT_FILE;
 | 
					} SCRIPT_FILE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -402,7 +399,7 @@ typedef struct {
 | 
				
			|||||||
  @retval NULL        A script file is not currently running.
 | 
					  @retval NULL        A script file is not currently running.
 | 
				
			||||||
  @return             A pointer to the current script file object.
 | 
					  @return             A pointer to the current script file object.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
SCRIPT_FILE*
 | 
					SCRIPT_FILE *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandGetCurrentScriptFile (
 | 
					ShellCommandGetCurrentScriptFile (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
@@ -419,10 +416,10 @@ ShellCommandGetCurrentScriptFile (
 | 
				
			|||||||
  @return             A pointer to the current running script file after this
 | 
					  @return             A pointer to the current running script file after this
 | 
				
			||||||
                      change.  It is NULL if removing the final script.
 | 
					                      change.  It is NULL if removing the final script.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
SCRIPT_FILE*
 | 
					SCRIPT_FILE *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandSetNewScript (
 | 
					ShellCommandSetNewScript (
 | 
				
			||||||
  IN SCRIPT_FILE *Script OPTIONAL
 | 
					  IN SCRIPT_FILE  *Script OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -433,7 +430,7 @@ ShellCommandSetNewScript (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DeleteScriptFileStruct (
 | 
					DeleteScriptFileStruct (
 | 
				
			||||||
  IN SCRIPT_FILE *Script
 | 
					  IN SCRIPT_FILE  *Script
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -466,10 +463,10 @@ typedef enum {
 | 
				
			|||||||
  @retval NULL                  a memory allocation failed.
 | 
					  @retval NULL                  a memory allocation failed.
 | 
				
			||||||
  @return a new map name string
 | 
					  @return a new map name string
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandCreateNewMappingName(
 | 
					ShellCommandCreateNewMappingName (
 | 
				
			||||||
  IN CONST SHELL_MAPPING_TYPE Type
 | 
					  IN CONST SHELL_MAPPING_TYPE  Type
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -482,7 +479,7 @@ ShellCommandCreateNewMappingName(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandConsistMappingInitialize (
 | 
					ShellCommandConsistMappingInitialize (
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL           ***Table
 | 
					  EFI_DEVICE_PATH_PROTOCOL  ***Table
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -497,7 +494,7 @@ ShellCommandConsistMappingInitialize (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandConsistMappingUnInitialize (
 | 
					ShellCommandConsistMappingUnInitialize (
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL      **Table
 | 
					  EFI_DEVICE_PATH_PROTOCOL  **Table
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -513,11 +510,11 @@ ShellCommandConsistMappingUnInitialize (
 | 
				
			|||||||
  @retval NULL            A consistent mapped name could not be created.
 | 
					  @retval NULL            A consistent mapped name could not be created.
 | 
				
			||||||
  @return                 A pointer to a string allocated from pool with the device name.
 | 
					  @return                 A pointer to a string allocated from pool with the device name.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandConsistMappingGenMappingName (
 | 
					ShellCommandConsistMappingGenMappingName (
 | 
				
			||||||
  IN EFI_DEVICE_PATH_PROTOCOL      *DevicePath,
 | 
					  IN EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
 | 
				
			||||||
  IN EFI_DEVICE_PATH_PROTOCOL      **Table
 | 
					  IN EFI_DEVICE_PATH_PROTOCOL  **Table
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -528,10 +525,10 @@ ShellCommandConsistMappingGenMappingName (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return the node on the list.
 | 
					  @return the node on the list.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_MAP_LIST*
 | 
					SHELL_MAP_LIST *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandFindMapItem (
 | 
					ShellCommandFindMapItem (
 | 
				
			||||||
  IN CONST CHAR16               *MapKey
 | 
					  IN CONST CHAR16  *MapKey
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -553,11 +550,11 @@ ShellCommandFindMapItem (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandAddMapItemAndUpdatePath(
 | 
					ShellCommandAddMapItemAndUpdatePath (
 | 
				
			||||||
  IN CONST CHAR16                   *Name,
 | 
					  IN CONST CHAR16                    *Name,
 | 
				
			||||||
  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
 | 
					  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
 | 
				
			||||||
  IN CONST UINT64                   Flags,
 | 
					  IN CONST UINT64                    Flags,
 | 
				
			||||||
  IN CONST BOOLEAN                  Path
 | 
					  IN CONST BOOLEAN                   Path
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -574,7 +571,7 @@ ShellCommandAddMapItemAndUpdatePath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandCreateInitialMappingsAndPaths(
 | 
					ShellCommandCreateInitialMappingsAndPaths (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -596,10 +593,10 @@ ShellCommandUpdateMapping (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return a EFI_FILE_PROTOCOL* representing the same file.
 | 
					  @return a EFI_FILE_PROTOCOL* representing the same file.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_FILE_PROTOCOL*
 | 
					EFI_FILE_PROTOCOL *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConvertShellHandleToEfiFileProtocol(
 | 
					ConvertShellHandleToEfiFileProtocol (
 | 
				
			||||||
  IN CONST SHELL_FILE_HANDLE Handle
 | 
					  IN CONST SHELL_FILE_HANDLE  Handle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -612,8 +609,8 @@ ConvertShellHandleToEfiFileProtocol(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFileHandleRemove(
 | 
					ShellFileHandleRemove (
 | 
				
			||||||
  IN CONST SHELL_FILE_HANDLE Handle
 | 
					  IN CONST SHELL_FILE_HANDLE  Handle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -626,9 +623,9 @@ ShellFileHandleRemove(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_FILE_HANDLE
 | 
					SHELL_FILE_HANDLE
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ConvertEfiFileProtocolToShellHandle(
 | 
					ConvertEfiFileProtocolToShellHandle (
 | 
				
			||||||
  IN CONST EFI_FILE_PROTOCOL *Handle,
 | 
					  IN CONST EFI_FILE_PROTOCOL  *Handle,
 | 
				
			||||||
  IN CONST CHAR16            *Path
 | 
					  IN CONST CHAR16             *Path
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -638,13 +635,12 @@ ConvertEfiFileProtocolToShellHandle(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return A pointer to the path for the file.
 | 
					  @return A pointer to the path for the file.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFileHandleGetPath(
 | 
					ShellFileHandleGetPath (
 | 
				
			||||||
  IN CONST SHELL_FILE_HANDLE Handle
 | 
					  IN CONST SHELL_FILE_HANDLE  Handle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Function to determine if a SHELL_FILE_HANDLE is at the end of the file.
 | 
					  Function to determine if a SHELL_FILE_HANDLE is at the end of the file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -659,8 +655,8 @@ ShellFileHandleGetPath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFileHandleEof(
 | 
					ShellFileHandleEof (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE Handle
 | 
					  IN SHELL_FILE_HANDLE  Handle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
@@ -676,7 +672,7 @@ typedef struct {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FreeBufferList (
 | 
					FreeBufferList (
 | 
				
			||||||
  IN BUFFER_LIST *List
 | 
					  IN BUFFER_LIST  *List
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -690,10 +686,10 @@ FreeBufferList (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpHex (
 | 
					DumpHex (
 | 
				
			||||||
  IN UINTN        Indent,
 | 
					  IN UINTN  Indent,
 | 
				
			||||||
  IN UINTN        Offset,
 | 
					  IN UINTN  Offset,
 | 
				
			||||||
  IN UINTN        DataSize,
 | 
					  IN UINTN  DataSize,
 | 
				
			||||||
  IN VOID         *UserData
 | 
					  IN VOID   *UserData
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -705,7 +701,7 @@ DumpHex (
 | 
				
			|||||||
  @param[in] DataSize   The size in bytes of UserData.
 | 
					  @param[in] DataSize   The size in bytes of UserData.
 | 
				
			||||||
  @param[in] UserData   The data to print out.
 | 
					  @param[in] UserData   The data to print out.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
CatSDumpHex (
 | 
					CatSDumpHex (
 | 
				
			||||||
  IN CHAR16  *Buffer,
 | 
					  IN CHAR16  *Buffer,
 | 
				
			||||||
@@ -791,8 +787,9 @@ typedef enum {
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellSortFileList (
 | 
					ShellSortFileList (
 | 
				
			||||||
  IN OUT EFI_SHELL_FILE_INFO  **FileList,
 | 
					  IN OUT EFI_SHELL_FILE_INFO   **FileList,
 | 
				
			||||||
     OUT EFI_SHELL_FILE_INFO  **Duplicates OPTIONAL,
 | 
					  OUT EFI_SHELL_FILE_INFO      **Duplicates OPTIONAL,
 | 
				
			||||||
  IN     SHELL_SORT_FILE_LIST Order
 | 
					  IN     SHELL_SORT_FILE_LIST  Order
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_SHELL_COMMAND_LIB_
 | 
					#endif //_SHELL_COMMAND_LIB_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,8 +27,8 @@
 | 
				
			|||||||
    }                                 \
 | 
					    }                                 \
 | 
				
			||||||
  } while(FALSE)
 | 
					  } while(FALSE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_SHELL_PARAMETERS_PROTOCOL *gEfiShellParametersProtocol;
 | 
					extern EFI_SHELL_PARAMETERS_PROTOCOL  *gEfiShellParametersProtocol;
 | 
				
			||||||
extern EFI_SHELL_PROTOCOL            *gEfiShellProtocol;
 | 
					extern EFI_SHELL_PROTOCOL             *gEfiShellProtocol;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Return a clean, fully-qualified version of an input path.  If the return value
 | 
					  Return a clean, fully-qualified version of an input path.  If the return value
 | 
				
			||||||
@@ -58,10 +58,10 @@ extern EFI_SHELL_PROTOCOL            *gEfiShellProtocol;
 | 
				
			|||||||
                        Path.  The caller must free this memory when it is no
 | 
					                        Path.  The caller must free this memory when it is no
 | 
				
			||||||
                        longer needed.
 | 
					                        longer needed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
FullyQualifyPath(
 | 
					FullyQualifyPath (
 | 
				
			||||||
  IN     CONST CHAR16     *Path
 | 
					  IN     CONST CHAR16  *Path
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -78,10 +78,10 @@ FullyQualifyPath(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return                       The information about the file.
 | 
					  @return                       The information about the file.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_FILE_INFO*
 | 
					EFI_FILE_INFO *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellGetFileInfo (
 | 
					ShellGetFileInfo (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          FileHandle
 | 
					  IN SHELL_FILE_HANDLE  FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -106,8 +106,8 @@ ShellGetFileInfo (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellSetFileInfo (
 | 
					ShellSetFileInfo (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          FileHandle,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  IN EFI_FILE_INFO              *FileInfo
 | 
					  IN EFI_FILE_INFO      *FileInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -141,11 +141,11 @@ ShellSetFileInfo (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellOpenFileByDevicePath(
 | 
					ShellOpenFileByDevicePath (
 | 
				
			||||||
  IN OUT EFI_DEVICE_PATH_PROTOCOL     **FilePath,
 | 
					  IN OUT EFI_DEVICE_PATH_PROTOCOL  **FilePath,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE               *FileHandle,
 | 
					  OUT SHELL_FILE_HANDLE            *FileHandle,
 | 
				
			||||||
  IN UINT64                           OpenMode,
 | 
					  IN UINT64                        OpenMode,
 | 
				
			||||||
  IN UINT64                           Attributes
 | 
					  IN UINT64                        Attributes
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -179,11 +179,11 @@ ShellOpenFileByDevicePath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellOpenFileByName(
 | 
					ShellOpenFileByName (
 | 
				
			||||||
  IN CONST CHAR16               *FileName,
 | 
					  IN CONST CHAR16        *FileName,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE         *FileHandle,
 | 
					  OUT SHELL_FILE_HANDLE  *FileHandle,
 | 
				
			||||||
  IN UINT64                     OpenMode,
 | 
					  IN UINT64              OpenMode,
 | 
				
			||||||
  IN UINT64                     Attributes
 | 
					  IN UINT64              Attributes
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -215,9 +215,9 @@ ShellOpenFileByName(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCreateDirectory(
 | 
					ShellCreateDirectory (
 | 
				
			||||||
  IN CONST CHAR16             *DirectoryName,
 | 
					  IN CONST CHAR16        *DirectoryName,
 | 
				
			||||||
  OUT SHELL_FILE_HANDLE       *FileHandle
 | 
					  OUT SHELL_FILE_HANDLE  *FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -251,10 +251,10 @@ ShellCreateDirectory(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellReadFile(
 | 
					ShellReadFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          FileHandle,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  IN OUT UINTN                  *ReadSize,
 | 
					  IN OUT UINTN          *ReadSize,
 | 
				
			||||||
  OUT VOID                      *Buffer
 | 
					  OUT VOID              *Buffer
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -285,10 +285,10 @@ ShellReadFile(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellWriteFile(
 | 
					ShellWriteFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          FileHandle,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  IN OUT UINTN                  *BufferSize,
 | 
					  IN OUT UINTN          *BufferSize,
 | 
				
			||||||
  IN VOID                       *Buffer
 | 
					  IN VOID               *Buffer
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -306,7 +306,7 @@ ShellWriteFile(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCloseFile (
 | 
					ShellCloseFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          *FileHandle
 | 
					  IN SHELL_FILE_HANDLE  *FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -326,7 +326,7 @@ ShellCloseFile (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellDeleteFile (
 | 
					ShellDeleteFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          *FileHandle
 | 
					  IN SHELL_FILE_HANDLE  *FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -374,8 +374,8 @@ ShellSetFilePosition (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellGetFilePosition (
 | 
					ShellGetFilePosition (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          FileHandle,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  OUT UINT64                    *Position
 | 
					  OUT UINT64            *Position
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -395,7 +395,7 @@ ShellGetFilePosition (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFlushFile (
 | 
					ShellFlushFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          FileHandle
 | 
					  IN SHELL_FILE_HANDLE  FileHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Retrieve first entry from a directory.
 | 
					/** Retrieve first entry from a directory.
 | 
				
			||||||
@@ -425,8 +425,8 @@ ShellFlushFile (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFindFirstFile (
 | 
					ShellFindFirstFile (
 | 
				
			||||||
  IN      SHELL_FILE_HANDLE       DirHandle,
 | 
					  IN      SHELL_FILE_HANDLE  DirHandle,
 | 
				
			||||||
     OUT  EFI_FILE_INFO         **Buffer
 | 
					  OUT  EFI_FILE_INFO         **Buffer
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Retrieve next entries from a directory.
 | 
					/** Retrieve next entries from a directory.
 | 
				
			||||||
@@ -451,10 +451,10 @@ ShellFindFirstFile (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFindNextFile(
 | 
					ShellFindNextFile (
 | 
				
			||||||
  IN      SHELL_FILE_HANDLE       DirHandle,
 | 
					  IN      SHELL_FILE_HANDLE  DirHandle,
 | 
				
			||||||
  IN OUT  EFI_FILE_INFO          *Buffer,
 | 
					  IN OUT  EFI_FILE_INFO      *Buffer,
 | 
				
			||||||
  IN OUT  BOOLEAN                *NoFile
 | 
					  IN OUT  BOOLEAN            *NoFile
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -472,8 +472,8 @@ ShellFindNextFile(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellGetFileSize (
 | 
					ShellGetFileSize (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          FileHandle,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  OUT UINT64                    *Size
 | 
					  OUT UINT64            *Size
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -486,7 +486,7 @@ ShellGetFileSize (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellGetExecutionBreakFlag(
 | 
					ShellGetExecutionBreakFlag (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -501,10 +501,10 @@ ShellGetExecutionBreakFlag(
 | 
				
			|||||||
  @retval NULL                  The named environment variable does not exist.
 | 
					  @retval NULL                  The named environment variable does not exist.
 | 
				
			||||||
  @return != NULL               The pointer to the value of the environment variable.
 | 
					  @return != NULL               The pointer to the value of the environment variable.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellGetEnvironmentVariable (
 | 
					ShellGetEnvironmentVariable (
 | 
				
			||||||
  IN CONST CHAR16                *EnvKey
 | 
					  IN CONST CHAR16  *EnvKey
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -530,9 +530,9 @@ ShellGetEnvironmentVariable (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellSetEnvironmentVariable (
 | 
					ShellSetEnvironmentVariable (
 | 
				
			||||||
  IN CONST CHAR16               *EnvKey,
 | 
					  IN CONST CHAR16  *EnvKey,
 | 
				
			||||||
  IN CONST CHAR16               *EnvVal,
 | 
					  IN CONST CHAR16  *EnvVal,
 | 
				
			||||||
  IN BOOLEAN                    Volatile
 | 
					  IN BOOLEAN       Volatile
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -568,11 +568,11 @@ ShellSetEnvironmentVariable (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellExecute (
 | 
					ShellExecute (
 | 
				
			||||||
  IN EFI_HANDLE                 *ParentHandle,
 | 
					  IN EFI_HANDLE   *ParentHandle,
 | 
				
			||||||
  IN CHAR16                     *CommandLine,
 | 
					  IN CHAR16       *CommandLine,
 | 
				
			||||||
  IN BOOLEAN                    Output,
 | 
					  IN BOOLEAN      Output,
 | 
				
			||||||
  IN CHAR16                     **EnvironmentVariables,
 | 
					  IN CHAR16       **EnvironmentVariables,
 | 
				
			||||||
  OUT EFI_STATUS                *Status
 | 
					  OUT EFI_STATUS  *Status
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -589,10 +589,10 @@ ShellExecute (
 | 
				
			|||||||
  @retval NULL                  The directory does not exist.
 | 
					  @retval NULL                  The directory does not exist.
 | 
				
			||||||
  @retval != NULL               The directory.
 | 
					  @retval != NULL               The directory.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellGetCurrentDir (
 | 
					ShellGetCurrentDir (
 | 
				
			||||||
  IN CHAR16                     * CONST DeviceName OPTIONAL
 | 
					  IN CHAR16                     *CONST  DeviceName OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -606,7 +606,7 @@ ShellGetCurrentDir (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellSetPageBreakMode (
 | 
					ShellSetPageBreakMode (
 | 
				
			||||||
  IN BOOLEAN                    CurrentState
 | 
					  IN BOOLEAN  CurrentState
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -635,9 +635,9 @@ ShellSetPageBreakMode (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellOpenFileMetaArg (
 | 
					ShellOpenFileMetaArg (
 | 
				
			||||||
  IN CHAR16                     *Arg,
 | 
					  IN CHAR16                   *Arg,
 | 
				
			||||||
  IN UINT64                     OpenMode,
 | 
					  IN UINT64                   OpenMode,
 | 
				
			||||||
  IN OUT EFI_SHELL_FILE_INFO    **ListHead
 | 
					  IN OUT EFI_SHELL_FILE_INFO  **ListHead
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -651,7 +651,7 @@ ShellOpenFileMetaArg (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCloseFileMetaArg (
 | 
					ShellCloseFileMetaArg (
 | 
				
			||||||
  IN OUT EFI_SHELL_FILE_INFO    **ListHead
 | 
					  IN OUT EFI_SHELL_FILE_INFO  **ListHead
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -669,7 +669,7 @@ ShellCloseFileMetaArg (
 | 
				
			|||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFindFilePath (
 | 
					ShellFindFilePath (
 | 
				
			||||||
  IN CONST CHAR16 *FileName
 | 
					  IN CONST CHAR16  *FileName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -691,12 +691,12 @@ ShellFindFilePath (
 | 
				
			|||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFindFilePathEx (
 | 
					ShellFindFilePathEx (
 | 
				
			||||||
  IN CONST CHAR16 *FileName,
 | 
					  IN CONST CHAR16  *FileName,
 | 
				
			||||||
  IN CONST CHAR16 *FileExtension
 | 
					  IN CONST CHAR16  *FileExtension
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum {
 | 
					typedef enum {
 | 
				
			||||||
  TypeFlag  = 0,    ///< A flag that is present or not present only (IE "-a").
 | 
					  TypeFlag = 0,     ///< A flag that is present or not present only (IE "-a").
 | 
				
			||||||
  TypeValue,        ///< A flag that has some data following it with a space (IE "-a 1").
 | 
					  TypeValue,        ///< A flag that has some data following it with a space (IE "-a 1").
 | 
				
			||||||
  TypePosition,     ///< Some data that did not follow a parameter (IE "filename.txt").
 | 
					  TypePosition,     ///< Some data that did not follow a parameter (IE "filename.txt").
 | 
				
			||||||
  TypeStart,        ///< A flag that has variable value appended to the end (IE "-ad", "-afd", "-adf", etc...).
 | 
					  TypeStart,        ///< A flag that has variable value appended to the end (IE "-ad", "-afd", "-adf", etc...).
 | 
				
			||||||
@@ -707,16 +707,15 @@ typedef enum {
 | 
				
			|||||||
} SHELL_PARAM_TYPE;
 | 
					} SHELL_PARAM_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  CHAR16             *Name;
 | 
					  CHAR16              *Name;
 | 
				
			||||||
  SHELL_PARAM_TYPE   Type;
 | 
					  SHELL_PARAM_TYPE    Type;
 | 
				
			||||||
} SHELL_PARAM_ITEM;
 | 
					} SHELL_PARAM_ITEM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Helper structure for no parameters (besides -? and -b)
 | 
					/// Helper structure for no parameters (besides -? and -b)
 | 
				
			||||||
extern SHELL_PARAM_ITEM EmptyParamList[];
 | 
					extern SHELL_PARAM_ITEM  EmptyParamList[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Helper structure for -sfo only (besides -? and -b)
 | 
					/// Helper structure for -sfo only (besides -? and -b)
 | 
				
			||||||
extern SHELL_PARAM_ITEM SfoParamList[];
 | 
					extern SHELL_PARAM_ITEM  SfoParamList[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Checks the command line arguments passed against the list of valid ones.
 | 
					  Checks the command line arguments passed against the list of valid ones.
 | 
				
			||||||
@@ -745,15 +744,15 @@ extern SHELL_PARAM_ITEM SfoParamList[];
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandLineParseEx (
 | 
					ShellCommandLineParseEx (
 | 
				
			||||||
  IN CONST SHELL_PARAM_ITEM     *CheckList,
 | 
					  IN CONST SHELL_PARAM_ITEM  *CheckList,
 | 
				
			||||||
  OUT LIST_ENTRY                **CheckPackage,
 | 
					  OUT LIST_ENTRY             **CheckPackage,
 | 
				
			||||||
  OUT CHAR16                    **ProblemParam OPTIONAL,
 | 
					  OUT CHAR16                 **ProblemParam OPTIONAL,
 | 
				
			||||||
  IN BOOLEAN                    AutoPageBreak,
 | 
					  IN BOOLEAN                 AutoPageBreak,
 | 
				
			||||||
  IN BOOLEAN                    AlwaysAllowNumbers
 | 
					  IN BOOLEAN                 AlwaysAllowNumbers
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Make it easy to upgrade from older versions of the shell library.
 | 
					/// Make it easy to upgrade from older versions of the shell library.
 | 
				
			||||||
#define ShellCommandLineParse(CheckList,CheckPackage,ProblemParam,AutoPageBreak) ShellCommandLineParseEx(CheckList,CheckPackage,ProblemParam,AutoPageBreak,FALSE)
 | 
					#define ShellCommandLineParse(CheckList, CheckPackage, ProblemParam, AutoPageBreak)  ShellCommandLineParseEx(CheckList,CheckPackage,ProblemParam,AutoPageBreak,FALSE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Frees shell variable list that was returned from ShellCommandLineParse.
 | 
					  Frees shell variable list that was returned from ShellCommandLineParse.
 | 
				
			||||||
@@ -768,7 +767,7 @@ ShellCommandLineParseEx (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandLineFreeVarList (
 | 
					ShellCommandLineFreeVarList (
 | 
				
			||||||
  IN LIST_ENTRY                 *CheckPackage
 | 
					  IN LIST_ENTRY  *CheckPackage
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -788,8 +787,8 @@ ShellCommandLineFreeVarList (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandLineGetFlag (
 | 
					ShellCommandLineGetFlag (
 | 
				
			||||||
  IN CONST LIST_ENTRY         * CONST CheckPackage,
 | 
					  IN CONST LIST_ENTRY         *CONST  CheckPackage,
 | 
				
			||||||
  IN CONST CHAR16             * CONST KeyString
 | 
					  IN CONST CHAR16             *CONST  KeyString
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -805,11 +804,11 @@ ShellCommandLineGetFlag (
 | 
				
			|||||||
  @retval NULL                  The flag is not on the command line.
 | 
					  @retval NULL                  The flag is not on the command line.
 | 
				
			||||||
  @retval !=NULL                The pointer to unicode string of the value.
 | 
					  @retval !=NULL                The pointer to unicode string of the value.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandLineGetValue (
 | 
					ShellCommandLineGetValue (
 | 
				
			||||||
  IN CONST LIST_ENTRY              *CheckPackage,
 | 
					  IN CONST LIST_ENTRY  *CheckPackage,
 | 
				
			||||||
  IN CHAR16                        *KeyString
 | 
					  IN CHAR16            *KeyString
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -825,11 +824,11 @@ ShellCommandLineGetValue (
 | 
				
			|||||||
  @retval NULL                  The flag is not on the command line.
 | 
					  @retval NULL                  The flag is not on the command line.
 | 
				
			||||||
  @retval !=NULL                The pointer to unicode string of the value.
 | 
					  @retval !=NULL                The pointer to unicode string of the value.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandLineGetRawValue (
 | 
					ShellCommandLineGetRawValue (
 | 
				
			||||||
  IN CONST LIST_ENTRY              * CONST CheckPackage,
 | 
					  IN CONST LIST_ENTRY              *CONST  CheckPackage,
 | 
				
			||||||
  IN UINTN                         Position
 | 
					  IN UINTN                                 Position
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -844,8 +843,8 @@ ShellCommandLineGetRawValue (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandLineGetCount(
 | 
					ShellCommandLineGetCount (
 | 
				
			||||||
  IN CONST LIST_ENTRY              *CheckPackage
 | 
					  IN CONST LIST_ENTRY  *CheckPackage
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -865,8 +864,8 @@ ShellCommandLineGetCount(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandLineCheckDuplicate (
 | 
					ShellCommandLineCheckDuplicate (
 | 
				
			||||||
  IN CONST LIST_ENTRY              *CheckPackage,
 | 
					  IN CONST LIST_ENTRY  *CheckPackage,
 | 
				
			||||||
  OUT CHAR16                       **Param
 | 
					  OUT CHAR16           **Param
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -919,10 +918,10 @@ ShellInitialize (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellPrintEx(
 | 
					ShellPrintEx (
 | 
				
			||||||
  IN INT32                Col OPTIONAL,
 | 
					  IN INT32         Col OPTIONAL,
 | 
				
			||||||
  IN INT32                Row OPTIONAL,
 | 
					  IN INT32         Row OPTIONAL,
 | 
				
			||||||
  IN CONST CHAR16         *Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  ...
 | 
					  ...
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -960,12 +959,12 @@ ShellPrintEx(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellPrintHiiEx(
 | 
					ShellPrintHiiEx (
 | 
				
			||||||
  IN INT32                Col OPTIONAL,
 | 
					  IN INT32                 Col OPTIONAL,
 | 
				
			||||||
  IN INT32                Row OPTIONAL,
 | 
					  IN INT32                 Row OPTIONAL,
 | 
				
			||||||
  IN CONST CHAR8          *Language OPTIONAL,
 | 
					  IN CONST CHAR8           *Language OPTIONAL,
 | 
				
			||||||
  IN CONST EFI_STRING_ID  HiiFormatStringId,
 | 
					  IN CONST EFI_STRING_ID   HiiFormatStringId,
 | 
				
			||||||
  IN CONST EFI_HII_HANDLE HiiFormatHandle,
 | 
					  IN CONST EFI_HII_HANDLE  HiiFormatHandle,
 | 
				
			||||||
  ...
 | 
					  ...
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -982,8 +981,8 @@ ShellPrintHiiEx(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellIsDirectory(
 | 
					ShellIsDirectory (
 | 
				
			||||||
  IN CONST CHAR16 *DirName
 | 
					  IN CONST CHAR16  *DirName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1001,8 +1000,8 @@ ShellIsDirectory(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellIsFile(
 | 
					ShellIsFile (
 | 
				
			||||||
  IN CONST CHAR16 *Name
 | 
					  IN CONST CHAR16  *Name
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1020,8 +1019,8 @@ ShellIsFile(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellIsFileInPath(
 | 
					ShellIsFileInPath (
 | 
				
			||||||
  IN CONST CHAR16 *Name
 | 
					  IN CONST CHAR16  *Name
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1038,8 +1037,8 @@ ShellIsFileInPath(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellStrToUintn(
 | 
					ShellStrToUintn (
 | 
				
			||||||
  IN CONST CHAR16 *String
 | 
					  IN CONST CHAR16  *String
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1055,8 +1054,8 @@ ShellStrToUintn(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellHexStrToUintn(
 | 
					ShellHexStrToUintn (
 | 
				
			||||||
  IN CONST CHAR16 *String
 | 
					  IN CONST CHAR16  *String
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1091,13 +1090,13 @@ ShellHexStrToUintn(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return                       The Destination after appending the Source.
 | 
					  @return                       The Destination after appending the Source.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
StrnCatGrow (
 | 
					StrnCatGrow (
 | 
				
			||||||
  IN OUT CHAR16           **Destination,
 | 
					  IN OUT CHAR16        **Destination,
 | 
				
			||||||
  IN OUT UINTN            *CurrentSize,
 | 
					  IN OUT UINTN         *CurrentSize,
 | 
				
			||||||
  IN     CONST CHAR16     *Source,
 | 
					  IN     CONST CHAR16  *Source,
 | 
				
			||||||
  IN     UINTN            Count
 | 
					  IN     UINTN         Count
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1129,14 +1128,14 @@ StrnCatGrow (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCopySearchAndReplace(
 | 
					ShellCopySearchAndReplace (
 | 
				
			||||||
  IN CHAR16 CONST                     *SourceString,
 | 
					  IN CHAR16 CONST   *SourceString,
 | 
				
			||||||
  IN OUT CHAR16                       *NewString,
 | 
					  IN OUT CHAR16     *NewString,
 | 
				
			||||||
  IN UINTN                            NewSize,
 | 
					  IN UINTN          NewSize,
 | 
				
			||||||
  IN CONST CHAR16                     *FindTarget,
 | 
					  IN CONST CHAR16   *FindTarget,
 | 
				
			||||||
  IN CONST CHAR16                     *ReplaceWith,
 | 
					  IN CONST CHAR16   *ReplaceWith,
 | 
				
			||||||
  IN CONST BOOLEAN                    SkipPreCarrot,
 | 
					  IN CONST BOOLEAN  SkipPreCarrot,
 | 
				
			||||||
  IN CONST BOOLEAN                    ParameterReplacing
 | 
					  IN CONST BOOLEAN  ParameterReplacing
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1156,7 +1155,7 @@ ShellCopySearchAndReplace(
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellIsHexaDecimalDigitCharacter (
 | 
					ShellIsHexaDecimalDigitCharacter (
 | 
				
			||||||
  IN      CHAR16                    Char
 | 
					  IN      CHAR16  Char
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1176,7 +1175,7 @@ ShellIsHexaDecimalDigitCharacter (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellIsDecimalDigitCharacter (
 | 
					ShellIsDecimalDigitCharacter (
 | 
				
			||||||
  IN      CHAR16                    Char
 | 
					  IN      CHAR16  Char
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
@@ -1233,9 +1232,9 @@ typedef enum {
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellPromptForResponse (
 | 
					ShellPromptForResponse (
 | 
				
			||||||
  IN SHELL_PROMPT_REQUEST_TYPE   Type,
 | 
					  IN SHELL_PROMPT_REQUEST_TYPE  Type,
 | 
				
			||||||
  IN CHAR16         *Prompt OPTIONAL,
 | 
					  IN CHAR16                     *Prompt OPTIONAL,
 | 
				
			||||||
  IN OUT VOID       **Response OPTIONAL
 | 
					  IN OUT VOID                   **Response OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1258,10 +1257,10 @@ ShellPromptForResponse (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellPromptForResponseHii (
 | 
					ShellPromptForResponseHii (
 | 
				
			||||||
  IN SHELL_PROMPT_REQUEST_TYPE         Type,
 | 
					  IN SHELL_PROMPT_REQUEST_TYPE  Type,
 | 
				
			||||||
  IN CONST EFI_STRING_ID  HiiFormatStringId,
 | 
					  IN CONST EFI_STRING_ID        HiiFormatStringId,
 | 
				
			||||||
  IN CONST EFI_HII_HANDLE HiiFormatHandle,
 | 
					  IN CONST EFI_HII_HANDLE       HiiFormatHandle,
 | 
				
			||||||
  IN OUT VOID             **Response
 | 
					  IN OUT VOID                   **Response
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1301,9 +1300,9 @@ ShellIsHexOrDecimalNumber (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellConvertStringToUint64(
 | 
					ShellConvertStringToUint64 (
 | 
				
			||||||
  IN CONST CHAR16   *String,
 | 
					  IN CONST CHAR16   *String,
 | 
				
			||||||
     OUT   UINT64   *Value,
 | 
					  OUT   UINT64      *Value,
 | 
				
			||||||
  IN CONST BOOLEAN  ForceHex,
 | 
					  IN CONST BOOLEAN  ForceHex,
 | 
				
			||||||
  IN CONST BOOLEAN  StopAtSpace
 | 
					  IN CONST BOOLEAN  StopAtSpace
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -1319,8 +1318,8 @@ ShellConvertStringToUint64(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFileExists(
 | 
					ShellFileExists (
 | 
				
			||||||
  IN CONST CHAR16 *Name
 | 
					  IN CONST CHAR16  *Name
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1338,11 +1337,11 @@ ShellFileExists(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @sa ShellFileHandleReadLine
 | 
					  @sa ShellFileHandleReadLine
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFileHandleReturnLine(
 | 
					ShellFileHandleReturnLine (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE            Handle,
 | 
					  IN SHELL_FILE_HANDLE  Handle,
 | 
				
			||||||
  IN OUT BOOLEAN                *Ascii
 | 
					  IN OUT BOOLEAN        *Ascii
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1373,12 +1372,12 @@ ShellFileHandleReturnLine(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellFileHandleReadLine(
 | 
					ShellFileHandleReadLine (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE          Handle,
 | 
					  IN SHELL_FILE_HANDLE  Handle,
 | 
				
			||||||
  IN OUT CHAR16                 *Buffer,
 | 
					  IN OUT CHAR16         *Buffer,
 | 
				
			||||||
  IN OUT UINTN                  *Size,
 | 
					  IN OUT UINTN          *Size,
 | 
				
			||||||
  IN BOOLEAN                    Truncate,
 | 
					  IN BOOLEAN            Truncate,
 | 
				
			||||||
  IN OUT BOOLEAN                *Ascii
 | 
					  IN OUT BOOLEAN        *Ascii
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1406,8 +1405,8 @@ ShellFileHandleReadLine(
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellDeleteFileByName(
 | 
					ShellDeleteFileByName (
 | 
				
			||||||
  IN CONST CHAR16               *FileName
 | 
					  IN CONST CHAR16  *FileName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -1424,9 +1423,9 @@ ShellDeleteFileByName(
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellPrintHelp (
 | 
					ShellPrintHelp (
 | 
				
			||||||
  IN CONST CHAR16     *CommandToGetHelpOn,
 | 
					  IN CONST CHAR16  *CommandToGetHelpOn,
 | 
				
			||||||
  IN CONST CHAR16     *SectionToGetHelpOn,
 | 
					  IN CONST CHAR16  *SectionToGetHelpOn,
 | 
				
			||||||
  IN BOOLEAN          PrintCommandText
 | 
					  IN BOOLEAN       PrintCommandText
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // __SHELL_LIB__
 | 
					#endif // __SHELL_LIB__
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,12 +6,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef _SHELL_ENVIRONMENT_2_PROTOCOL_H_
 | 
					#ifndef _SHELL_ENVIRONMENT_2_PROTOCOL_H_
 | 
				
			||||||
#define _SHELL_ENVIRONMENT_2_PROTOCOL_H_
 | 
					#define _SHELL_ENVIRONMENT_2_PROTOCOL_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DEFAULT_INIT_ROW    1
 | 
					#define DEFAULT_INIT_ROW  1
 | 
				
			||||||
#define DEFAULT_AUTO_LF     FALSE
 | 
					#define DEFAULT_AUTO_LF   FALSE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function is a prototype for a function that dumps information on a protocol
 | 
					  This function is a prototype for a function that dumps information on a protocol
 | 
				
			||||||
@@ -24,7 +23,7 @@
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_DUMP_PROTOCOL_INFO) (
 | 
					(EFIAPI *SHELLENV_DUMP_PROTOCOL_INFO)(
 | 
				
			||||||
  IN EFI_HANDLE                   Handle,
 | 
					  IN EFI_HANDLE                   Handle,
 | 
				
			||||||
  IN VOID                         *Interface
 | 
					  IN VOID                         *Interface
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -45,7 +44,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_INTERNAL_COMMAND) (
 | 
					(EFIAPI *SHELLENV_INTERNAL_COMMAND)(
 | 
				
			||||||
  IN EFI_HANDLE                   ImageHandle,
 | 
					  IN EFI_HANDLE                   ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE             *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE             *SystemTable
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -62,7 +61,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLCMD_GET_LINE_HELP) (
 | 
					(EFIAPI *SHELLCMD_GET_LINE_HELP)(
 | 
				
			||||||
  IN OUT CHAR16                 **Str
 | 
					  IN OUT CHAR16                 **Str
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -70,20 +69,20 @@ EFI_STATUS
 | 
				
			|||||||
Structure returned from functions that open multiple files.
 | 
					Structure returned from functions that open multiple files.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINT32                    Signature;            ///< SHELL_FILE_ARG_SIGNATURE.
 | 
					  UINT32                      Signature;          ///< SHELL_FILE_ARG_SIGNATURE.
 | 
				
			||||||
  LIST_ENTRY                Link;                 ///< Linked list helper.
 | 
					  LIST_ENTRY                  Link;               ///< Linked list helper.
 | 
				
			||||||
  EFI_STATUS                Status;               ///< File's status.
 | 
					  EFI_STATUS                  Status;             ///< File's status.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  EFI_FILE_HANDLE           Parent;               ///< What is the Parent file of this file.
 | 
					  EFI_FILE_HANDLE             Parent;             ///< What is the Parent file of this file.
 | 
				
			||||||
  UINT64                    OpenMode;             ///< How was the file opened.
 | 
					  UINT64                      OpenMode;           ///< How was the file opened.
 | 
				
			||||||
  CHAR16                    *ParentName;          ///< String representation of parent.
 | 
					  CHAR16                      *ParentName;        ///< String representation of parent.
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL  *ParentDevicePath;    ///< DevicePath for Parent.
 | 
					  EFI_DEVICE_PATH_PROTOCOL    *ParentDevicePath;  ///< DevicePath for Parent.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  CHAR16                    *FullName;            ///< Path and file name for this file.
 | 
					  CHAR16                      *FullName;          ///< Path and file name for this file.
 | 
				
			||||||
  CHAR16                    *FileName;            ///< File name for this file.
 | 
					  CHAR16                      *FileName;          ///< File name for this file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  EFI_FILE_HANDLE           Handle;               ///< Handle to this file.
 | 
					  EFI_FILE_HANDLE             Handle;             ///< Handle to this file.
 | 
				
			||||||
  EFI_FILE_INFO             *Info;                ///< Pointer to file info for this file.
 | 
					  EFI_FILE_INFO               *Info;              ///< Pointer to file info for this file.
 | 
				
			||||||
} SHELL_FILE_ARG;
 | 
					} SHELL_FILE_ARG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Signature for SHELL_FILE_ARG.
 | 
					/// Signature for SHELL_FILE_ARG.
 | 
				
			||||||
@@ -105,8 +104,8 @@ GUID for the shell environment2 extension (main GUID above).
 | 
				
			|||||||
    0xd2c18636, 0x40e5, 0x4eb5, {0xa3, 0x1b, 0x36, 0x69, 0x5f, 0xd4, 0x2c, 0x87} \
 | 
					    0xd2c18636, 0x40e5, 0x4eb5, {0xa3, 0x1b, 0x36, 0x69, 0x5f, 0xd4, 0x2c, 0x87} \
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EFI_SHELL_MAJOR_VER 0x00000001 ///< Major version of the EFI_SHELL_ENVIRONMENT2.
 | 
					#define EFI_SHELL_MAJOR_VER  0x00000001 ///< Major version of the EFI_SHELL_ENVIRONMENT2.
 | 
				
			||||||
#define EFI_SHELL_MINOR_VER 0x00000000 ///< Minor version of the EFI_SHELL_ENVIRONMENT2.
 | 
					#define EFI_SHELL_MINOR_VER  0x00000000 ///< Minor version of the EFI_SHELL_ENVIRONMENT2.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Execute a command line.
 | 
					  Execute a command line.
 | 
				
			||||||
@@ -129,7 +128,7 @@ GUID for the shell environment2 extension (main GUID above).
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_EXECUTE) (
 | 
					(EFIAPI *SHELLENV_EXECUTE)(
 | 
				
			||||||
  IN EFI_HANDLE   *ParentImageHandle,
 | 
					  IN EFI_HANDLE   *ParentImageHandle,
 | 
				
			||||||
  IN CHAR16       *CommandLine,
 | 
					  IN CHAR16       *CommandLine,
 | 
				
			||||||
  IN BOOLEAN      DebugOutput
 | 
					  IN BOOLEAN      DebugOutput
 | 
				
			||||||
@@ -147,7 +146,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_ENV) (
 | 
					(EFIAPI *SHELLENV_GET_ENV)(
 | 
				
			||||||
  IN CHAR16 *Name
 | 
					  IN CHAR16 *Name
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -163,7 +162,7 @@ CHAR16 *
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_MAP) (
 | 
					(EFIAPI *SHELLENV_GET_MAP)(
 | 
				
			||||||
  IN CHAR16 *Name
 | 
					  IN CHAR16 *Name
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -184,7 +183,7 @@ CHAR16 *
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_ADD_CMD) (
 | 
					(EFIAPI *SHELLENV_ADD_CMD)(
 | 
				
			||||||
  IN SHELLENV_INTERNAL_COMMAND    Handler,
 | 
					  IN SHELLENV_INTERNAL_COMMAND    Handler,
 | 
				
			||||||
  IN CHAR16                       *Cmd,
 | 
					  IN CHAR16                       *Cmd,
 | 
				
			||||||
  IN SHELLCMD_GET_LINE_HELP       GetLineHelp
 | 
					  IN SHELLCMD_GET_LINE_HELP       GetLineHelp
 | 
				
			||||||
@@ -206,7 +205,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_ADD_PROT) (
 | 
					(EFIAPI *SHELLENV_ADD_PROT)(
 | 
				
			||||||
  IN EFI_GUID                     *Protocol,
 | 
					  IN EFI_GUID                     *Protocol,
 | 
				
			||||||
  IN SHELLENV_DUMP_PROTOCOL_INFO  DumpToken OPTIONAL,
 | 
					  IN SHELLENV_DUMP_PROTOCOL_INFO  DumpToken OPTIONAL,
 | 
				
			||||||
  IN SHELLENV_DUMP_PROTOCOL_INFO  DumpInfo OPTIONAL,
 | 
					  IN SHELLENV_DUMP_PROTOCOL_INFO  DumpInfo OPTIONAL,
 | 
				
			||||||
@@ -227,8 +226,8 @@ VOID
 | 
				
			|||||||
  @retval NULL                 The Name was not found, and GenId was not TRUE.
 | 
					  @retval NULL                 The Name was not found, and GenId was not TRUE.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_PROT) (
 | 
					(EFIAPI *SHELLENV_GET_PROT)(
 | 
				
			||||||
  IN EFI_GUID *Protocol,
 | 
					  IN EFI_GUID *Protocol,
 | 
				
			||||||
  IN BOOLEAN GenId
 | 
					  IN BOOLEAN GenId
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -249,8 +248,8 @@ CHAR16*
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
(EFIAPI *SHELLENV_CUR_DIR) (
 | 
					(EFIAPI *SHELLENV_CUR_DIR)(
 | 
				
			||||||
  IN CHAR16 *DeviceName OPTIONAL
 | 
					  IN CHAR16 *DeviceName OPTIONAL
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -275,7 +274,7 @@ CHAR16*
 | 
				
			|||||||
  @sa SHELLENV_FREE_FILE_LIST
 | 
					  @sa SHELLENV_FREE_FILE_LIST
 | 
				
			||||||
**/typedef
 | 
					**/typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_FILE_META_ARG) (
 | 
					(EFIAPI *SHELLENV_FILE_META_ARG)(
 | 
				
			||||||
  IN CHAR16               *Arg,
 | 
					  IN CHAR16               *Arg,
 | 
				
			||||||
  IN OUT LIST_ENTRY       *ListHead
 | 
					  IN OUT LIST_ENTRY       *ListHead
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -289,7 +288,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_FREE_FILE_LIST) (
 | 
					(EFIAPI *SHELLENV_FREE_FILE_LIST)(
 | 
				
			||||||
  IN OUT LIST_ENTRY       *ListHead
 | 
					  IN OUT LIST_ENTRY       *ListHead
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -308,8 +307,8 @@ EFI_STATUS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_SHELL_INTERFACE*
 | 
					EFI_SHELL_INTERFACE *
 | 
				
			||||||
(EFIAPI *SHELLENV_NEW_SHELL) (
 | 
					(EFIAPI *SHELLENV_NEW_SHELL)(
 | 
				
			||||||
  IN EFI_HANDLE ImageHandle
 | 
					  IN EFI_HANDLE ImageHandle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -325,7 +324,7 @@ EFI_SHELL_INTERFACE*
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
(EFIAPI *SHELLENV_BATCH_IS_ACTIVE) (
 | 
					(EFIAPI *SHELLENV_BATCH_IS_ACTIVE)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -335,7 +334,7 @@ BOOLEAN
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_FREE_RESOURCES) (
 | 
					(EFIAPI *SHELLENV_FREE_RESOURCES)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -352,7 +351,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_ENABLE_PAGE_BREAK) (
 | 
					(EFIAPI *SHELLENV_ENABLE_PAGE_BREAK)(
 | 
				
			||||||
  IN INT32      StartRow,
 | 
					  IN INT32      StartRow,
 | 
				
			||||||
  IN BOOLEAN    AutoWrap
 | 
					  IN BOOLEAN    AutoWrap
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -365,7 +364,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_DISABLE_PAGE_BREAK) (
 | 
					(EFIAPI *SHELLENV_DISABLE_PAGE_BREAK)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -377,7 +376,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_PAGE_BREAK) (
 | 
					(EFIAPI *SHELLENV_GET_PAGE_BREAK)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -393,7 +392,7 @@ BOOLEAN
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_SET_KEY_FILTER) (
 | 
					(EFIAPI *SHELLENV_SET_KEY_FILTER)(
 | 
				
			||||||
  IN UINT32      KeyFilter
 | 
					  IN UINT32      KeyFilter
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -409,7 +408,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_KEY_FILTER) (
 | 
					(EFIAPI *SHELLENV_GET_KEY_FILTER)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -425,7 +424,7 @@ UINT32
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_EXECUTION_BREAK) (
 | 
					(EFIAPI *SHELLENV_GET_EXECUTION_BREAK)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -435,7 +434,7 @@ BOOLEAN
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_INCREMENT_SHELL_NESTING_LEVEL) (
 | 
					(EFIAPI *SHELLENV_INCREMENT_SHELL_NESTING_LEVEL)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -444,7 +443,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_DECREMENT_SHELL_NESTING_LEVEL) (
 | 
					(EFIAPI *SHELLENV_DECREMENT_SHELL_NESTING_LEVEL)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -457,7 +456,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
(EFIAPI *SHELLENV_IS_ROOT_SHELL) (
 | 
					(EFIAPI *SHELLENV_IS_ROOT_SHELL)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -476,7 +475,7 @@ BOOLEAN
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *SHELLENV_CLOSE_CONSOLE_PROXY) (
 | 
					(EFIAPI *SHELLENV_CLOSE_CONSOLE_PROXY)(
 | 
				
			||||||
  IN     EFI_HANDLE                       ConInHandle,
 | 
					  IN     EFI_HANDLE                       ConInHandle,
 | 
				
			||||||
  IN OUT EFI_SIMPLE_TEXT_INPUT_PROTOCOL   **ConIn,
 | 
					  IN OUT EFI_SIMPLE_TEXT_INPUT_PROTOCOL   **ConIn,
 | 
				
			||||||
  IN     EFI_HANDLE                       ConOutHandle,
 | 
					  IN     EFI_HANDLE                       ConOutHandle,
 | 
				
			||||||
@@ -486,6 +485,7 @@ VOID
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// declarations of handle enumerator
 | 
					// declarations of handle enumerator
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  For ease of use the shell maps handle #'s to short numbers.
 | 
					  For ease of use the shell maps handle #'s to short numbers.
 | 
				
			||||||
  This is only done on request for various internal commands and the references
 | 
					  This is only done on request for various internal commands and the references
 | 
				
			||||||
@@ -493,7 +493,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *INIT_HANDLE_ENUMERATOR) (
 | 
					(EFIAPI *INIT_HANDLE_ENUMERATOR)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -514,7 +514,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *NEXT_HANDLE) (
 | 
					(EFIAPI *NEXT_HANDLE)(
 | 
				
			||||||
  IN OUT EFI_HANDLE             **Handle
 | 
					  IN OUT EFI_HANDLE             **Handle
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -534,7 +534,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SKIP_HANDLE) (
 | 
					(EFIAPI *SKIP_HANDLE)(
 | 
				
			||||||
  IN UINTN                   SkipNum
 | 
					  IN UINTN                   SkipNum
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -552,7 +552,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
(EFIAPI *RESET_HANDLE_ENUMERATOR) (
 | 
					(EFIAPI *RESET_HANDLE_ENUMERATOR)(
 | 
				
			||||||
  IN UINTN                  EnumIndex
 | 
					  IN UINTN                  EnumIndex
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -567,7 +567,7 @@ UINTN
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *CLOSE_HANDLE_ENUMERATOR) (
 | 
					(EFIAPI *CLOSE_HANDLE_ENUMERATOR)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -582,7 +582,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
(EFIAPI *GET_NUM) (
 | 
					(EFIAPI *GET_NUM)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -590,43 +590,43 @@ UINTN
 | 
				
			|||||||
Handle Enumerator structure.
 | 
					Handle Enumerator structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  INIT_HANDLE_ENUMERATOR  Init;   ///< The pointer to INIT_HANDLE_ENUMERATOR function.
 | 
					  INIT_HANDLE_ENUMERATOR     Init;   ///< The pointer to INIT_HANDLE_ENUMERATOR function.
 | 
				
			||||||
  NEXT_HANDLE             Next;   ///< The pointer to NEXT_HANDLE function.
 | 
					  NEXT_HANDLE                Next;   ///< The pointer to NEXT_HANDLE function.
 | 
				
			||||||
  SKIP_HANDLE             Skip;   ///< The pointer to SKIP_HANDLE function.
 | 
					  SKIP_HANDLE                Skip;   ///< The pointer to SKIP_HANDLE function.
 | 
				
			||||||
  RESET_HANDLE_ENUMERATOR Reset;  ///< The pointer to RESET_HANDLE_ENUMERATOR function.
 | 
					  RESET_HANDLE_ENUMERATOR    Reset;  ///< The pointer to RESET_HANDLE_ENUMERATOR function.
 | 
				
			||||||
  CLOSE_HANDLE_ENUMERATOR Close;  ///< The pointer to CLOSE_HANDLE_ENUMERATOR function.
 | 
					  CLOSE_HANDLE_ENUMERATOR    Close;  ///< The pointer to CLOSE_HANDLE_ENUMERATOR function.
 | 
				
			||||||
  GET_NUM                 GetNum; ///< The pointer to GET_NUM function.
 | 
					  GET_NUM                    GetNum; ///< The pointer to GET_NUM function.
 | 
				
			||||||
} HANDLE_ENUMERATOR;
 | 
					} HANDLE_ENUMERATOR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Signature for the PROTOCOL_INFO structure.
 | 
					  Signature for the PROTOCOL_INFO structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define PROTOCOL_INFO_SIGNATURE SIGNATURE_32 ('s', 'p', 'i', 'n')
 | 
					#define PROTOCOL_INFO_SIGNATURE  SIGNATURE_32 ('s', 'p', 'i', 'n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  PROTOCOL_INFO structure for protocol enumerator functions.
 | 
					  PROTOCOL_INFO structure for protocol enumerator functions.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINTN                       Signature;   ///< PROTOCOL_INFO_SIGNATURE.
 | 
					  UINTN                          Signature; ///< PROTOCOL_INFO_SIGNATURE.
 | 
				
			||||||
  LIST_ENTRY                  Link;        ///< Standard linked list helper member.
 | 
					  LIST_ENTRY                     Link;      ///< Standard linked list helper member.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // The parsing info for the protocol.
 | 
					  // The parsing info for the protocol.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  EFI_GUID                    ProtocolId;  ///< The GUID for the protocol.
 | 
					  EFI_GUID                       ProtocolId; ///< The GUID for the protocol.
 | 
				
			||||||
  CHAR16                      *IdString;   ///< The name of the protocol.
 | 
					  CHAR16                         *IdString;  ///< The name of the protocol.
 | 
				
			||||||
  SHELLENV_DUMP_PROTOCOL_INFO DumpToken;   ///< The pointer to DumpToken function for the protocol.
 | 
					  SHELLENV_DUMP_PROTOCOL_INFO    DumpToken;  ///< The pointer to DumpToken function for the protocol.
 | 
				
			||||||
  SHELLENV_DUMP_PROTOCOL_INFO DumpInfo;    ///< The pointer to DumpInfo function for the protocol.
 | 
					  SHELLENV_DUMP_PROTOCOL_INFO    DumpInfo;   ///< The pointer to DumpInfo function for the protocol.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Patabase info on which handles are supporting this protocol.
 | 
					  // Patabase info on which handles are supporting this protocol.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  UINTN                       NoHandles;   ///< The number of handles producing this protocol.
 | 
					  UINTN                          NoHandles; ///< The number of handles producing this protocol.
 | 
				
			||||||
  EFI_HANDLE                  *Handles;    ///< The array of handles.
 | 
					  EFI_HANDLE                     *Handles;  ///< The array of handles.
 | 
				
			||||||
 | 
					 | 
				
			||||||
} PROTOCOL_INFO;
 | 
					} PROTOCOL_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Declarations of protocol info enumerator.
 | 
					// Declarations of protocol info enumerator.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This is an internal shell function to initialize the protocol enumerator.
 | 
					  This is an internal shell function to initialize the protocol enumerator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -636,7 +636,7 @@ typedef struct {
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *INIT_PROTOCOL_INFO_ENUMERATOR) (
 | 
					(EFIAPI *INIT_PROTOCOL_INFO_ENUMERATOR)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -657,7 +657,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *NEXT_PROTOCOL_INFO) (
 | 
					(EFIAPI *NEXT_PROTOCOL_INFO)(
 | 
				
			||||||
  IN OUT PROTOCOL_INFO            **ProtocolInfo
 | 
					  IN OUT PROTOCOL_INFO            **ProtocolInfo
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -673,7 +673,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SKIP_PROTOCOL_INFO) (
 | 
					(EFIAPI *SKIP_PROTOCOL_INFO)(
 | 
				
			||||||
  IN UINTN                         SkipNum
 | 
					  IN UINTN                         SkipNum
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -688,11 +688,10 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *RESET_PROTOCOL_INFO_ENUMERATOR) (
 | 
					(EFIAPI *RESET_PROTOCOL_INFO_ENUMERATOR)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function is an internal shell function for enumeration of protocols.
 | 
					  This function is an internal shell function for enumeration of protocols.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -704,7 +703,7 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI *CLOSE_PROTOCOL_INFO_ENUMERATOR) (
 | 
					(EFIAPI *CLOSE_PROTOCOL_INFO_ENUMERATOR)(
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -712,11 +711,11 @@ VOID
 | 
				
			|||||||
  Protocol enumerator structure of function pointers.
 | 
					  Protocol enumerator structure of function pointers.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  INIT_PROTOCOL_INFO_ENUMERATOR   Init;   ///< The pointer to INIT_PROTOCOL_INFO_ENUMERATOR function.
 | 
					  INIT_PROTOCOL_INFO_ENUMERATOR     Init;  ///< The pointer to INIT_PROTOCOL_INFO_ENUMERATOR function.
 | 
				
			||||||
  NEXT_PROTOCOL_INFO              Next;   ///< The pointer to NEXT_PROTOCOL_INFO function.
 | 
					  NEXT_PROTOCOL_INFO                Next;  ///< The pointer to NEXT_PROTOCOL_INFO function.
 | 
				
			||||||
  SKIP_PROTOCOL_INFO              Skip;   ///< The pointer to SKIP_PROTOCOL_INFO function.
 | 
					  SKIP_PROTOCOL_INFO                Skip;  ///< The pointer to SKIP_PROTOCOL_INFO function.
 | 
				
			||||||
  RESET_PROTOCOL_INFO_ENUMERATOR  Reset;  ///< The pointer to RESET_PROTOCOL_INFO_ENUMERATOR function.
 | 
					  RESET_PROTOCOL_INFO_ENUMERATOR    Reset; ///< The pointer to RESET_PROTOCOL_INFO_ENUMERATOR function.
 | 
				
			||||||
  CLOSE_PROTOCOL_INFO_ENUMERATOR  Close;  ///< The pointer to CLOSE_PROTOCOL_INFO_ENUMERATOR function.
 | 
					  CLOSE_PROTOCOL_INFO_ENUMERATOR    Close; ///< The pointer to CLOSE_PROTOCOL_INFO_ENUMERATOR function.
 | 
				
			||||||
} PROTOCOL_INFO_ENUMERATOR;
 | 
					} PROTOCOL_INFO_ENUMERATOR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -752,7 +751,7 @@ typedef struct {
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *GET_DEVICE_NAME) (
 | 
					(EFIAPI *GET_DEVICE_NAME)(
 | 
				
			||||||
  IN EFI_HANDLE  DeviceHandle,
 | 
					  IN EFI_HANDLE  DeviceHandle,
 | 
				
			||||||
  IN BOOLEAN     UseComponentName,
 | 
					  IN BOOLEAN     UseComponentName,
 | 
				
			||||||
  IN BOOLEAN     UseDevicePath,
 | 
					  IN BOOLEAN     UseDevicePath,
 | 
				
			||||||
@@ -764,8 +763,8 @@ EFI_STATUS
 | 
				
			|||||||
  IN UINTN       Indent
 | 
					  IN UINTN       Indent
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EFI_SHELL_COMPATIBLE_MODE_VER L"1.1.1" ///< The string for lowest version this shell supports.
 | 
					#define EFI_SHELL_COMPATIBLE_MODE_VER  L"1.1.1" ///< The string for lowest version this shell supports.
 | 
				
			||||||
#define EFI_SHELL_ENHANCED_MODE_VER   L"1.1.2" ///< The string for highest version this shell supports.
 | 
					#define EFI_SHELL_ENHANCED_MODE_VER    L"1.1.2" ///< The string for highest version this shell supports.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function gets the shell mode as stored in the shell environment
 | 
					  This function gets the shell mode as stored in the shell environment
 | 
				
			||||||
@@ -778,7 +777,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *GET_SHELL_MODE) (
 | 
					(EFIAPI *GET_SHELL_MODE)(
 | 
				
			||||||
  OUT CHAR16     **Mode
 | 
					  OUT CHAR16     **Mode
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -798,8 +797,8 @@ EFI_STATUS
 | 
				
			|||||||
  @retval NULL                  The operation could not be completed.
 | 
					  @retval NULL                  The operation could not be completed.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_DEVICE_PATH_PROTOCOL*
 | 
					EFI_DEVICE_PATH_PROTOCOL *
 | 
				
			||||||
(EFIAPI *SHELLENV_NAME_TO_PATH) (
 | 
					(EFIAPI *SHELLENV_NAME_TO_PATH)(
 | 
				
			||||||
  IN CHAR16 *Path
 | 
					  IN CHAR16 *Path
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -827,8 +826,8 @@ EFI_DEVICE_PATH_PROTOCOL*
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_FS_NAME) (
 | 
					(EFIAPI *SHELLENV_GET_FS_NAME)(
 | 
				
			||||||
  IN EFI_DEVICE_PATH_PROTOCOL     * DevPath,
 | 
					  IN EFI_DEVICE_PATH_PROTOCOL     *DevPath,
 | 
				
			||||||
  IN BOOLEAN                      ConsistMapping,
 | 
					  IN BOOLEAN                      ConsistMapping,
 | 
				
			||||||
  OUT CHAR16                      **Name
 | 
					  OUT CHAR16                      **Name
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -855,7 +854,7 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_FILE_META_ARG_NO_WILDCARD) (
 | 
					(EFIAPI *SHELLENV_FILE_META_ARG_NO_WILDCARD)(
 | 
				
			||||||
  IN CHAR16               *Arg,
 | 
					  IN CHAR16               *Arg,
 | 
				
			||||||
  IN OUT LIST_ENTRY       *ListHead
 | 
					  IN OUT LIST_ENTRY       *ListHead
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -877,8 +876,8 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_DEL_DUP_FILE) (
 | 
					(EFIAPI *SHELLENV_DEL_DUP_FILE)(
 | 
				
			||||||
  IN LIST_ENTRY   * ListHead
 | 
					  IN LIST_ENTRY   *ListHead
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -905,65 +904,65 @@ EFI_STATUS
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
(EFIAPI *SHELLENV_GET_FS_DEVICE_PATH) (
 | 
					(EFIAPI *SHELLENV_GET_FS_DEVICE_PATH)(
 | 
				
			||||||
  IN CHAR16                        *Name,
 | 
					  IN CHAR16                        *Name,
 | 
				
			||||||
  OUT EFI_DEVICE_PATH_PROTOCOL     **DevPath
 | 
					  OUT EFI_DEVICE_PATH_PROTOCOL     **DevPath
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// EFI_SHELL_ENVIRONMENT2 protocol structure.
 | 
					/// EFI_SHELL_ENVIRONMENT2 protocol structure.
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  SHELLENV_EXECUTE                        Execute;
 | 
					  SHELLENV_EXECUTE                          Execute;
 | 
				
			||||||
  SHELLENV_GET_ENV                        GetEnv;
 | 
					  SHELLENV_GET_ENV                          GetEnv;
 | 
				
			||||||
  SHELLENV_GET_MAP                        GetMap;
 | 
					  SHELLENV_GET_MAP                          GetMap;
 | 
				
			||||||
  SHELLENV_ADD_CMD                        AddCmd;
 | 
					  SHELLENV_ADD_CMD                          AddCmd;
 | 
				
			||||||
  SHELLENV_ADD_PROT                       AddProt;
 | 
					  SHELLENV_ADD_PROT                         AddProt;
 | 
				
			||||||
  SHELLENV_GET_PROT                       GetProt;
 | 
					  SHELLENV_GET_PROT                         GetProt;
 | 
				
			||||||
  SHELLENV_CUR_DIR                        CurDir;
 | 
					  SHELLENV_CUR_DIR                          CurDir;
 | 
				
			||||||
  SHELLENV_FILE_META_ARG                  FileMetaArg;
 | 
					  SHELLENV_FILE_META_ARG                    FileMetaArg;
 | 
				
			||||||
  SHELLENV_FREE_FILE_LIST                 FreeFileList;
 | 
					  SHELLENV_FREE_FILE_LIST                   FreeFileList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // The following services are only used by the shell itself.
 | 
					  // The following services are only used by the shell itself.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  SHELLENV_NEW_SHELL                      NewShell;
 | 
					  SHELLENV_NEW_SHELL                        NewShell;
 | 
				
			||||||
  SHELLENV_BATCH_IS_ACTIVE                BatchIsActive;
 | 
					  SHELLENV_BATCH_IS_ACTIVE                  BatchIsActive;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SHELLENV_FREE_RESOURCES                 FreeResources;
 | 
					  SHELLENV_FREE_RESOURCES                   FreeResources;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // GUID to differentiate ShellEnvironment2 from ShellEnvironment.
 | 
					  // GUID to differentiate ShellEnvironment2 from ShellEnvironment.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  EFI_GUID                                SESGuid;
 | 
					  EFI_GUID                                  SESGuid;
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Major Version grows if shell environment interface has been changes.
 | 
					  // Major Version grows if shell environment interface has been changes.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  UINT32                                  MajorVersion;
 | 
					  UINT32                                    MajorVersion;
 | 
				
			||||||
  UINT32                                  MinorVersion;
 | 
					  UINT32                                    MinorVersion;
 | 
				
			||||||
  SHELLENV_ENABLE_PAGE_BREAK              EnablePageBreak;
 | 
					  SHELLENV_ENABLE_PAGE_BREAK                EnablePageBreak;
 | 
				
			||||||
  SHELLENV_DISABLE_PAGE_BREAK             DisablePageBreak;
 | 
					  SHELLENV_DISABLE_PAGE_BREAK               DisablePageBreak;
 | 
				
			||||||
  SHELLENV_GET_PAGE_BREAK                 GetPageBreak;
 | 
					  SHELLENV_GET_PAGE_BREAK                   GetPageBreak;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SHELLENV_SET_KEY_FILTER                 SetKeyFilter;
 | 
					  SHELLENV_SET_KEY_FILTER                   SetKeyFilter;
 | 
				
			||||||
  SHELLENV_GET_KEY_FILTER                 GetKeyFilter;
 | 
					  SHELLENV_GET_KEY_FILTER                   GetKeyFilter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SHELLENV_GET_EXECUTION_BREAK            GetExecutionBreak;
 | 
					  SHELLENV_GET_EXECUTION_BREAK              GetExecutionBreak;
 | 
				
			||||||
  SHELLENV_INCREMENT_SHELL_NESTING_LEVEL  IncrementShellNestingLevel;
 | 
					  SHELLENV_INCREMENT_SHELL_NESTING_LEVEL    IncrementShellNestingLevel;
 | 
				
			||||||
  SHELLENV_DECREMENT_SHELL_NESTING_LEVEL  DecrementShellNestingLevel;
 | 
					  SHELLENV_DECREMENT_SHELL_NESTING_LEVEL    DecrementShellNestingLevel;
 | 
				
			||||||
  SHELLENV_IS_ROOT_SHELL                  IsRootShell;
 | 
					  SHELLENV_IS_ROOT_SHELL                    IsRootShell;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SHELLENV_CLOSE_CONSOLE_PROXY            CloseConsoleProxy;
 | 
					  SHELLENV_CLOSE_CONSOLE_PROXY              CloseConsoleProxy;
 | 
				
			||||||
  HANDLE_ENUMERATOR                       HandleEnumerator;
 | 
					  HANDLE_ENUMERATOR                         HandleEnumerator;
 | 
				
			||||||
  PROTOCOL_INFO_ENUMERATOR                ProtocolInfoEnumerator;
 | 
					  PROTOCOL_INFO_ENUMERATOR                  ProtocolInfoEnumerator;
 | 
				
			||||||
  GET_DEVICE_NAME                         GetDeviceName;
 | 
					  GET_DEVICE_NAME                           GetDeviceName;
 | 
				
			||||||
  GET_SHELL_MODE                          GetShellMode;
 | 
					  GET_SHELL_MODE                            GetShellMode;
 | 
				
			||||||
  SHELLENV_NAME_TO_PATH                   NameToPath;
 | 
					  SHELLENV_NAME_TO_PATH                     NameToPath;
 | 
				
			||||||
  SHELLENV_GET_FS_NAME                    GetFsName;
 | 
					  SHELLENV_GET_FS_NAME                      GetFsName;
 | 
				
			||||||
  SHELLENV_FILE_META_ARG_NO_WILDCARD      FileMetaArgNoWildCard;
 | 
					  SHELLENV_FILE_META_ARG_NO_WILDCARD        FileMetaArgNoWildCard;
 | 
				
			||||||
  SHELLENV_DEL_DUP_FILE                   DelDupFileArg;
 | 
					  SHELLENV_DEL_DUP_FILE                     DelDupFileArg;
 | 
				
			||||||
  SHELLENV_GET_FS_DEVICE_PATH             GetFsDevicePath;
 | 
					  SHELLENV_GET_FS_DEVICE_PATH               GetFsDevicePath;
 | 
				
			||||||
} EFI_SHELL_ENVIRONMENT2;
 | 
					} EFI_SHELL_ENVIRONMENT2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gEfiShellEnvironment2Guid;
 | 
					extern EFI_GUID  gEfiShellEnvironment2Guid;
 | 
				
			||||||
extern EFI_GUID gEfiShellEnvironment2ExtGuid;
 | 
					extern EFI_GUID  gEfiShellEnvironment2ExtGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // _SHELL_ENVIRONMENT_2_PROTOCOL_H_
 | 
					#endif // _SHELL_ENVIRONMENT_2_PROTOCOL_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,7 @@ typedef enum {
 | 
				
			|||||||
/// Attributes for an argument.
 | 
					/// Attributes for an argument.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
typedef struct _EFI_SHELL_ARG_INFO {
 | 
					typedef struct _EFI_SHELL_ARG_INFO {
 | 
				
			||||||
  UINT32  Attributes;
 | 
					  UINT32    Attributes;
 | 
				
			||||||
} EFI_SHELL_ARG_INFO;
 | 
					} EFI_SHELL_ARG_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
@@ -50,39 +50,39 @@ typedef struct {
 | 
				
			|||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Handle back to original image handle & image information.
 | 
					  /// Handle back to original image handle & image information.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  EFI_HANDLE                ImageHandle;
 | 
					  EFI_HANDLE                   ImageHandle;
 | 
				
			||||||
  EFI_LOADED_IMAGE_PROTOCOL *Info;
 | 
					  EFI_LOADED_IMAGE_PROTOCOL    *Info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Parsed arg list converted more C-like format.
 | 
					  /// Parsed arg list converted more C-like format.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  CHAR16                    **Argv;
 | 
					  CHAR16                       **Argv;
 | 
				
			||||||
  UINTN                     Argc;
 | 
					  UINTN                        Argc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Storage for file redirection args after parsing.
 | 
					  /// Storage for file redirection args after parsing.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  CHAR16                    **RedirArgv;
 | 
					  CHAR16                       **RedirArgv;
 | 
				
			||||||
  UINTN                     RedirArgc;
 | 
					  UINTN                        RedirArgc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A file style handle for console io.
 | 
					  /// A file style handle for console io.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  EFI_FILE_PROTOCOL         *StdIn;
 | 
					  EFI_FILE_PROTOCOL            *StdIn;
 | 
				
			||||||
  EFI_FILE_PROTOCOL         *StdOut;
 | 
					  EFI_FILE_PROTOCOL            *StdOut;
 | 
				
			||||||
  EFI_FILE_PROTOCOL         *StdErr;
 | 
					  EFI_FILE_PROTOCOL            *StdErr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// List of attributes for each argument.
 | 
					  /// List of attributes for each argument.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  EFI_SHELL_ARG_INFO        *ArgInfo;
 | 
					  EFI_SHELL_ARG_INFO           *ArgInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Whether we are echoing.
 | 
					  /// Whether we are echoing.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  BOOLEAN                   EchoOn;
 | 
					  BOOLEAN                      EchoOn;
 | 
				
			||||||
} EFI_SHELL_INTERFACE;
 | 
					} EFI_SHELL_INTERFACE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gEfiShellInterfaceGuid;
 | 
					extern EFI_GUID  gEfiShellInterfaceGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -99,8 +99,8 @@
 | 
				
			|||||||
#include <Protocol/DriverConfiguration.h>
 | 
					#include <Protocol/DriverConfiguration.h>
 | 
				
			||||||
#include <Protocol/DriverConfiguration2.h>
 | 
					#include <Protocol/DriverConfiguration2.h>
 | 
				
			||||||
#include <Protocol/DevicePathUtilities.h>
 | 
					#include <Protocol/DevicePathUtilities.h>
 | 
				
			||||||
//#include <Protocol/FirmwareVolume.h>
 | 
					// #include <Protocol/FirmwareVolume.h>
 | 
				
			||||||
//#include <Protocol/FirmwareVolume2.h>
 | 
					// #include <Protocol/FirmwareVolume2.h>
 | 
				
			||||||
#include <Protocol/DriverFamilyOverride.h>
 | 
					#include <Protocol/DriverFamilyOverride.h>
 | 
				
			||||||
#include <Protocol/Pcd.h>
 | 
					#include <Protocol/Pcd.h>
 | 
				
			||||||
#include <Protocol/TcgService.h>
 | 
					#include <Protocol/TcgService.h>
 | 
				
			||||||
@@ -150,8 +150,8 @@
 | 
				
			|||||||
#include <Library/ShellCommandLib.h>
 | 
					#include <Library/ShellCommandLib.h>
 | 
				
			||||||
#include <Library/PeCoffGetEntryPointLib.h>
 | 
					#include <Library/PeCoffGetEntryPointLib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define   EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION_V1   1
 | 
					#define   EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION_V1  1
 | 
				
			||||||
#define   EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION_V2   2
 | 
					#define   EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION_V2  2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// EFI_FIRMWARE_IMAGE_DESCRIPTOR in UEFI spec < 2.4a
 | 
					/// EFI_FIRMWARE_IMAGE_DESCRIPTOR in UEFI spec < 2.4a
 | 
				
			||||||
@@ -161,32 +161,32 @@ typedef struct {
 | 
				
			|||||||
  /// A unique number identifying the firmware image within the device.  The number is
 | 
					  /// A unique number identifying the firmware image within the device.  The number is
 | 
				
			||||||
  /// between 1 and DescriptorCount.
 | 
					  /// between 1 and DescriptorCount.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT8                            ImageIndex;
 | 
					  UINT8       ImageIndex;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A unique number identifying the firmware image type.
 | 
					  /// A unique number identifying the firmware image type.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  EFI_GUID                         ImageTypeId;
 | 
					  EFI_GUID    ImageTypeId;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A unique number identifying the firmware image.
 | 
					  /// A unique number identifying the firmware image.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           ImageId;
 | 
					  UINT64      ImageId;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A pointer to a null-terminated string representing the firmware image name.
 | 
					  /// A pointer to a null-terminated string representing the firmware image name.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  CHAR16                           *ImageIdName;
 | 
					  CHAR16      *ImageIdName;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Identifies the version of the device firmware. The format is vendor specific and new
 | 
					  /// Identifies the version of the device firmware. The format is vendor specific and new
 | 
				
			||||||
  /// version must have a greater value than an old version.
 | 
					  /// version must have a greater value than an old version.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT32                           Version;
 | 
					  UINT32      Version;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A pointer to a null-terminated string representing the firmware image version name.
 | 
					  /// A pointer to a null-terminated string representing the firmware image version name.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  CHAR16                           *VersionName;
 | 
					  CHAR16      *VersionName;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Size of the image in bytes.  If size=0, then only ImageIndex and ImageTypeId are valid.
 | 
					  /// Size of the image in bytes.  If size=0, then only ImageIndex and ImageTypeId are valid.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINTN                            Size;
 | 
					  UINTN       Size;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Image attributes that are supported by this device.  See 'Image Attribute Definitions'
 | 
					  /// Image attributes that are supported by this device.  See 'Image Attribute Definitions'
 | 
				
			||||||
  /// for possible returned values of this parameter.  A value of 1 indicates the attribute is
 | 
					  /// for possible returned values of this parameter.  A value of 1 indicates the attribute is
 | 
				
			||||||
@@ -194,20 +194,19 @@ typedef struct {
 | 
				
			|||||||
  /// value of 0 indicates the attribute is not supported and the current setting value in
 | 
					  /// value of 0 indicates the attribute is not supported and the current setting value in
 | 
				
			||||||
  /// AttributesSetting is meaningless.
 | 
					  /// AttributesSetting is meaningless.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           AttributesSupported;
 | 
					  UINT64      AttributesSupported;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Image attributes.  See 'Image Attribute Definitions' for possible returned values of
 | 
					  /// Image attributes.  See 'Image Attribute Definitions' for possible returned values of
 | 
				
			||||||
  /// this parameter.
 | 
					  /// this parameter.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           AttributesSetting;
 | 
					  UINT64      AttributesSetting;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Image compatibilities.  See 'Image Compatibility Definitions' for possible returned
 | 
					  /// Image compatibilities.  See 'Image Compatibility Definitions' for possible returned
 | 
				
			||||||
  /// values of this parameter.
 | 
					  /// values of this parameter.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           Compatibilities;
 | 
					  UINT64      Compatibilities;
 | 
				
			||||||
} EFI_FIRMWARE_IMAGE_DESCRIPTOR_V1;
 | 
					} EFI_FIRMWARE_IMAGE_DESCRIPTOR_V1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// EFI_FIRMWARE_IMAGE_DESCRIPTOR in UEFI spec > 2.4a and < 2.5
 | 
					/// EFI_FIRMWARE_IMAGE_DESCRIPTOR in UEFI spec > 2.4a and < 2.5
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
@@ -216,32 +215,32 @@ typedef struct {
 | 
				
			|||||||
  /// A unique number identifying the firmware image within the device.  The number is
 | 
					  /// A unique number identifying the firmware image within the device.  The number is
 | 
				
			||||||
  /// between 1 and DescriptorCount.
 | 
					  /// between 1 and DescriptorCount.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT8                            ImageIndex;
 | 
					  UINT8       ImageIndex;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A unique number identifying the firmware image type.
 | 
					  /// A unique number identifying the firmware image type.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  EFI_GUID                         ImageTypeId;
 | 
					  EFI_GUID    ImageTypeId;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A unique number identifying the firmware image.
 | 
					  /// A unique number identifying the firmware image.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           ImageId;
 | 
					  UINT64      ImageId;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A pointer to a null-terminated string representing the firmware image name.
 | 
					  /// A pointer to a null-terminated string representing the firmware image name.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  CHAR16                           *ImageIdName;
 | 
					  CHAR16      *ImageIdName;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Identifies the version of the device firmware. The format is vendor specific and new
 | 
					  /// Identifies the version of the device firmware. The format is vendor specific and new
 | 
				
			||||||
  /// version must have a greater value than an old version.
 | 
					  /// version must have a greater value than an old version.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT32                           Version;
 | 
					  UINT32      Version;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// A pointer to a null-terminated string representing the firmware image version name.
 | 
					  /// A pointer to a null-terminated string representing the firmware image version name.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  CHAR16                           *VersionName;
 | 
					  CHAR16      *VersionName;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Size of the image in bytes.  If size=0, then only ImageIndex and ImageTypeId are valid.
 | 
					  /// Size of the image in bytes.  If size=0, then only ImageIndex and ImageTypeId are valid.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINTN                            Size;
 | 
					  UINTN       Size;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Image attributes that are supported by this device.  See 'Image Attribute Definitions'
 | 
					  /// Image attributes that are supported by this device.  See 'Image Attribute Definitions'
 | 
				
			||||||
  /// for possible returned values of this parameter.  A value of 1 indicates the attribute is
 | 
					  /// for possible returned values of this parameter.  A value of 1 indicates the attribute is
 | 
				
			||||||
@@ -249,32 +248,32 @@ typedef struct {
 | 
				
			|||||||
  /// value of 0 indicates the attribute is not supported and the current setting value in
 | 
					  /// value of 0 indicates the attribute is not supported and the current setting value in
 | 
				
			||||||
  /// AttributesSetting is meaningless.
 | 
					  /// AttributesSetting is meaningless.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           AttributesSupported;
 | 
					  UINT64      AttributesSupported;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Image attributes.  See 'Image Attribute Definitions' for possible returned values of
 | 
					  /// Image attributes.  See 'Image Attribute Definitions' for possible returned values of
 | 
				
			||||||
  /// this parameter.
 | 
					  /// this parameter.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           AttributesSetting;
 | 
					  UINT64      AttributesSetting;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Image compatibilities.  See 'Image Compatibility Definitions' for possible returned
 | 
					  /// Image compatibilities.  See 'Image Compatibility Definitions' for possible returned
 | 
				
			||||||
  /// values of this parameter.
 | 
					  /// values of this parameter.
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  UINT64                           Compatibilities;
 | 
					  UINT64      Compatibilities;
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Describes the lowest ImageDescriptor version that the device will accept. Only
 | 
					  /// Describes the lowest ImageDescriptor version that the device will accept. Only
 | 
				
			||||||
  /// present in version 2 or higher.
 | 
					  /// present in version 2 or higher.
 | 
				
			||||||
  UINT32                           LowestSupportedImageVersion;
 | 
					  UINT32      LowestSupportedImageVersion;
 | 
				
			||||||
} EFI_FIRMWARE_IMAGE_DESCRIPTOR_V2;
 | 
					} EFI_FIRMWARE_IMAGE_DESCRIPTOR_V2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY  Link;
 | 
					  LIST_ENTRY    Link;
 | 
				
			||||||
  EFI_HANDLE  TheHandle;
 | 
					  EFI_HANDLE    TheHandle;
 | 
				
			||||||
  UINTN       TheIndex;
 | 
					  UINTN         TheIndex;
 | 
				
			||||||
}HANDLE_LIST;
 | 
					} HANDLE_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  HANDLE_LIST   List;
 | 
					  HANDLE_LIST    List;
 | 
				
			||||||
  UINTN         NextIndex;
 | 
					  UINTN          NextIndex;
 | 
				
			||||||
} HANDLE_INDEX_LIST;
 | 
					} HANDLE_INDEX_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
@@ -284,11 +283,10 @@ CHAR16 *
 | 
				
			|||||||
  IN CONST BOOLEAN    Verbose
 | 
					  IN CONST BOOLEAN    Verbose
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _GUID_INFO_BLOCK{
 | 
					typedef struct _GUID_INFO_BLOCK {
 | 
				
			||||||
  EFI_STRING_ID                 StringId;
 | 
					  EFI_STRING_ID         StringId;
 | 
				
			||||||
  EFI_GUID                      *GuidId;
 | 
					  EFI_GUID              *GuidId;
 | 
				
			||||||
  DUMP_PROTOCOL_INFO            DumpInfo;
 | 
					  DUMP_PROTOCOL_INFO    DumpInfo;
 | 
				
			||||||
} GUID_INFO_BLOCK;
 | 
					} GUID_INFO_BLOCK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,16 +12,16 @@
 | 
				
			|||||||
#include "AcpiView.h"
 | 
					#include "AcpiView.h"
 | 
				
			||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC UINT32   gIndent;
 | 
					STATIC UINT32  gIndent;
 | 
				
			||||||
STATIC UINT32   mTableErrorCount;
 | 
					STATIC UINT32  mTableErrorCount;
 | 
				
			||||||
STATIC UINT32   mTableWarningCount;
 | 
					STATIC UINT32  mTableWarningCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI header.
 | 
					  An ACPI_PARSER array describing the ACPI header.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AcpiHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  AcpiHeaderParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -113,21 +113,21 @@ IncrementWarningCount (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
VerifyChecksum (
 | 
					VerifyChecksum (
 | 
				
			||||||
  IN BOOLEAN Log,
 | 
					  IN BOOLEAN  Log,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  Length
 | 
					  IN UINT32   Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN ByteCount;
 | 
					  UINTN  ByteCount;
 | 
				
			||||||
  UINT8 Checksum;
 | 
					  UINT8  Checksum;
 | 
				
			||||||
  UINTN OriginalAttribute;
 | 
					  UINTN  OriginalAttribute;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
					  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  OriginalAttribute = 0;
 | 
					  OriginalAttribute = 0;
 | 
				
			||||||
  ByteCount = 0;
 | 
					  ByteCount         = 0;
 | 
				
			||||||
  Checksum = 0;
 | 
					  Checksum          = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (ByteCount < Length) {
 | 
					  while (ByteCount < Length) {
 | 
				
			||||||
    Checksum += *(Ptr++);
 | 
					    Checksum += *(Ptr++);
 | 
				
			||||||
@@ -140,22 +140,29 @@ VerifyChecksum (
 | 
				
			|||||||
      if (GetColourHighlighting ()) {
 | 
					      if (GetColourHighlighting ()) {
 | 
				
			||||||
        gST->ConOut->SetAttribute (
 | 
					        gST->ConOut->SetAttribute (
 | 
				
			||||||
                       gST->ConOut,
 | 
					                       gST->ConOut,
 | 
				
			||||||
                       EFI_TEXT_ATTR (EFI_GREEN,
 | 
					                       EFI_TEXT_ATTR (
 | 
				
			||||||
                         ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4))
 | 
					                         EFI_GREEN,
 | 
				
			||||||
 | 
					                         ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
				
			||||||
 | 
					                         )
 | 
				
			||||||
                       );
 | 
					                       );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"Table Checksum : OK\n\n");
 | 
					      Print (L"Table Checksum : OK\n\n");
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      if (GetColourHighlighting ()) {
 | 
					      if (GetColourHighlighting ()) {
 | 
				
			||||||
        gST->ConOut->SetAttribute (
 | 
					        gST->ConOut->SetAttribute (
 | 
				
			||||||
                       gST->ConOut,
 | 
					                       gST->ConOut,
 | 
				
			||||||
                       EFI_TEXT_ATTR (EFI_RED,
 | 
					                       EFI_TEXT_ATTR (
 | 
				
			||||||
                         ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4))
 | 
					                         EFI_RED,
 | 
				
			||||||
 | 
					                         ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
				
			||||||
 | 
					                         )
 | 
				
			||||||
                       );
 | 
					                       );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"Table Checksum : FAILED (0x%X)\n\n", Checksum);
 | 
					      Print (L"Table Checksum : FAILED (0x%X)\n\n", Checksum);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (GetColourHighlighting ()) {
 | 
					    if (GetColourHighlighting ()) {
 | 
				
			||||||
      gST->ConOut->SetAttribute (gST->ConOut, OriginalAttribute);
 | 
					      gST->ConOut->SetAttribute (gST->ConOut, OriginalAttribute);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -173,16 +180,16 @@ VerifyChecksum (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpRaw (
 | 
					DumpRaw (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN ByteCount;
 | 
					  UINTN  ByteCount;
 | 
				
			||||||
  UINTN PartLineChars;
 | 
					  UINTN  PartLineChars;
 | 
				
			||||||
  UINTN AsciiBufferIndex;
 | 
					  UINTN  AsciiBufferIndex;
 | 
				
			||||||
  CHAR8 AsciiBuffer[17];
 | 
					  CHAR8  AsciiBuffer[17];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ByteCount = 0;
 | 
					  ByteCount        = 0;
 | 
				
			||||||
  AsciiBufferIndex = 0;
 | 
					  AsciiBufferIndex = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Print (L"Address  : 0x%p\n", Ptr);
 | 
					  Print (L"Address  : 0x%p\n", Ptr);
 | 
				
			||||||
@@ -216,6 +223,7 @@ DumpRaw (
 | 
				
			|||||||
    if ((Length & 0x0F) <= 8) {
 | 
					    if ((Length & 0x0F) <= 8) {
 | 
				
			||||||
      PartLineChars += 2;
 | 
					      PartLineChars += 2;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (PartLineChars > 0) {
 | 
					    while (PartLineChars > 0) {
 | 
				
			||||||
      Print (L" ");
 | 
					      Print (L" ");
 | 
				
			||||||
      PartLineChars--;
 | 
					      PartLineChars--;
 | 
				
			||||||
@@ -236,8 +244,8 @@ DumpRaw (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint8 (
 | 
					DumpUint8 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (Format, *Ptr);
 | 
					  Print (Format, *Ptr);
 | 
				
			||||||
@@ -252,11 +260,11 @@ DumpUint8 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint16 (
 | 
					DumpUint16 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (Format, *(UINT16*)Ptr);
 | 
					  Print (Format, *(UINT16 *)Ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -268,11 +276,11 @@ DumpUint16 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint32 (
 | 
					DumpUint32 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (Format, *(UINT32*)Ptr);
 | 
					  Print (Format, *(UINT32 *)Ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -284,19 +292,19 @@ DumpUint32 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint64 (
 | 
					DumpUint64 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // Some fields are not aligned and this causes alignment faults
 | 
					  // Some fields are not aligned and this causes alignment faults
 | 
				
			||||||
  // on ARM platforms if the compiler generates LDRD instructions.
 | 
					  // on ARM platforms if the compiler generates LDRD instructions.
 | 
				
			||||||
  // Perform word access so that LDRD instructions are not generated.
 | 
					  // Perform word access so that LDRD instructions are not generated.
 | 
				
			||||||
  UINT64 Val;
 | 
					  UINT64  Val;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Val = *(UINT32*)(Ptr + sizeof (UINT32));
 | 
					  Val = *(UINT32 *)(Ptr + sizeof (UINT32));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Val = LShiftU64(Val,32);
 | 
					  Val  = LShiftU64 (Val, 32);
 | 
				
			||||||
  Val |= (UINT64)*(UINT32*)Ptr;
 | 
					  Val |= (UINT64)*(UINT32 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Print (Format, Val);
 | 
					  Print (Format, Val);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -313,8 +321,8 @@ DumpUint64 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump3Chars (
 | 
					Dump3Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (
 | 
					  Print (
 | 
				
			||||||
@@ -337,8 +345,8 @@ Dump3Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump4Chars (
 | 
					Dump4Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (
 | 
					  Print (
 | 
				
			||||||
@@ -362,8 +370,8 @@ Dump4Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump6Chars (
 | 
					Dump6Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (
 | 
					  Print (
 | 
				
			||||||
@@ -389,8 +397,8 @@ Dump6Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump8Chars (
 | 
					Dump8Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (
 | 
					  Print (
 | 
				
			||||||
@@ -418,8 +426,8 @@ Dump8Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump12Chars (
 | 
					Dump12Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN       UINT8*  Ptr
 | 
					  IN       UINT8   *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (
 | 
					  Print (
 | 
				
			||||||
@@ -454,9 +462,9 @@ Dump12Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PrintFieldName (
 | 
					PrintFieldName (
 | 
				
			||||||
  IN UINT32         Indent,
 | 
					  IN UINT32        Indent,
 | 
				
			||||||
  IN CONST CHAR16*  FieldName
 | 
					  IN CONST CHAR16  *FieldName
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (
 | 
					  Print (
 | 
				
			||||||
    L"%*a%-*s : ",
 | 
					    L"%*a%-*s : ",
 | 
				
			||||||
@@ -498,38 +506,41 @@ EFIAPI
 | 
				
			|||||||
ParseAcpi (
 | 
					ParseAcpi (
 | 
				
			||||||
  IN BOOLEAN            Trace,
 | 
					  IN BOOLEAN            Trace,
 | 
				
			||||||
  IN UINT32             Indent,
 | 
					  IN UINT32             Indent,
 | 
				
			||||||
  IN CONST CHAR8*       AsciiName OPTIONAL,
 | 
					  IN CONST CHAR8        *AsciiName OPTIONAL,
 | 
				
			||||||
  IN UINT8*             Ptr,
 | 
					  IN UINT8              *Ptr,
 | 
				
			||||||
  IN UINT32             Length,
 | 
					  IN UINT32             Length,
 | 
				
			||||||
  IN CONST ACPI_PARSER* Parser,
 | 
					  IN CONST ACPI_PARSER  *Parser,
 | 
				
			||||||
  IN UINT32             ParserItems
 | 
					  IN UINT32             ParserItems
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32  Index;
 | 
					  UINT32   Index;
 | 
				
			||||||
  UINT32  Offset;
 | 
					  UINT32   Offset;
 | 
				
			||||||
  BOOLEAN HighLight;
 | 
					  BOOLEAN  HighLight;
 | 
				
			||||||
  UINTN   OriginalAttribute;
 | 
					  UINTN    OriginalAttribute;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
					  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  OriginalAttribute = 0;
 | 
					  OriginalAttribute = 0;
 | 
				
			||||||
  Offset = 0;
 | 
					  Offset            = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Increment the Indent
 | 
					  // Increment the Indent
 | 
				
			||||||
  gIndent += Indent;
 | 
					  gIndent += Indent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Trace && (AsciiName != NULL)){
 | 
					  if (Trace && (AsciiName != NULL)) {
 | 
				
			||||||
    HighLight = GetColourHighlighting ();
 | 
					    HighLight = GetColourHighlighting ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (HighLight) {
 | 
					    if (HighLight) {
 | 
				
			||||||
      OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
					      OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
				
			||||||
      gST->ConOut->SetAttribute (
 | 
					      gST->ConOut->SetAttribute (
 | 
				
			||||||
                     gST->ConOut,
 | 
					                     gST->ConOut,
 | 
				
			||||||
                     EFI_TEXT_ATTR(EFI_YELLOW,
 | 
					                     EFI_TEXT_ATTR (
 | 
				
			||||||
                       ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4))
 | 
					                       EFI_YELLOW,
 | 
				
			||||||
 | 
					                       ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
				
			||||||
 | 
					                       )
 | 
				
			||||||
                     );
 | 
					                     );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"%*a%-*a :\n",
 | 
					      L"%*a%-*a :\n",
 | 
				
			||||||
      gIndent,
 | 
					      gIndent,
 | 
				
			||||||
@@ -544,7 +555,6 @@ ParseAcpi (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for (Index = 0; Index < ParserItems; Index++) {
 | 
					  for (Index = 0; Index < ParserItems; Index++) {
 | 
				
			||||||
    if ((Offset + Parser[Index].Length) > Length) {
 | 
					    if ((Offset + Parser[Index].Length) > Length) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
      // For fields outside the buffer length provided, reset any pointers
 | 
					      // For fields outside the buffer length provided, reset any pointers
 | 
				
			||||||
      // which were supposed to be updated by this function call
 | 
					      // which were supposed to be updated by this function call
 | 
				
			||||||
      if (Parser[Index].ItemPtr != NULL) {
 | 
					      if (Parser[Index].ItemPtr != NULL) {
 | 
				
			||||||
@@ -556,11 +566,12 @@ ParseAcpi (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (GetConsistencyChecking () &&
 | 
					    if (GetConsistencyChecking () &&
 | 
				
			||||||
        (Offset != Parser[Index].Offset)) {
 | 
					        (Offset != Parser[Index].Offset))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"\nERROR: %a: Offset Mismatch for %s\n"
 | 
					        L"\nERROR: %a: Offset Mismatch for %s\n"
 | 
				
			||||||
          L"CurrentOffset = %d FieldOffset = %d\n",
 | 
					        L"CurrentOffset = %d FieldOffset = %d\n",
 | 
				
			||||||
        AsciiName,
 | 
					        AsciiName,
 | 
				
			||||||
        Parser[Index].NameStr,
 | 
					        Parser[Index].NameStr,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
@@ -597,20 +608,23 @@ ParseAcpi (
 | 
				
			|||||||
              );
 | 
					              );
 | 
				
			||||||
        } // switch
 | 
					        } // switch
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Validating only makes sense if we are tracing
 | 
					      // Validating only makes sense if we are tracing
 | 
				
			||||||
      // the parsed table entries, to report by table name.
 | 
					      // the parsed table entries, to report by table name.
 | 
				
			||||||
      if (GetConsistencyChecking () &&
 | 
					      if (GetConsistencyChecking () &&
 | 
				
			||||||
          (Parser[Index].FieldValidator != NULL)) {
 | 
					          (Parser[Index].FieldValidator != NULL))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        Parser[Index].FieldValidator (Ptr, Parser[Index].Context);
 | 
					        Parser[Index].FieldValidator (Ptr, Parser[Index].Context);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"\n");
 | 
					      Print (L"\n");
 | 
				
			||||||
    } // if (Trace)
 | 
					    } // if (Trace)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (Parser[Index].ItemPtr != NULL) {
 | 
					    if (Parser[Index].ItemPtr != NULL) {
 | 
				
			||||||
      *Parser[Index].ItemPtr = (VOID*)Ptr;
 | 
					      *Parser[Index].ItemPtr = (VOID *)Ptr;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Ptr += Parser[Index].Length;
 | 
					    Ptr    += Parser[Index].Length;
 | 
				
			||||||
    Offset += Parser[Index].Length;
 | 
					    Offset += Parser[Index].Length;
 | 
				
			||||||
  } // for
 | 
					  } // for
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -624,12 +638,12 @@ ParseAcpi (
 | 
				
			|||||||
  The GasParser array is used by the ParseAcpi function to parse and/or trace
 | 
					  The GasParser array is used by the ParseAcpi function to parse and/or trace
 | 
				
			||||||
  the GAS structure.
 | 
					  the GAS structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GasParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GasParser[] = {
 | 
				
			||||||
  {L"Address Space ID", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Address Space ID",    1, 0, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Register Bit Width", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Register Bit Width",  1, 1, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Register Bit Offset", 1, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Register Bit Offset", 1, 2, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Access Size", 1, 3, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Access Size",         1, 3, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Address", 8, 4, L"0x%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Address",             8, 4, L"0x%lx", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -644,9 +658,9 @@ STATIC CONST ACPI_PARSER GasParser[] = {
 | 
				
			|||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpGasStruct (
 | 
					DumpGasStruct (
 | 
				
			||||||
  IN UINT8*        Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32        Indent,
 | 
					  IN UINT32  Indent,
 | 
				
			||||||
  IN UINT32        Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (L"\n");
 | 
					  Print (L"\n");
 | 
				
			||||||
@@ -669,8 +683,8 @@ DumpGasStruct (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpGas (
 | 
					DumpGas (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  DumpGasStruct (Ptr, 2, sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE));
 | 
					  DumpGasStruct (Ptr, 2, sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE));
 | 
				
			||||||
@@ -686,7 +700,7 @@ DumpGas (
 | 
				
			|||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpAcpiHeader (
 | 
					DumpAcpiHeader (
 | 
				
			||||||
  IN UINT8* Ptr
 | 
					  IN UINT8  *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return ParseAcpi (
 | 
					  return ParseAcpi (
 | 
				
			||||||
@@ -715,13 +729,13 @@ DumpAcpiHeader (
 | 
				
			|||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiHeader (
 | 
					ParseAcpiHeader (
 | 
				
			||||||
  IN  UINT8*         Ptr,
 | 
					  IN  UINT8         *Ptr,
 | 
				
			||||||
  OUT CONST UINT32** Signature,
 | 
					  OUT CONST UINT32  **Signature,
 | 
				
			||||||
  OUT CONST UINT32** Length,
 | 
					  OUT CONST UINT32  **Length,
 | 
				
			||||||
  OUT CONST UINT8**  Revision
 | 
					  OUT CONST UINT8   **Revision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32                        BytesParsed;
 | 
					  UINT32  BytesParsed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  BytesParsed = ParseAcpi (
 | 
					  BytesParsed = ParseAcpi (
 | 
				
			||||||
                  FALSE,
 | 
					                  FALSE,
 | 
				
			||||||
@@ -733,8 +747,8 @@ ParseAcpiHeader (
 | 
				
			|||||||
                  );
 | 
					                  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *Signature = AcpiHdrInfo.Signature;
 | 
					  *Signature = AcpiHdrInfo.Signature;
 | 
				
			||||||
  *Length = AcpiHdrInfo.Length;
 | 
					  *Length    = AcpiHdrInfo.Length;
 | 
				
			||||||
  *Revision = AcpiHdrInfo.Revision;
 | 
					  *Revision  = AcpiHdrInfo.Revision;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return BytesParsed;
 | 
					  return BytesParsed;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,9 +50,9 @@ IncrementWarningCount (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
VerifyChecksum (
 | 
					VerifyChecksum (
 | 
				
			||||||
  IN BOOLEAN Log,
 | 
					  IN BOOLEAN  Log,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  Length
 | 
					  IN UINT32   Length
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -64,8 +64,8 @@ VerifyChecksum (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpRaw (
 | 
					DumpRaw (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -77,8 +77,8 @@ DumpRaw (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint8 (
 | 
					DumpUint8 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -90,8 +90,8 @@ DumpUint8 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint16 (
 | 
					DumpUint16 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -103,8 +103,8 @@ DumpUint16 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint32 (
 | 
					DumpUint32 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -116,8 +116,8 @@ DumpUint32 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpUint64 (
 | 
					DumpUint64 (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -132,8 +132,8 @@ DumpUint64 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump3Chars (
 | 
					Dump3Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -148,8 +148,8 @@ Dump3Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump4Chars (
 | 
					Dump4Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -164,8 +164,8 @@ Dump4Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump6Chars (
 | 
					Dump6Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -180,8 +180,8 @@ Dump6Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump8Chars (
 | 
					Dump8Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -196,8 +196,8 @@ Dump8Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
Dump12Chars (
 | 
					Dump12Chars (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN       UINT8*  Ptr
 | 
					  IN       UINT8   *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -215,8 +215,8 @@ Dump12Chars (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PrintFieldName (
 | 
					PrintFieldName (
 | 
				
			||||||
  IN UINT32         Indent,
 | 
					  IN UINT32        Indent,
 | 
				
			||||||
  IN CONST CHAR16*  FieldName
 | 
					  IN CONST CHAR16  *FieldName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -226,7 +226,7 @@ PrintFieldName (
 | 
				
			|||||||
                      the 'Format' member of ACPI_PARSER.
 | 
					                      the 'Format' member of ACPI_PARSER.
 | 
				
			||||||
  @param [in] Ptr     Pointer to the start of the buffer.
 | 
					  @param [in] Ptr     Pointer to the start of the buffer.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef VOID (EFIAPI *FNPTR_PRINT_FORMATTER)(CONST CHAR16* Format, UINT8* Ptr);
 | 
					typedef VOID (EFIAPI *FNPTR_PRINT_FORMATTER)(CONST CHAR16 *Format, UINT8 *Ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function pointer is the template for validating an ACPI table field.
 | 
					  This function pointer is the template for validating an ACPI table field.
 | 
				
			||||||
@@ -236,7 +236,7 @@ typedef VOID (EFIAPI *FNPTR_PRINT_FORMATTER)(CONST CHAR16* Format, UINT8* Ptr);
 | 
				
			|||||||
                      the 'Context' member of the ACPI_PARSER.
 | 
					                      the 'Context' member of the ACPI_PARSER.
 | 
				
			||||||
                      e.g. this could be a pointer to the ACPI table header.
 | 
					                      e.g. this could be a pointer to the ACPI table header.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)(UINT8* Ptr, VOID* Context);
 | 
					typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)(UINT8 *Ptr, VOID *Context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  The ACPI_PARSER structure describes the fields of an ACPI table and
 | 
					  The ACPI_PARSER structure describes the fields of an ACPI table and
 | 
				
			||||||
@@ -258,48 +258,47 @@ typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)(UINT8* Ptr, VOID* Context);
 | 
				
			|||||||
  representing the field data.
 | 
					  representing the field data.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct AcpiParser {
 | 
					typedef struct AcpiParser {
 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// String describing the ACPI table field
 | 
					  /// String describing the ACPI table field
 | 
				
			||||||
  /// (Field column from ACPI table spec)
 | 
					  /// (Field column from ACPI table spec)
 | 
				
			||||||
  CONST CHAR16*         NameStr;
 | 
					  CONST CHAR16             *NameStr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// The length of the field.
 | 
					  /// The length of the field.
 | 
				
			||||||
  /// (Byte Length column from ACPI table spec)
 | 
					  /// (Byte Length column from ACPI table spec)
 | 
				
			||||||
  UINT32                Length;
 | 
					  UINT32                   Length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// The offset of the field from the start of the table.
 | 
					  /// The offset of the field from the start of the table.
 | 
				
			||||||
  /// (Byte Offset column from ACPI table spec)
 | 
					  /// (Byte Offset column from ACPI table spec)
 | 
				
			||||||
  UINT32                Offset;
 | 
					  UINT32                   Offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Optional Print() style format string for tracing the data. If not
 | 
					  /// Optional Print() style format string for tracing the data. If not
 | 
				
			||||||
  /// used this must be set to NULL.
 | 
					  /// used this must be set to NULL.
 | 
				
			||||||
  CONST CHAR16*         Format;
 | 
					  CONST CHAR16             *Format;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Optional pointer to a print formatter function which
 | 
					  /// Optional pointer to a print formatter function which
 | 
				
			||||||
  /// is typically used to trace complex field information.
 | 
					  /// is typically used to trace complex field information.
 | 
				
			||||||
  /// If not used this must be set to NULL.
 | 
					  /// If not used this must be set to NULL.
 | 
				
			||||||
  /// The Format string is passed to the PrintFormatter function
 | 
					  /// The Format string is passed to the PrintFormatter function
 | 
				
			||||||
  /// but may be ignored by the implementation code.
 | 
					  /// but may be ignored by the implementation code.
 | 
				
			||||||
  FNPTR_PRINT_FORMATTER PrintFormatter;
 | 
					  FNPTR_PRINT_FORMATTER    PrintFormatter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Optional pointer which may be set to request the parser to update
 | 
					  /// Optional pointer which may be set to request the parser to update
 | 
				
			||||||
  /// a pointer to the field data. This value is set after the FieldValidator
 | 
					  /// a pointer to the field data. This value is set after the FieldValidator
 | 
				
			||||||
  /// has been called and therefore should not be used by the FieldValidator.
 | 
					  /// has been called and therefore should not be used by the FieldValidator.
 | 
				
			||||||
  /// If unused this must be set to NULL.
 | 
					  /// If unused this must be set to NULL.
 | 
				
			||||||
  VOID**                ItemPtr;
 | 
					  VOID                     **ItemPtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Optional pointer to a field validator function.
 | 
					  /// Optional pointer to a field validator function.
 | 
				
			||||||
  /// The function should directly report any appropriate error or warning
 | 
					  /// The function should directly report any appropriate error or warning
 | 
				
			||||||
  /// and invoke the appropriate counter update function.
 | 
					  /// and invoke the appropriate counter update function.
 | 
				
			||||||
  /// If not used this parameter must be set to NULL.
 | 
					  /// If not used this parameter must be set to NULL.
 | 
				
			||||||
  FNPTR_FIELD_VALIDATOR FieldValidator;
 | 
					  FNPTR_FIELD_VALIDATOR    FieldValidator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Optional pointer to context specific information,
 | 
					  /// Optional pointer to context specific information,
 | 
				
			||||||
  /// which the Field Validator function can use to determine
 | 
					  /// which the Field Validator function can use to determine
 | 
				
			||||||
  /// additional information about the ACPI table and make
 | 
					  /// additional information about the ACPI table and make
 | 
				
			||||||
  /// decisions about the field being validated.
 | 
					  /// decisions about the field being validated.
 | 
				
			||||||
  /// e.g. this could be a pointer to the ACPI table header
 | 
					  /// e.g. this could be a pointer to the ACPI table header
 | 
				
			||||||
  VOID*                 Context;
 | 
					  VOID                     *Context;
 | 
				
			||||||
} ACPI_PARSER;
 | 
					} ACPI_PARSER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -308,23 +307,23 @@ typedef struct AcpiParser {
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct AcpiDescriptionHeaderInfo {
 | 
					typedef struct AcpiDescriptionHeaderInfo {
 | 
				
			||||||
  /// ACPI table signature
 | 
					  /// ACPI table signature
 | 
				
			||||||
  UINT32* Signature;
 | 
					  UINT32    *Signature;
 | 
				
			||||||
  /// Length of the ACPI table
 | 
					  /// Length of the ACPI table
 | 
				
			||||||
  UINT32* Length;
 | 
					  UINT32    *Length;
 | 
				
			||||||
  /// Revision
 | 
					  /// Revision
 | 
				
			||||||
  UINT8*  Revision;
 | 
					  UINT8     *Revision;
 | 
				
			||||||
  /// Checksum
 | 
					  /// Checksum
 | 
				
			||||||
  UINT8*  Checksum;
 | 
					  UINT8     *Checksum;
 | 
				
			||||||
  /// OEM Id - length is 6 bytes
 | 
					  /// OEM Id - length is 6 bytes
 | 
				
			||||||
  UINT8*  OemId;
 | 
					  UINT8     *OemId;
 | 
				
			||||||
  /// OEM table Id
 | 
					  /// OEM table Id
 | 
				
			||||||
  UINT64* OemTableId;
 | 
					  UINT64    *OemTableId;
 | 
				
			||||||
  /// OEM revision Id
 | 
					  /// OEM revision Id
 | 
				
			||||||
  UINT32* OemRevision;
 | 
					  UINT32    *OemRevision;
 | 
				
			||||||
  /// Creator Id
 | 
					  /// Creator Id
 | 
				
			||||||
  UINT32* CreatorId;
 | 
					  UINT32    *CreatorId;
 | 
				
			||||||
  /// Creator revision
 | 
					  /// Creator revision
 | 
				
			||||||
  UINT32* CreatorRevision;
 | 
					  UINT32    *CreatorRevision;
 | 
				
			||||||
} ACPI_DESCRIPTION_HEADER_INFO;
 | 
					} ACPI_DESCRIPTION_HEADER_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -358,10 +357,10 @@ EFIAPI
 | 
				
			|||||||
ParseAcpi (
 | 
					ParseAcpi (
 | 
				
			||||||
  IN BOOLEAN            Trace,
 | 
					  IN BOOLEAN            Trace,
 | 
				
			||||||
  IN UINT32             Indent,
 | 
					  IN UINT32             Indent,
 | 
				
			||||||
  IN CONST CHAR8*       AsciiName OPTIONAL,
 | 
					  IN CONST CHAR8        *AsciiName OPTIONAL,
 | 
				
			||||||
  IN UINT8*             Ptr,
 | 
					  IN UINT8              *Ptr,
 | 
				
			||||||
  IN UINT32             Length,
 | 
					  IN UINT32             Length,
 | 
				
			||||||
  IN CONST ACPI_PARSER* Parser,
 | 
					  IN CONST ACPI_PARSER  *Parser,
 | 
				
			||||||
  IN UINT32             ParserItems
 | 
					  IN UINT32             ParserItems
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -371,7 +370,7 @@ ParseAcpi (
 | 
				
			|||||||
  @param [in] Parser The name of the ACPI_PARSER array describing the
 | 
					  @param [in] Parser The name of the ACPI_PARSER array describing the
 | 
				
			||||||
              ACPI table fields.
 | 
					              ACPI table fields.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define PARSER_PARAMS(Parser) Parser, sizeof (Parser) / sizeof (Parser[0])
 | 
					#define PARSER_PARAMS(Parser)  Parser, sizeof (Parser) / sizeof (Parser[0])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This is a helper macro for describing the ACPI header fields.
 | 
					  This is a helper macro for describing the ACPI header fields.
 | 
				
			||||||
@@ -410,9 +409,9 @@ ParseAcpi (
 | 
				
			|||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpGasStruct (
 | 
					DumpGasStruct (
 | 
				
			||||||
  IN UINT8*        Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32        Indent,
 | 
					  IN UINT32  Indent,
 | 
				
			||||||
  IN UINT32        Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -424,8 +423,8 @@ DumpGasStruct (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpGas (
 | 
					DumpGas (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -438,7 +437,7 @@ DumpGas (
 | 
				
			|||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpAcpiHeader (
 | 
					DumpAcpiHeader (
 | 
				
			||||||
  IN UINT8* Ptr
 | 
					  IN UINT8  *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -457,10 +456,10 @@ DumpAcpiHeader (
 | 
				
			|||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiHeader (
 | 
					ParseAcpiHeader (
 | 
				
			||||||
  IN  UINT8*         Ptr,
 | 
					  IN  UINT8         *Ptr,
 | 
				
			||||||
  OUT CONST UINT32** Signature,
 | 
					  OUT CONST UINT32  **Signature,
 | 
				
			||||||
  OUT CONST UINT32** Length,
 | 
					  OUT CONST UINT32  **Length,
 | 
				
			||||||
  OUT CONST UINT8**  Revision
 | 
					  OUT CONST UINT8   **Revision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -478,10 +477,10 @@ ParseAcpiHeader (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiAest (
 | 
					ParseAcpiAest (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -499,10 +498,10 @@ ParseAcpiAest (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiBgrt (
 | 
					ParseAcpiBgrt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -520,10 +519,10 @@ ParseAcpiBgrt (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiDbg2 (
 | 
					ParseAcpiDbg2 (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -541,10 +540,10 @@ ParseAcpiDbg2 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiDsdt (
 | 
					ParseAcpiDsdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -562,10 +561,10 @@ ParseAcpiDsdt (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiFacs (
 | 
					ParseAcpiFacs (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -583,10 +582,10 @@ ParseAcpiFacs (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiFadt (
 | 
					ParseAcpiFadt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -608,10 +607,10 @@ ParseAcpiFadt (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiGtdt (
 | 
					ParseAcpiGtdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -634,10 +633,10 @@ ParseAcpiGtdt (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiHmat (
 | 
					ParseAcpiHmat (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -663,10 +662,10 @@ ParseAcpiHmat (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiIort (
 | 
					ParseAcpiIort (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -692,10 +691,10 @@ ParseAcpiIort (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiMadt (
 | 
					ParseAcpiMadt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -713,10 +712,10 @@ ParseAcpiMadt (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiMcfg (
 | 
					ParseAcpiMcfg (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -735,10 +734,10 @@ ParseAcpiMcfg (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiPcct (
 | 
					ParseAcpiPcct (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -756,10 +755,10 @@ ParseAcpiPcct (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiPptt (
 | 
					ParseAcpiPptt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -779,10 +778,10 @@ ParseAcpiPptt (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiRsdp (
 | 
					ParseAcpiRsdp (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -803,10 +802,10 @@ ParseAcpiRsdp (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSlit (
 | 
					ParseAcpiSlit (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -824,10 +823,10 @@ ParseAcpiSlit (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSpcr (
 | 
					ParseAcpiSpcr (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -851,10 +850,10 @@ ParseAcpiSpcr (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSrat (
 | 
					ParseAcpiSrat (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -872,10 +871,10 @@ ParseAcpiSrat (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSsdt (
 | 
					ParseAcpiSsdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -892,10 +891,10 @@ ParseAcpiSsdt (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiXsdt (
 | 
					ParseAcpiXsdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // ACPIPARSER_H_
 | 
					#endif // ACPIPARSER_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,14 +19,14 @@
 | 
				
			|||||||
#include "AcpiView.h"
 | 
					#include "AcpiView.h"
 | 
				
			||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
#include "Arm/SbbrValidator.h"
 | 
					  #include "Arm/SbbrValidator.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  A list of registered ACPI table parsers.
 | 
					  A list of registered ACPI table parsers.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC ACPI_TABLE_PARSER mTableParserList[MAX_ACPI_TABLE_PARSERS];
 | 
					STATIC ACPI_TABLE_PARSER  mTableParserList[MAX_ACPI_TABLE_PARSERS];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Register the ACPI table Parser
 | 
					  Register the ACPI table Parser
 | 
				
			||||||
@@ -46,11 +46,11 @@ STATIC ACPI_TABLE_PARSER mTableParserList[MAX_ACPI_TABLE_PARSERS];
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
RegisterParser (
 | 
					RegisterParser (
 | 
				
			||||||
  IN  UINT32                  Signature,
 | 
					  IN  UINT32                 Signature,
 | 
				
			||||||
  IN  PARSE_ACPI_TABLE_PROC   ParserProc
 | 
					  IN  PARSE_ACPI_TABLE_PROC  ParserProc
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
 | 
					  if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
 | 
				
			||||||
    return EFI_INVALID_PARAMETER;
 | 
					    return EFI_INVALID_PARAMETER;
 | 
				
			||||||
@@ -70,12 +70,12 @@ RegisterParser (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Find the first free slot and register the parser
 | 
					  // Find the first free slot and register the parser
 | 
				
			||||||
  for (Index = 0;
 | 
					  for (Index = 0;
 | 
				
			||||||
      Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
 | 
					       Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
 | 
				
			||||||
      Index++)
 | 
					       Index++)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    if (mTableParserList[Index].Signature == ACPI_PARSER_SIGNATURE_NULL) {
 | 
					    if (mTableParserList[Index].Signature == ACPI_PARSER_SIGNATURE_NULL) {
 | 
				
			||||||
      mTableParserList[Index].Signature = Signature;
 | 
					      mTableParserList[Index].Signature = Signature;
 | 
				
			||||||
      mTableParserList[Index].Parser = ParserProc;
 | 
					      mTableParserList[Index].Parser    = ParserProc;
 | 
				
			||||||
      return EFI_SUCCESS;
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -98,10 +98,10 @@ RegisterParser (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DeregisterParser (
 | 
					DeregisterParser (
 | 
				
			||||||
  IN  UINT32                  Signature
 | 
					  IN  UINT32  Signature
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Signature == ACPI_PARSER_SIGNATURE_NULL) {
 | 
					  if (Signature == ACPI_PARSER_SIGNATURE_NULL) {
 | 
				
			||||||
    return EFI_INVALID_PARAMETER;
 | 
					    return EFI_INVALID_PARAMETER;
 | 
				
			||||||
@@ -113,7 +113,7 @@ DeregisterParser (
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    if (Signature == mTableParserList[Index].Signature) {
 | 
					    if (Signature == mTableParserList[Index].Signature) {
 | 
				
			||||||
      mTableParserList[Index].Signature = ACPI_PARSER_SIGNATURE_NULL;
 | 
					      mTableParserList[Index].Signature = ACPI_PARSER_SIGNATURE_NULL;
 | 
				
			||||||
      mTableParserList[Index].Parser = NULL;
 | 
					      mTableParserList[Index].Parser    = NULL;
 | 
				
			||||||
      return EFI_SUCCESS;
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -138,11 +138,11 @@ DeregisterParser (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetParser (
 | 
					GetParser (
 | 
				
			||||||
  IN  UINT32                   Signature,
 | 
					  IN  UINT32                 Signature,
 | 
				
			||||||
  OUT PARSE_ACPI_TABLE_PROC *  ParserProc
 | 
					  OUT PARSE_ACPI_TABLE_PROC  *ParserProc
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
 | 
					  if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
 | 
				
			||||||
    return EFI_INVALID_PARAMETER;
 | 
					    return EFI_INVALID_PARAMETER;
 | 
				
			||||||
@@ -179,16 +179,16 @@ GetParser (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ProcessAcpiTable (
 | 
					ProcessAcpiTable (
 | 
				
			||||||
  IN UINT8* Ptr
 | 
					  IN UINT8  *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS    Status;
 | 
					  EFI_STATUS             Status;
 | 
				
			||||||
  BOOLEAN       Trace;
 | 
					  BOOLEAN                Trace;
 | 
				
			||||||
  CONST UINT32* AcpiTableSignature;
 | 
					  CONST UINT32           *AcpiTableSignature;
 | 
				
			||||||
  CONST UINT32* AcpiTableLength;
 | 
					  CONST UINT32           *AcpiTableLength;
 | 
				
			||||||
  CONST UINT8*  AcpiTableRevision;
 | 
					  CONST UINT8            *AcpiTableRevision;
 | 
				
			||||||
  CONST UINT8*  SignaturePtr;
 | 
					  CONST UINT8            *SignaturePtr;
 | 
				
			||||||
  PARSE_ACPI_TABLE_PROC ParserProc;
 | 
					  PARSE_ACPI_TABLE_PROC  ParserProc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ParseAcpiHeader (
 | 
					  ParseAcpiHeader (
 | 
				
			||||||
    Ptr,
 | 
					    Ptr,
 | 
				
			||||||
@@ -209,7 +209,7 @@ ProcessAcpiTable (
 | 
				
			|||||||
    // Do not process the ACPI table any further if the table length read
 | 
					    // Do not process the ACPI table any further if the table length read
 | 
				
			||||||
    // is invalid. The ACPI table should at least contain the table header.
 | 
					    // is invalid. The ACPI table should at least contain the table header.
 | 
				
			||||||
    if (*AcpiTableLength < sizeof (EFI_ACPI_DESCRIPTION_HEADER)) {
 | 
					    if (*AcpiTableLength < sizeof (EFI_ACPI_DESCRIPTION_HEADER)) {
 | 
				
			||||||
      SignaturePtr = (CONST UINT8*)AcpiTableSignature;
 | 
					      SignaturePtr = (CONST UINT8 *)AcpiTableSignature;
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid %c%c%c%c table length. Length = %d\n",
 | 
					        L"ERROR: Invalid %c%c%c%c table length. Length = %d\n",
 | 
				
			||||||
@@ -227,11 +227,12 @@ ProcessAcpiTable (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  if (GetMandatoryTableValidate ()) {
 | 
					  if (GetMandatoryTableValidate ()) {
 | 
				
			||||||
    ArmSbbrIncrementTableCount (*AcpiTableSignature);
 | 
					    ArmSbbrIncrementTableCount (*AcpiTableSignature);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = GetParser (*AcpiTableSignature, &ParserProc);
 | 
					  Status = GetParser (*AcpiTableSignature, &ParserProc);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
@@ -239,6 +240,7 @@ ProcessAcpiTable (
 | 
				
			|||||||
    if (Trace) {
 | 
					    if (Trace) {
 | 
				
			||||||
      DumpAcpiHeader (Ptr);
 | 
					      DumpAcpiHeader (Ptr);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,11 +11,11 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  The maximum number of ACPI table parsers.
 | 
					  The maximum number of ACPI table parsers.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define MAX_ACPI_TABLE_PARSERS          32
 | 
					#define MAX_ACPI_TABLE_PARSERS  32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** An invalid/NULL signature value.
 | 
					/** An invalid/NULL signature value.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define ACPI_PARSER_SIGNATURE_NULL      0
 | 
					#define ACPI_PARSER_SIGNATURE_NULL  0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  A function that parses the ACPI table.
 | 
					  A function that parses the ACPI table.
 | 
				
			||||||
@@ -27,9 +27,9 @@
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef
 | 
					typedef
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
(EFIAPI * PARSE_ACPI_TABLE_PROC) (
 | 
					(EFIAPI *PARSE_ACPI_TABLE_PROC)(
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8 *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32  AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8   AcpiTableRevision
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -39,10 +39,10 @@ VOID
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct AcpiTableParser {
 | 
					typedef struct AcpiTableParser {
 | 
				
			||||||
  /// ACPI table signature
 | 
					  /// ACPI table signature
 | 
				
			||||||
  UINT32                  Signature;
 | 
					  UINT32                   Signature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// The ACPI table parser function.
 | 
					  /// The ACPI table parser function.
 | 
				
			||||||
  PARSE_ACPI_TABLE_PROC   Parser;
 | 
					  PARSE_ACPI_TABLE_PROC    Parser;
 | 
				
			||||||
} ACPI_TABLE_PARSER;
 | 
					} ACPI_TABLE_PARSER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -63,8 +63,8 @@ typedef struct AcpiTableParser {
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
RegisterParser (
 | 
					RegisterParser (
 | 
				
			||||||
  IN  UINT32                  Signature,
 | 
					  IN  UINT32                 Signature,
 | 
				
			||||||
  IN  PARSE_ACPI_TABLE_PROC   ParserProc
 | 
					  IN  PARSE_ACPI_TABLE_PROC  ParserProc
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -81,7 +81,7 @@ RegisterParser (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DeregisterParser (
 | 
					DeregisterParser (
 | 
				
			||||||
  IN  UINT32                  Signature
 | 
					  IN  UINT32  Signature
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -101,7 +101,7 @@ DeregisterParser (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ProcessAcpiTable (
 | 
					ProcessAcpiTable (
 | 
				
			||||||
  IN UINT8* Ptr
 | 
					  IN UINT8  *Ptr
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -120,8 +120,8 @@ ProcessAcpiTable (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetParser (
 | 
					GetParser (
 | 
				
			||||||
  IN  UINT32                   Signature,
 | 
					  IN  UINT32                 Signature,
 | 
				
			||||||
  OUT PARSE_ACPI_TABLE_PROC *  ParserProc
 | 
					  OUT PARSE_ACPI_TABLE_PROC  *ParserProc
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // ACPITABLEPARSER_H_
 | 
					#endif // ACPITABLEPARSER_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,12 +23,12 @@
 | 
				
			|||||||
#include "AcpiView.h"
 | 
					#include "AcpiView.h"
 | 
				
			||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
#include "Arm/SbbrValidator.h"
 | 
					  #include "Arm/SbbrValidator.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC UINT32             mTableCount;
 | 
					STATIC UINT32  mTableCount;
 | 
				
			||||||
STATIC UINT32             mBinTableCount;
 | 
					STATIC UINT32  mBinTableCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function dumps the ACPI table to a file.
 | 
					  This function dumps the ACPI table to a file.
 | 
				
			||||||
@@ -42,13 +42,13 @@ STATIC UINT32             mBinTableCount;
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
DumpAcpiTableToFile (
 | 
					DumpAcpiTableToFile (
 | 
				
			||||||
  IN CONST UINT8*  Ptr,
 | 
					  IN CONST UINT8  *Ptr,
 | 
				
			||||||
  IN CONST UINTN   Length
 | 
					  IN CONST UINTN  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16              FileNameBuffer[MAX_FILE_NAME_LEN];
 | 
					  CHAR16               FileNameBuffer[MAX_FILE_NAME_LEN];
 | 
				
			||||||
  UINTN               TransferBytes;
 | 
					  UINTN                TransferBytes;
 | 
				
			||||||
  SELECTED_ACPI_TABLE *SelectedTable;
 | 
					  SELECTED_ACPI_TABLE  *SelectedTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GetSelectedAcpiTable (&SelectedTable);
 | 
					  GetSelectedAcpiTable (&SelectedTable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -78,7 +78,7 @@ DumpAcpiTableToFile (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
ProcessTableReportOptions (
 | 
					ProcessTableReportOptions (
 | 
				
			||||||
  IN CONST UINT32  Signature,
 | 
					  IN CONST UINT32  Signature,
 | 
				
			||||||
  IN CONST UINT8*  TablePtr,
 | 
					  IN CONST UINT8   *TablePtr,
 | 
				
			||||||
  IN CONST UINT32  Length
 | 
					  IN CONST UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -92,9 +92,9 @@ ProcessTableReportOptions (
 | 
				
			|||||||
  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
					  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  OriginalAttribute = 0;
 | 
					  OriginalAttribute = 0;
 | 
				
			||||||
  SignaturePtr = (UINT8*)(UINTN)&Signature;
 | 
					  SignaturePtr      = (UINT8 *)(UINTN)&Signature;
 | 
				
			||||||
  Log = FALSE;
 | 
					  Log               = FALSE;
 | 
				
			||||||
  HighLight = GetColourHighlighting ();
 | 
					  HighLight         = GetColourHighlighting ();
 | 
				
			||||||
  GetSelectedAcpiTable (&SelectedTable);
 | 
					  GetSelectedAcpiTable (&SelectedTable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  switch (GetReportOption ()) {
 | 
					  switch (GetReportOption ()) {
 | 
				
			||||||
@@ -103,9 +103,10 @@ ProcessTableReportOptions (
 | 
				
			|||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case ReportSelected:
 | 
					    case ReportSelected:
 | 
				
			||||||
      if (Signature == SelectedTable->Type) {
 | 
					      if (Signature == SelectedTable->Type) {
 | 
				
			||||||
        Log = TRUE;
 | 
					        Log                  = TRUE;
 | 
				
			||||||
        SelectedTable->Found = TRUE;
 | 
					        SelectedTable->Found = TRUE;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case ReportTableList:
 | 
					    case ReportTableList:
 | 
				
			||||||
      if (mTableCount == 0) {
 | 
					      if (mTableCount == 0) {
 | 
				
			||||||
@@ -113,15 +114,19 @@ ProcessTableReportOptions (
 | 
				
			|||||||
          OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
					          OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
				
			||||||
          gST->ConOut->SetAttribute (
 | 
					          gST->ConOut->SetAttribute (
 | 
				
			||||||
                         gST->ConOut,
 | 
					                         gST->ConOut,
 | 
				
			||||||
                         EFI_TEXT_ATTR(EFI_CYAN,
 | 
					                         EFI_TEXT_ATTR (
 | 
				
			||||||
                           ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4))
 | 
					                           EFI_CYAN,
 | 
				
			||||||
 | 
					                           ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
				
			||||||
 | 
					                           )
 | 
				
			||||||
                         );
 | 
					                         );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Print (L"\nInstalled Table(s):\n");
 | 
					        Print (L"\nInstalled Table(s):\n");
 | 
				
			||||||
        if (HighLight) {
 | 
					        if (HighLight) {
 | 
				
			||||||
          gST->ConOut->SetAttribute (gST->ConOut, OriginalAttribute);
 | 
					          gST->ConOut->SetAttribute (gST->ConOut, OriginalAttribute);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"\t%4d. %c%c%c%c\n",
 | 
					        L"\t%4d. %c%c%c%c\n",
 | 
				
			||||||
        ++mTableCount,
 | 
					        ++mTableCount,
 | 
				
			||||||
@@ -136,6 +141,7 @@ ProcessTableReportOptions (
 | 
				
			|||||||
        SelectedTable->Found = TRUE;
 | 
					        SelectedTable->Found = TRUE;
 | 
				
			||||||
        DumpAcpiTableToFile (TablePtr, Length);
 | 
					        DumpAcpiTableToFile (TablePtr, Length);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case ReportMax:
 | 
					    case ReportMax:
 | 
				
			||||||
      // We should never be here.
 | 
					      // We should never be here.
 | 
				
			||||||
@@ -148,10 +154,13 @@ ProcessTableReportOptions (
 | 
				
			|||||||
      OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
					      OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
				
			||||||
      gST->ConOut->SetAttribute (
 | 
					      gST->ConOut->SetAttribute (
 | 
				
			||||||
                     gST->ConOut,
 | 
					                     gST->ConOut,
 | 
				
			||||||
                     EFI_TEXT_ATTR(EFI_LIGHTBLUE,
 | 
					                     EFI_TEXT_ATTR (
 | 
				
			||||||
                       ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4))
 | 
					                       EFI_LIGHTBLUE,
 | 
				
			||||||
 | 
					                       ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
				
			||||||
 | 
					                       )
 | 
				
			||||||
                     );
 | 
					                     );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\n\n --------------- %c%c%c%c Table --------------- \n\n",
 | 
					      L"\n\n --------------- %c%c%c%c Table --------------- \n\n",
 | 
				
			||||||
      SignaturePtr[0],
 | 
					      SignaturePtr[0],
 | 
				
			||||||
@@ -167,8 +176,6 @@ ProcessTableReportOptions (
 | 
				
			|||||||
  return Log;
 | 
					  return Log;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function iterates the configuration table entries in the
 | 
					  This function iterates the configuration table entries in the
 | 
				
			||||||
  system table, retrieves the RSDP pointer and starts parsing the ACPI tables.
 | 
					  system table, retrieves the RSDP pointer and starts parsing the ACPI tables.
 | 
				
			||||||
@@ -182,17 +189,17 @@ ProcessTableReportOptions (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
AcpiView (
 | 
					AcpiView (
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE* SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS               Status;
 | 
					  EFI_STATUS               Status;
 | 
				
			||||||
  UINTN                    Index;
 | 
					  UINTN                    Index;
 | 
				
			||||||
  EFI_CONFIGURATION_TABLE* EfiConfigurationTable;
 | 
					  EFI_CONFIGURATION_TABLE  *EfiConfigurationTable;
 | 
				
			||||||
  BOOLEAN                  FoundAcpiTable;
 | 
					  BOOLEAN                  FoundAcpiTable;
 | 
				
			||||||
  UINTN                    OriginalAttribute;
 | 
					  UINTN                    OriginalAttribute;
 | 
				
			||||||
  UINTN                    PrintAttribute;
 | 
					  UINTN                    PrintAttribute;
 | 
				
			||||||
  EREPORT_OPTION           ReportOption;
 | 
					  EREPORT_OPTION           ReportOption;
 | 
				
			||||||
  UINT8*                   RsdpPtr;
 | 
					  UINT8                    *RsdpPtr;
 | 
				
			||||||
  UINT32                   RsdpLength;
 | 
					  UINT32                   RsdpLength;
 | 
				
			||||||
  UINT8                    RsdpRevision;
 | 
					  UINT8                    RsdpRevision;
 | 
				
			||||||
  PARSE_ACPI_TABLE_PROC    RsdpParserProc;
 | 
					  PARSE_ACPI_TABLE_PROC    RsdpParserProc;
 | 
				
			||||||
@@ -203,10 +210,10 @@ AcpiView (
 | 
				
			|||||||
  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
					  // set local variables to suppress incorrect compiler/analyzer warnings
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  EfiConfigurationTable = NULL;
 | 
					  EfiConfigurationTable = NULL;
 | 
				
			||||||
  OriginalAttribute = 0;
 | 
					  OriginalAttribute     = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Reset Table counts
 | 
					  // Reset Table counts
 | 
				
			||||||
  mTableCount = 0;
 | 
					  mTableCount    = 0;
 | 
				
			||||||
  mBinTableCount = 0;
 | 
					  mBinTableCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Reset The error/warning counters
 | 
					  // Reset The error/warning counters
 | 
				
			||||||
@@ -219,16 +226,19 @@ AcpiView (
 | 
				
			|||||||
  // Search the table for an entry that matches the ACPI Table Guid
 | 
					  // Search the table for an entry that matches the ACPI Table Guid
 | 
				
			||||||
  FoundAcpiTable = FALSE;
 | 
					  FoundAcpiTable = FALSE;
 | 
				
			||||||
  for (Index = 0; Index < SystemTable->NumberOfTableEntries; Index++) {
 | 
					  for (Index = 0; Index < SystemTable->NumberOfTableEntries; Index++) {
 | 
				
			||||||
    if (CompareGuid (&gEfiAcpiTableGuid,
 | 
					    if (CompareGuid (
 | 
				
			||||||
          &(SystemTable->ConfigurationTable[Index].VendorGuid))) {
 | 
					          &gEfiAcpiTableGuid,
 | 
				
			||||||
 | 
					          &(SystemTable->ConfigurationTable[Index].VendorGuid)
 | 
				
			||||||
 | 
					          ))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      EfiConfigurationTable = &SystemTable->ConfigurationTable[Index];
 | 
					      EfiConfigurationTable = &SystemTable->ConfigurationTable[Index];
 | 
				
			||||||
      FoundAcpiTable = TRUE;
 | 
					      FoundAcpiTable        = TRUE;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (FoundAcpiTable) {
 | 
					  if (FoundAcpiTable) {
 | 
				
			||||||
    RsdpPtr = (UINT8*)EfiConfigurationTable->VendorTable;
 | 
					    RsdpPtr = (UINT8 *)EfiConfigurationTable->VendorTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // The RSDP revision is 1 byte starting at offset 15
 | 
					    // The RSDP revision is 1 byte starting at offset 15
 | 
				
			||||||
    RsdpRevision = *(RsdpPtr + RSDP_REVISION_OFFSET);
 | 
					    RsdpRevision = *(RsdpPtr + RSDP_REVISION_OFFSET);
 | 
				
			||||||
@@ -240,14 +250,15 @@ AcpiView (
 | 
				
			|||||||
      return EFI_UNSUPPORTED;
 | 
					      return EFI_UNSUPPORTED;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
    if (GetMandatoryTableValidate ()) {
 | 
					    if (GetMandatoryTableValidate ()) {
 | 
				
			||||||
      ArmSbbrResetTableCounts ();
 | 
					      ArmSbbrResetTableCounts ();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // The RSDP length is 4 bytes starting at offset 20
 | 
					    // The RSDP length is 4 bytes starting at offset 20
 | 
				
			||||||
    RsdpLength = *(UINT32*)(RsdpPtr + RSDP_LENGTH_OFFSET);
 | 
					    RsdpLength = *(UINT32 *)(RsdpPtr + RSDP_LENGTH_OFFSET);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Trace = ProcessTableReportOptions (RSDP_TABLE_INFO, RsdpPtr, RsdpLength);
 | 
					    Trace = ProcessTableReportOptions (RSDP_TABLE_INFO, RsdpPtr, RsdpLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -265,7 +276,6 @@ AcpiView (
 | 
				
			|||||||
      RsdpLength,
 | 
					      RsdpLength,
 | 
				
			||||||
      RsdpRevision
 | 
					      RsdpRevision
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
@@ -274,45 +284,50 @@ AcpiView (
 | 
				
			|||||||
    return EFI_NOT_FOUND;
 | 
					    return EFI_NOT_FOUND;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  if (GetMandatoryTableValidate ()) {
 | 
					  if (GetMandatoryTableValidate ()) {
 | 
				
			||||||
    ArmSbbrReqsValidate ((ARM_SBBR_VERSION)GetMandatoryTableSpec ());
 | 
					    ArmSbbrReqsValidate ((ARM_SBBR_VERSION)GetMandatoryTableSpec ());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReportOption = GetReportOption ();
 | 
					  ReportOption = GetReportOption ();
 | 
				
			||||||
  if (ReportTableList != ReportOption) {
 | 
					  if (ReportTableList != ReportOption) {
 | 
				
			||||||
    if (((ReportSelected == ReportOption)  ||
 | 
					    if (((ReportSelected == ReportOption)  ||
 | 
				
			||||||
         (ReportDumpBinFile == ReportOption)) &&
 | 
					         (ReportDumpBinFile == ReportOption)) &&
 | 
				
			||||||
        (!SelectedTable->Found)) {
 | 
					        (!SelectedTable->Found))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      Print (L"\nRequested ACPI Table not found.\n");
 | 
					      Print (L"\nRequested ACPI Table not found.\n");
 | 
				
			||||||
    } else if (GetConsistencyChecking () &&
 | 
					    } else if (GetConsistencyChecking () &&
 | 
				
			||||||
               (ReportDumpBinFile != ReportOption)) {
 | 
					               (ReportDumpBinFile != ReportOption))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
					      OriginalAttribute = gST->ConOut->Mode->Attribute;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"\nTable Statistics:\n");
 | 
					      Print (L"\nTable Statistics:\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (GetColourHighlighting ()) {
 | 
					      if (GetColourHighlighting ()) {
 | 
				
			||||||
        PrintAttribute = (GetErrorCount () > 0) ?
 | 
					        PrintAttribute = (GetErrorCount () > 0) ?
 | 
				
			||||||
                            EFI_TEXT_ATTR (
 | 
					                         EFI_TEXT_ATTR (
 | 
				
			||||||
                              EFI_RED,
 | 
					                           EFI_RED,
 | 
				
			||||||
                              ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
					                           ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
				
			||||||
                              ) :
 | 
					                           ) :
 | 
				
			||||||
                            OriginalAttribute;
 | 
					                         OriginalAttribute;
 | 
				
			||||||
        gST->ConOut->SetAttribute (gST->ConOut, PrintAttribute);
 | 
					        gST->ConOut->SetAttribute (gST->ConOut, PrintAttribute);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"\t%d Error(s)\n", GetErrorCount ());
 | 
					      Print (L"\t%d Error(s)\n", GetErrorCount ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (GetColourHighlighting ()) {
 | 
					      if (GetColourHighlighting ()) {
 | 
				
			||||||
        PrintAttribute = (GetWarningCount () > 0) ?
 | 
					        PrintAttribute = (GetWarningCount () > 0) ?
 | 
				
			||||||
                            EFI_TEXT_ATTR (
 | 
					                         EFI_TEXT_ATTR (
 | 
				
			||||||
                              EFI_RED,
 | 
					                           EFI_RED,
 | 
				
			||||||
                              ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
					                           ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4)
 | 
				
			||||||
                              ) :
 | 
					                           ) :
 | 
				
			||||||
                            OriginalAttribute;
 | 
					                         OriginalAttribute;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        gST->ConOut->SetAttribute (gST->ConOut, PrintAttribute);
 | 
					        gST->ConOut->SetAttribute (gST->ConOut, PrintAttribute);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"\t%d Warning(s)\n", GetWarningCount ());
 | 
					      Print (L"\t%d Warning(s)\n", GetWarningCount ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (GetColourHighlighting ()) {
 | 
					      if (GetColourHighlighting ()) {
 | 
				
			||||||
@@ -320,5 +335,6 @@ AcpiView (
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,17 +11,17 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  A macro to define the max file name length
 | 
					  A macro to define the max file name length
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define MAX_FILE_NAME_LEN    128
 | 
					#define MAX_FILE_NAME_LEN  128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Offset to the RSDP revision from the start of the RSDP
 | 
					  Offset to the RSDP revision from the start of the RSDP
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define RSDP_REVISION_OFFSET 15
 | 
					#define RSDP_REVISION_OFFSET  15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Offset to the RSDP length from the start of the RSDP
 | 
					  Offset to the RSDP length from the start of the RSDP
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define RSDP_LENGTH_OFFSET   20
 | 
					#define RSDP_LENGTH_OFFSET  20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function resets the ACPI table error counter to Zero.
 | 
					  This function resets the ACPI table error counter to Zero.
 | 
				
			||||||
@@ -71,7 +71,7 @@ GetWarningCount (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
ProcessTableReportOptions (
 | 
					ProcessTableReportOptions (
 | 
				
			||||||
  IN CONST UINT32  Signature,
 | 
					  IN CONST UINT32  Signature,
 | 
				
			||||||
  IN CONST UINT8*  TablePtr,
 | 
					  IN CONST UINT8   *TablePtr,
 | 
				
			||||||
  IN CONST UINT32  Length
 | 
					  IN CONST UINT32  Length
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -88,7 +88,7 @@ ProcessTableReportOptions (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
AcpiView (
 | 
					AcpiView (
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE* SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // ACPIVIEW_H_
 | 
					#endif // ACPIVIEW_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,14 +11,14 @@
 | 
				
			|||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Report variables
 | 
					// Report variables
 | 
				
			||||||
STATIC BOOLEAN        mConsistencyCheck;
 | 
					STATIC BOOLEAN         mConsistencyCheck;
 | 
				
			||||||
STATIC BOOLEAN        mColourHighlighting;
 | 
					STATIC BOOLEAN         mColourHighlighting;
 | 
				
			||||||
STATIC EREPORT_OPTION mReportType;
 | 
					STATIC EREPORT_OPTION  mReportType;
 | 
				
			||||||
STATIC BOOLEAN        mMandatoryTableValidate;
 | 
					STATIC BOOLEAN         mMandatoryTableValidate;
 | 
				
			||||||
STATIC UINTN          mMandatoryTableSpec;
 | 
					STATIC UINTN           mMandatoryTableSpec;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// User selection of which ACPI table should be checked
 | 
					// User selection of which ACPI table should be checked
 | 
				
			||||||
SELECTED_ACPI_TABLE mSelectedAcpiTable;
 | 
					SELECTED_ACPI_TABLE  mSelectedAcpiTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 Reset the AcpiView user configuration to defaults
 | 
					 Reset the AcpiView user configuration to defaults
 | 
				
			||||||
@@ -29,13 +29,13 @@ AcpiConfigSetDefaults (
 | 
				
			|||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  mReportType = ReportAll;
 | 
					  mReportType              = ReportAll;
 | 
				
			||||||
  mSelectedAcpiTable.Type = 0;
 | 
					  mSelectedAcpiTable.Type  = 0;
 | 
				
			||||||
  mSelectedAcpiTable.Name = NULL;
 | 
					  mSelectedAcpiTable.Name  = NULL;
 | 
				
			||||||
  mSelectedAcpiTable.Found = FALSE;
 | 
					  mSelectedAcpiTable.Found = FALSE;
 | 
				
			||||||
  mConsistencyCheck = TRUE;
 | 
					  mConsistencyCheck        = TRUE;
 | 
				
			||||||
  mMandatoryTableValidate = FALSE;
 | 
					  mMandatoryTableValidate  = FALSE;
 | 
				
			||||||
  mMandatoryTableSpec = 0;
 | 
					  mMandatoryTableSpec      = 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -49,25 +49,27 @@ AcpiConfigSetDefaults (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
ConvertStrToAcpiSignature (
 | 
					ConvertStrToAcpiSignature (
 | 
				
			||||||
  IN CONST CHAR16 *Str
 | 
					  IN CONST CHAR16  *Str
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT8 Index;
 | 
					  UINT8  Index;
 | 
				
			||||||
  CHAR8 Ptr[4];
 | 
					  CHAR8  Ptr[4];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ZeroMem (Ptr, sizeof (Ptr));
 | 
					  ZeroMem (Ptr, sizeof (Ptr));
 | 
				
			||||||
  Index = 0;
 | 
					  Index = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Convert to Upper case and convert to ASCII
 | 
					  // Convert to Upper case and convert to ASCII
 | 
				
			||||||
  while ((Index < 4) && (Str[Index] != 0)) {
 | 
					  while ((Index < 4) && (Str[Index] != 0)) {
 | 
				
			||||||
    if (Str[Index] >= L'a' && Str[Index] <= L'z') {
 | 
					    if ((Str[Index] >= L'a') && (Str[Index] <= L'z')) {
 | 
				
			||||||
      Ptr[Index] = (CHAR8)(Str[Index] - (L'a' - L'A'));
 | 
					      Ptr[Index] = (CHAR8)(Str[Index] - (L'a' - L'A'));
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      Ptr[Index] = (CHAR8)Str[Index];
 | 
					      Ptr[Index] = (CHAR8)Str[Index];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Index++;
 | 
					    Index++;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return *(UINT32 *) Ptr;
 | 
					
 | 
				
			||||||
 | 
					  return *(UINT32 *)Ptr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -80,7 +82,7 @@ ConvertStrToAcpiSignature (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SelectAcpiTable (
 | 
					SelectAcpiTable (
 | 
				
			||||||
  IN CONST CHAR16 *TableName
 | 
					  IN CONST CHAR16  *TableName
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ASSERT (TableName != NULL);
 | 
					  ASSERT (TableName != NULL);
 | 
				
			||||||
@@ -97,7 +99,7 @@ SelectAcpiTable (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetSelectedAcpiTable (
 | 
					GetSelectedAcpiTable (
 | 
				
			||||||
  OUT SELECTED_ACPI_TABLE **SelectedAcpiTable
 | 
					  OUT SELECTED_ACPI_TABLE  **SelectedAcpiTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  *SelectedAcpiTable = &mSelectedAcpiTable;
 | 
					  *SelectedAcpiTable = &mSelectedAcpiTable;
 | 
				
			||||||
@@ -125,7 +127,7 @@ GetColourHighlighting (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetColourHighlighting (
 | 
					SetColourHighlighting (
 | 
				
			||||||
  BOOLEAN Highlight
 | 
					  BOOLEAN  Highlight
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  mColourHighlighting = Highlight;
 | 
					  mColourHighlighting = Highlight;
 | 
				
			||||||
@@ -153,7 +155,7 @@ GetConsistencyChecking (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetConsistencyChecking (
 | 
					SetConsistencyChecking (
 | 
				
			||||||
  BOOLEAN ConsistencyChecking
 | 
					  BOOLEAN  ConsistencyChecking
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  mConsistencyCheck = ConsistencyChecking;
 | 
					  mConsistencyCheck = ConsistencyChecking;
 | 
				
			||||||
@@ -181,7 +183,7 @@ GetReportOption (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetReportOption (
 | 
					SetReportOption (
 | 
				
			||||||
  EREPORT_OPTION ReportType
 | 
					  EREPORT_OPTION  ReportType
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  mReportType = ReportType;
 | 
					  mReportType = ReportType;
 | 
				
			||||||
@@ -209,7 +211,7 @@ GetMandatoryTableValidate (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetMandatoryTableValidate (
 | 
					SetMandatoryTableValidate (
 | 
				
			||||||
  BOOLEAN Validate
 | 
					  BOOLEAN  Validate
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  mMandatoryTableValidate = Validate;
 | 
					  mMandatoryTableValidate = Validate;
 | 
				
			||||||
@@ -239,7 +241,7 @@ GetMandatoryTableSpec (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetMandatoryTableSpec (
 | 
					SetMandatoryTableSpec (
 | 
				
			||||||
  UINTN Spec
 | 
					  UINTN  Spec
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  mMandatoryTableSpec = Spec;
 | 
					  mMandatoryTableSpec = Spec;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@ GetColourHighlighting (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetColourHighlighting (
 | 
					SetColourHighlighting (
 | 
				
			||||||
  BOOLEAN Highlight
 | 
					  BOOLEAN  Highlight
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -49,7 +49,7 @@ GetConsistencyChecking (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetConsistencyChecking (
 | 
					SetConsistencyChecking (
 | 
				
			||||||
  BOOLEAN ConsistencyChecking
 | 
					  BOOLEAN  ConsistencyChecking
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -71,7 +71,7 @@ GetMandatoryTableValidate (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetMandatoryTableValidate (
 | 
					SetMandatoryTableValidate (
 | 
				
			||||||
  BOOLEAN Validate
 | 
					  BOOLEAN  Validate
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -95,7 +95,7 @@ GetMandatoryTableSpec (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetMandatoryTableSpec (
 | 
					SetMandatoryTableSpec (
 | 
				
			||||||
  UINTN Spec
 | 
					  UINTN  Spec
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -128,7 +128,7 @@ GetReportOption (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SetReportOption (
 | 
					SetReportOption (
 | 
				
			||||||
  EREPORT_OPTION ReportType
 | 
					  EREPORT_OPTION  ReportType
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -136,9 +136,9 @@ SetReportOption (
 | 
				
			|||||||
  ACPI table is to be examined by the AcpiView code.
 | 
					  ACPI table is to be examined by the AcpiView code.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINT32              Type;    ///< 32bit signature of the selected ACPI table.
 | 
					  UINT32          Type;        ///< 32bit signature of the selected ACPI table.
 | 
				
			||||||
  CONST CHAR16*       Name;    ///< User friendly name of the selected ACPI table.
 | 
					  CONST CHAR16    *Name;       ///< User friendly name of the selected ACPI table.
 | 
				
			||||||
  BOOLEAN             Found;   ///< The selected table has been found in the system.
 | 
					  BOOLEAN         Found;       ///< The selected table has been found in the system.
 | 
				
			||||||
} SELECTED_ACPI_TABLE;
 | 
					} SELECTED_ACPI_TABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -149,7 +149,7 @@ typedef struct {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetSelectedAcpiTable (
 | 
					GetSelectedAcpiTable (
 | 
				
			||||||
  OUT SELECTED_ACPI_TABLE** SelectedAcpiTable
 | 
					  OUT SELECTED_ACPI_TABLE  **SelectedAcpiTable
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -162,7 +162,7 @@ GetSelectedAcpiTable (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
SelectAcpiTable (
 | 
					SelectAcpiTable (
 | 
				
			||||||
  CONST CHAR16* TableName
 | 
					  CONST CHAR16  *TableName
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  SBBR specification version strings
 | 
					  SBBR specification version strings
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST CHAR8* ArmSbbrVersions[ArmSbbrVersionMax] = {
 | 
					STATIC CONST CHAR8  *ArmSbbrVersions[ArmSbbrVersionMax] = {
 | 
				
			||||||
  "1.0",     // ArmSbbrVersion_1_0
 | 
					  "1.0",     // ArmSbbrVersion_1_0
 | 
				
			||||||
  "1.1",     // ArmSbbrVersion_1_1
 | 
					  "1.1",     // ArmSbbrVersion_1_1
 | 
				
			||||||
  "1.2"      // ArmSbbrVersion_1_2
 | 
					  "1.2"      // ArmSbbrVersion_1_2
 | 
				
			||||||
@@ -32,7 +32,7 @@ STATIC CONST CHAR8* ArmSbbrVersions[ArmSbbrVersionMax] = {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  SBBR 1.0 mandatory ACPI tables
 | 
					  SBBR 1.0 mandatory ACPI tables
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST UINT32 ArmSbbr10Mandatory[] = {
 | 
					STATIC CONST UINT32  ArmSbbr10Mandatory[] = {
 | 
				
			||||||
  EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
  EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
  EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
@@ -45,7 +45,7 @@ STATIC CONST UINT32 ArmSbbr10Mandatory[] = {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  SBBR 1.1 mandatory ACPI tables
 | 
					  SBBR 1.1 mandatory ACPI tables
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST UINT32 ArmSbbr11Mandatory[] = {
 | 
					STATIC CONST UINT32  ArmSbbr11Mandatory[] = {
 | 
				
			||||||
  EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
  EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
  EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
@@ -59,7 +59,7 @@ STATIC CONST UINT32 ArmSbbr11Mandatory[] = {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  SBBR 1.2 mandatory ACPI tables
 | 
					  SBBR 1.2 mandatory ACPI tables
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST UINT32 ArmSbbr12Mandatory[] = {
 | 
					STATIC CONST UINT32  ArmSbbr12Mandatory[] = {
 | 
				
			||||||
  EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
  EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
  EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
@@ -74,7 +74,7 @@ STATIC CONST UINT32 ArmSbbr12Mandatory[] = {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  Mandatory ACPI tables for every SBBR specification version.
 | 
					  Mandatory ACPI tables for every SBBR specification version.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_SBBR_REQ ArmSbbrReqs[ArmSbbrVersionMax] = {
 | 
					STATIC CONST ACPI_SBBR_REQ  ArmSbbrReqs[ArmSbbrVersionMax] = {
 | 
				
			||||||
  { ArmSbbr10Mandatory, ARRAY_SIZE (ArmSbbr10Mandatory) },    // SBBR v1.0
 | 
					  { ArmSbbr10Mandatory, ARRAY_SIZE (ArmSbbr10Mandatory) },    // SBBR v1.0
 | 
				
			||||||
  { ArmSbbr11Mandatory, ARRAY_SIZE (ArmSbbr11Mandatory) },    // SBBR v1.1
 | 
					  { ArmSbbr11Mandatory, ARRAY_SIZE (ArmSbbr11Mandatory) },    // SBBR v1.1
 | 
				
			||||||
  { ArmSbbr12Mandatory, ARRAY_SIZE (ArmSbbr12Mandatory) }     // SBBR v1.2
 | 
					  { ArmSbbr12Mandatory, ARRAY_SIZE (ArmSbbr12Mandatory) }     // SBBR v1.2
 | 
				
			||||||
@@ -84,16 +84,16 @@ STATIC CONST ACPI_SBBR_REQ ArmSbbrReqs[ArmSbbrVersionMax] = {
 | 
				
			|||||||
  Data structure to track instance counts for all ACPI tables which are
 | 
					  Data structure to track instance counts for all ACPI tables which are
 | 
				
			||||||
  defined as 'mandatory' in any SBBR version.
 | 
					  defined as 'mandatory' in any SBBR version.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC ACPI_TABLE_COUNTER ArmSbbrTableCounts[] = {
 | 
					STATIC ACPI_TABLE_COUNTER  ArmSbbrTableCounts[] = {
 | 
				
			||||||
  {EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,                                            0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,                                                 0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,                                      0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,                                              0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,                                              0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,                                                           0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,                                        0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE, 0},
 | 
					  { EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE, 0 },
 | 
				
			||||||
  {EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE, 0}
 | 
					  { EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE,                                0 }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -105,7 +105,7 @@ ArmSbbrResetTableCounts (
 | 
				
			|||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Table;
 | 
					  UINT32  Table;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
 | 
					  for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
 | 
				
			||||||
    ArmSbbrTableCounts[Table].Count = 0;
 | 
					    ArmSbbrTableCounts[Table].Count = 0;
 | 
				
			||||||
@@ -124,10 +124,10 @@ ArmSbbrResetTableCounts (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ArmSbbrIncrementTableCount (
 | 
					ArmSbbrIncrementTableCount (
 | 
				
			||||||
  UINT32 Signature
 | 
					  UINT32  Signature
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Table;
 | 
					  UINT32  Table;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
 | 
					  for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
 | 
				
			||||||
    if (Signature == ArmSbbrTableCounts[Table].Signature) {
 | 
					    if (Signature == ArmSbbrTableCounts[Table].Signature) {
 | 
				
			||||||
@@ -154,14 +154,14 @@ ArmSbbrIncrementTableCount (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ArmSbbrReqsValidate (
 | 
					ArmSbbrReqsValidate (
 | 
				
			||||||
  ARM_SBBR_VERSION Version
 | 
					  ARM_SBBR_VERSION  Version
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32        Table;
 | 
					  UINT32       Table;
 | 
				
			||||||
  UINT32        Index;
 | 
					  UINT32       Index;
 | 
				
			||||||
  UINT32        MandatoryTable;
 | 
					  UINT32       MandatoryTable;
 | 
				
			||||||
  CONST UINT8*  SignaturePtr;
 | 
					  CONST UINT8  *SignaturePtr;
 | 
				
			||||||
  BOOLEAN       IsArmSbbrViolated;
 | 
					  BOOLEAN      IsArmSbbrViolated;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Version >= ArmSbbrVersionMax) {
 | 
					  if (Version >= ArmSbbrVersionMax) {
 | 
				
			||||||
    return EFI_INVALID_PARAMETER;
 | 
					    return EFI_INVALID_PARAMETER;
 | 
				
			||||||
@@ -172,12 +172,13 @@ ArmSbbrReqsValidate (
 | 
				
			|||||||
  // Go through the list of mandatory tables for the input SBBR version
 | 
					  // Go through the list of mandatory tables for the input SBBR version
 | 
				
			||||||
  for (Table = 0; Table < ArmSbbrReqs[Version].TableCount; Table++) {
 | 
					  for (Table = 0; Table < ArmSbbrReqs[Version].TableCount; Table++) {
 | 
				
			||||||
    MandatoryTable = ArmSbbrReqs[Version].Tables[Table];
 | 
					    MandatoryTable = ArmSbbrReqs[Version].Tables[Table];
 | 
				
			||||||
    SignaturePtr = (CONST UINT8*)(UINTN)&MandatoryTable;
 | 
					    SignaturePtr   = (CONST UINT8 *)(UINTN)&MandatoryTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Locate the instance count for the table with the given signature
 | 
					    // Locate the instance count for the table with the given signature
 | 
				
			||||||
    Index = 0;
 | 
					    Index = 0;
 | 
				
			||||||
    while ((Index < ARRAY_SIZE (ArmSbbrTableCounts)) &&
 | 
					    while ((Index < ARRAY_SIZE (ArmSbbrTableCounts)) &&
 | 
				
			||||||
           (ArmSbbrTableCounts[Index].Signature != MandatoryTable)) {
 | 
					           (ArmSbbrTableCounts[Index].Signature != MandatoryTable))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      Index++;
 | 
					      Index++;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -185,7 +186,7 @@ ArmSbbrReqsValidate (
 | 
				
			|||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"\nERROR: SBBR v%a: Mandatory %c%c%c%c table's instance count not " \
 | 
					        L"\nERROR: SBBR v%a: Mandatory %c%c%c%c table's instance count not " \
 | 
				
			||||||
          L"found\n",
 | 
					        L"found\n",
 | 
				
			||||||
        ArmSbbrVersions[Version],
 | 
					        ArmSbbrVersions[Version],
 | 
				
			||||||
        SignaturePtr[0],
 | 
					        SignaturePtr[0],
 | 
				
			||||||
        SignaturePtr[1],
 | 
					        SignaturePtr[1],
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,26 +24,26 @@
 | 
				
			|||||||
  Arm SBBR specification versions.
 | 
					  Arm SBBR specification versions.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef enum {
 | 
					typedef enum {
 | 
				
			||||||
  ArmSbbrVersion_1_0    = 0,
 | 
					  ArmSbbrVersion_1_0 = 0,
 | 
				
			||||||
  ArmSbbrVersion_1_1    = 1,
 | 
					  ArmSbbrVersion_1_1 = 1,
 | 
				
			||||||
  ArmSbbrVersion_1_2    = 2,
 | 
					  ArmSbbrVersion_1_2 = 2,
 | 
				
			||||||
  ArmSbbrVersionMax     = 3
 | 
					  ArmSbbrVersionMax  = 3
 | 
				
			||||||
} ARM_SBBR_VERSION;
 | 
					} ARM_SBBR_VERSION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  The ACPI table instance counter.
 | 
					  The ACPI table instance counter.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct AcpiTableCounter {
 | 
					typedef struct AcpiTableCounter {
 | 
				
			||||||
  CONST UINT32  Signature;        /// ACPI table signature
 | 
					  CONST UINT32    Signature;      /// ACPI table signature
 | 
				
			||||||
  UINT32        Count;            /// Instance count
 | 
					  UINT32          Count;          /// Instance count
 | 
				
			||||||
} ACPI_TABLE_COUNTER;
 | 
					} ACPI_TABLE_COUNTER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  ACPI table SBBR requirements.
 | 
					  ACPI table SBBR requirements.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
typedef struct AcpiSbbrReq {
 | 
					typedef struct AcpiSbbrReq {
 | 
				
			||||||
  CONST UINT32* Tables;          /// List of required tables
 | 
					  CONST UINT32    *Tables;       /// List of required tables
 | 
				
			||||||
  CONST UINT32  TableCount;      /// Number of elements in Tables
 | 
					  CONST UINT32    TableCount;    /// Number of elements in Tables
 | 
				
			||||||
} ACPI_SBBR_REQ;
 | 
					} ACPI_SBBR_REQ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -67,7 +67,7 @@ ArmSbbrResetTableCounts (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ArmSbbrIncrementTableCount (
 | 
					ArmSbbrIncrementTableCount (
 | 
				
			||||||
  UINT32 Signature
 | 
					  UINT32  Signature
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -85,7 +85,7 @@ ArmSbbrIncrementTableCount (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ArmSbbrReqsValidate (
 | 
					ArmSbbrReqsValidate (
 | 
				
			||||||
  ARM_SBBR_VERSION Version
 | 
					  ARM_SBBR_VERSION  Version
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // SBBR_VALIDATOR_H_
 | 
					#endif // SBBR_VALIDATOR_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,16 +18,16 @@
 | 
				
			|||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
STATIC UINT8*                       AestNodeType;
 | 
					STATIC UINT8                         *AestNodeType;
 | 
				
			||||||
STATIC UINT16*                      AestNodeLength;
 | 
					STATIC UINT16                        *AestNodeLength;
 | 
				
			||||||
STATIC UINT32*                      NodeDataOffset;
 | 
					STATIC UINT32                        *NodeDataOffset;
 | 
				
			||||||
STATIC UINT32*                      NodeInterfaceOffset;
 | 
					STATIC UINT32                        *NodeInterfaceOffset;
 | 
				
			||||||
STATIC UINT32*                      NodeInterruptArrayOffset;
 | 
					STATIC UINT32                        *NodeInterruptArrayOffset;
 | 
				
			||||||
STATIC UINT32*                      NodeInterruptCount;
 | 
					STATIC UINT32                        *NodeInterruptCount;
 | 
				
			||||||
STATIC UINT32*                      ProcessorId;
 | 
					STATIC UINT32                        *ProcessorId;
 | 
				
			||||||
STATIC UINT8*                       ProcessorFlags;
 | 
					STATIC UINT8                         *ProcessorFlags;
 | 
				
			||||||
STATIC UINT8*                       ProcessorResourceType;
 | 
					STATIC UINT8                         *ProcessorResourceType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Validate Processor Flags.
 | 
					  Validate Processor Flags.
 | 
				
			||||||
@@ -40,16 +40,18 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateProcessorFlags (
 | 
					ValidateProcessorFlags (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // If the global or shared node flag is set then the ACPI Processor ID
 | 
					  // If the global or shared node flag is set then the ACPI Processor ID
 | 
				
			||||||
  // field must be set to 0 and ignored.
 | 
					  // field must be set to 0 and ignored.
 | 
				
			||||||
  if (((*Ptr & 0x3) != 0) && (*ProcessorId != 0)) {
 | 
					  if (((*Ptr & 0x3) != 0) && (*ProcessorId != 0)) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (L"\nERROR: 'ACPI Processor ID' field must be set to 0 for global"
 | 
					    Print (
 | 
				
			||||||
           L" or shared nodes.");
 | 
					      L"\nERROR: 'ACPI Processor ID' field must be set to 0 for global"
 | 
				
			||||||
 | 
					      L" or shared nodes."
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,13 +66,13 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateGicInterfaceType (
 | 
					ValidateGicInterfaceType (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 GicInterfaceType;
 | 
					  UINT32  GicInterfaceType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GicInterfaceType = *(UINT32*)Ptr;
 | 
					  GicInterfaceType = *(UINT32 *)Ptr;
 | 
				
			||||||
  if (GicInterfaceType > 3) {
 | 
					  if (GicInterfaceType > 3) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (L"\nError: Invalid GIC Interface type %d", GicInterfaceType);
 | 
					    Print (L"\nError: Invalid GIC Interface type %d", GicInterfaceType);
 | 
				
			||||||
@@ -88,8 +90,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateInterfaceType (
 | 
					ValidateInterfaceType (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*Ptr > 1) {
 | 
					  if (*Ptr > 1) {
 | 
				
			||||||
@@ -109,8 +111,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateInterruptType (
 | 
					ValidateInterruptType (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*Ptr > 1) {
 | 
					  if (*Ptr > 1) {
 | 
				
			||||||
@@ -130,8 +132,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateInterruptFlags (
 | 
					ValidateInterruptFlags (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if ((*Ptr & 0xfe) != 0) {
 | 
					  if ((*Ptr & 0xfe) != 0) {
 | 
				
			||||||
@@ -149,8 +151,8 @@ ValidateInterruptFlags (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpVendorSpecificData (
 | 
					DumpVendorSpecificData (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Print (
 | 
					  Print (
 | 
				
			||||||
@@ -183,27 +185,27 @@ DumpVendorSpecificData (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI AEST Table.
 | 
					  An ACPI_PARSER array describing the ACPI AEST Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestParser[] = {
 | 
					STATIC CONST ACPI_PARSER  AestParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the AEST Node Header.
 | 
					  An ACPI_PARSER array describing the AEST Node Header.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestNodeHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  AestNodeHeaderParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"%d", NULL, (VOID**)&AestNodeType, NULL, NULL},
 | 
					  { L"Type",                           1, 0,  L"%d",    NULL, (VOID **)&AestNodeType,   NULL, NULL },
 | 
				
			||||||
  {L"Length", 2, 1, L"%d", NULL, (VOID**)&AestNodeLength, NULL, NULL},
 | 
					  { L"Length",                         2, 1,  L"%d",    NULL, (VOID **)&AestNodeLength, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 1, 3, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                       1, 3,  L"0x%x",  NULL, NULL,                     NULL, NULL },
 | 
				
			||||||
  {L"Node Data Offset", 4, 4, L"%d", NULL, (VOID**)&NodeDataOffset, NULL, NULL},
 | 
					  { L"Node Data Offset",               4, 4,  L"%d",    NULL, (VOID **)&NodeDataOffset, NULL, NULL },
 | 
				
			||||||
  {L"Node Interface Offset", 4, 8, L"%d", NULL,
 | 
					  { L"Node Interface Offset",          4, 8,  L"%d",    NULL,
 | 
				
			||||||
    (VOID**)&NodeInterfaceOffset, NULL, NULL},
 | 
					    (VOID **)&NodeInterfaceOffset, NULL, NULL },
 | 
				
			||||||
  {L"Node Interrupt Array Offset", 4, 12, L"%d", NULL,
 | 
					  { L"Node Interrupt Array Offset",    4, 12, L"%d",    NULL,
 | 
				
			||||||
    (VOID**)&NodeInterruptArrayOffset, NULL, NULL},
 | 
					    (VOID **)&NodeInterruptArrayOffset, NULL, NULL },
 | 
				
			||||||
  {L"Node Interrupt Count", 4, 16, L"%d", NULL,
 | 
					  { L"Node Interrupt Count",           4, 16, L"%d",    NULL,
 | 
				
			||||||
    (VOID**)&NodeInterruptCount, NULL, NULL},
 | 
					    (VOID **)&NodeInterruptCount, NULL, NULL },
 | 
				
			||||||
  {L"Timestamp Rate", 8, 20, L"%ld", NULL, NULL, NULL, NULL},
 | 
					  { L"Timestamp Rate",                 8, 20, L"%ld",   NULL, NULL,                     NULL, NULL },
 | 
				
			||||||
  {L"Reserved1", 8, 28, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved1",                      8, 28, L"0x%lx", NULL, NULL,                     NULL, NULL },
 | 
				
			||||||
  {L"Error Injection Countdown Rate", 8, 36, L"%ld", NULL, NULL, NULL, NULL}
 | 
					  { L"Error Injection Countdown Rate", 8, 36, L"%ld",   NULL, NULL,                     NULL, NULL }
 | 
				
			||||||
  // Node specific data...
 | 
					  // Node specific data...
 | 
				
			||||||
  // Node interface...
 | 
					  // Node interface...
 | 
				
			||||||
  // Node interrupt array...
 | 
					  // Node interrupt array...
 | 
				
			||||||
@@ -212,100 +214,100 @@ STATIC CONST ACPI_PARSER AestNodeHeaderParser[] = {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Processor error node specific data.
 | 
					  An ACPI_PARSER array describing the Processor error node specific data.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestProcessorStructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestProcessorStructure[] = {
 | 
				
			||||||
  {L"ACPI Processor ID", 4, 0, L"0x%x", NULL, (VOID**)&ProcessorId, NULL, NULL},
 | 
					  { L"ACPI Processor ID",                  4, 0, L"0x%x",  NULL, (VOID **)&ProcessorId,           NULL, NULL },
 | 
				
			||||||
  {L"Resource Type", 1, 4, L"%d", NULL, (VOID**)&ProcessorResourceType, NULL,
 | 
					  { L"Resource Type",                      1, 4, L"%d",    NULL, (VOID **)&ProcessorResourceType, NULL,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Reserved", 1, 5, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                           1, 5, L"0x%x",  NULL, NULL,                            NULL, NULL },
 | 
				
			||||||
  {L"Flags", 1, 6, L"0x%x", NULL, (VOID**)&ProcessorFlags,
 | 
					  { L"Flags",                              1, 6, L"0x%x",  NULL, (VOID **)&ProcessorFlags,
 | 
				
			||||||
    ValidateProcessorFlags, NULL},
 | 
					    ValidateProcessorFlags, NULL },
 | 
				
			||||||
  {L"Revision", 1, 7, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Revision",                           1, 7, L"%d",    NULL, NULL,                            NULL, NULL },
 | 
				
			||||||
  {L"Processor Affinity Level Indicator", 8, 8, L"0x%lx", NULL, NULL, NULL,
 | 
					  { L"Processor Affinity Level Indicator", 8, 8, L"0x%lx", NULL, NULL,                            NULL,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  // Resource specific data...
 | 
					  // Resource specific data...
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the processor cache resource substructure.
 | 
					  An ACPI_PARSER array describing the processor cache resource substructure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestProcessorCacheResourceSubstructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestProcessorCacheResourceSubstructure[] = {
 | 
				
			||||||
  {L"Cache reference ID", 4, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Cache reference ID", 4, 0, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 4, L"%d", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",           4, 4, L"%d",   NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the processor TLB resource substructure.
 | 
					  An ACPI_PARSER array describing the processor TLB resource substructure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestProcessorTlbResourceSubstructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestProcessorTlbResourceSubstructure[] = {
 | 
				
			||||||
  {L"TLB reference ID", 4, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"TLB reference ID", 4, 0, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 4, L"%d", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",         4, 4, L"%d",   NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the processor generic resource substructure.
 | 
					  An ACPI_PARSER array describing the processor generic resource substructure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestProcessorGenericResourceSubstructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestProcessorGenericResourceSubstructure[] = {
 | 
				
			||||||
  {L"Vendor-defined data", 4, 0, L"%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Vendor-defined data", 4, 0, L"%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the memory controller structure.
 | 
					  An ACPI_PARSER array describing the memory controller structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestMemoryControllerStructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestMemoryControllerStructure[] = {
 | 
				
			||||||
  {L"Proximity Domain", 4, 0, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Proximity Domain", 4, 0, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the SMMU structure.
 | 
					  An ACPI_PARSER array describing the SMMU structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestSmmuStructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestSmmuStructure[] = {
 | 
				
			||||||
  {L"IORT Node reference ID", 4, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"IORT Node reference ID",    4, 0, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"SubComponent reference ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"SubComponent reference ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the vendor-defined structure.
 | 
					  An ACPI_PARSER array describing the vendor-defined structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestVendorDefinedStructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestVendorDefinedStructure[] = {
 | 
				
			||||||
  {L"Hardware ID", 4, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Hardware ID",          4,  0, L"0x%x", NULL,                   NULL, NULL, NULL },
 | 
				
			||||||
  {L"Unique ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Unique ID",            4,  4, L"0x%x", NULL,                   NULL, NULL, NULL },
 | 
				
			||||||
  {L"Vendor-specific data", 16, 8, NULL, DumpVendorSpecificData, NULL, NULL}
 | 
					  { L"Vendor-specific data", 16, 8, NULL,    DumpVendorSpecificData, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GIC structure.
 | 
					  An ACPI_PARSER array describing the GIC structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestGicStructure[] = {
 | 
					STATIC CONST ACPI_PARSER  AestGicStructure[] = {
 | 
				
			||||||
  {L"GIC Interface Type", 4, 0, L"0x%x", NULL, NULL, ValidateGicInterfaceType,
 | 
					  { L"GIC Interface Type",         4, 0, L"0x%x", NULL, NULL, ValidateGicInterfaceType,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"GIC Interface reference ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"GIC Interface reference ID", 4, 4, L"0x%x", NULL, NULL, NULL,                    NULL}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the node interface.
 | 
					  An ACPI_PARSER array describing the node interface.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestNodeInterface[] = {
 | 
					STATIC CONST ACPI_PARSER  AestNodeInterface[] = {
 | 
				
			||||||
  {L"Interface Type", 1, 0, L"%d", NULL, NULL, ValidateInterfaceType, NULL},
 | 
					  { L"Interface Type",            1, 0,  L"%d",       NULL,       NULL, ValidateInterfaceType, NULL },
 | 
				
			||||||
  {L"Reserved", 3, 1, L"%x %x %x", Dump3Chars, NULL, NULL, NULL},
 | 
					  { L"Reserved",                  3, 1,  L"%x %x %x", Dump3Chars, NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                     4, 4,  L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",              8, 8,  L"0x%lx",    NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Start Error Record Index", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Start Error Record Index",  4, 16, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Number of Error Records", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Number of Error Records",   4, 20, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Error Records Implemented", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Error Records Implemented", 8, 24, L"0x%lx",    NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Error Records Support", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Error Records Support",     8, 32, L"0x%lx",    NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Addressing mode", 8, 40, L"0x%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Addressing mode",           8, 40, L"0x%lx",    NULL,       NULL, NULL,                  NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the node interrupts.
 | 
					  An ACPI_PARSER array describing the node interrupts.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER AestNodeInterrupt[] = {
 | 
					STATIC CONST ACPI_PARSER  AestNodeInterrupt[] = {
 | 
				
			||||||
  {L"Interrupt Type", 1, 0, L"%d", NULL, NULL, ValidateInterruptType, NULL},
 | 
					  { L"Interrupt Type",  1, 0, L"%d",       NULL,       NULL, ValidateInterruptType,  NULL },
 | 
				
			||||||
  {L"Reserved", 2, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",        2, 1, L"0x%x",     NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Interrupt Flags", 1, 3, L"0x%x", NULL, NULL, ValidateInterruptFlags, NULL},
 | 
					  { L"Interrupt Flags", 1, 3, L"0x%x",     NULL,       NULL, ValidateInterruptFlags, NULL },
 | 
				
			||||||
  {L"Interrupt GSIV", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Interrupt GSIV",  4, 4, L"0x%x",     NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"ID", 1, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ID",              1, 8, L"0x%x",     NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Reserved1", 3, 9, L"%x %x %x", Dump3Chars, NULL, NULL, NULL}
 | 
					  { L"Reserved1",       3, 9, L"%x %x %x", Dump3Chars, NULL, NULL,                   NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -318,11 +320,11 @@ STATIC CONST ACPI_PARSER AestNodeInterrupt[] = {
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpProcessorNode (
 | 
					DumpProcessorNode (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = ParseAcpi (
 | 
					  Offset = ParseAcpi (
 | 
				
			||||||
             TRUE,
 | 
					             TRUE,
 | 
				
			||||||
@@ -337,7 +339,8 @@ DumpProcessorNode (
 | 
				
			|||||||
  // successfully read.
 | 
					  // successfully read.
 | 
				
			||||||
  if ((ProcessorId == NULL)           ||
 | 
					  if ((ProcessorId == NULL)           ||
 | 
				
			||||||
      (ProcessorResourceType == NULL) ||
 | 
					      (ProcessorResourceType == NULL) ||
 | 
				
			||||||
      (ProcessorFlags == NULL)) {
 | 
					      (ProcessorFlags == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient Processor Error Node length. Length = %d.\n",
 | 
					      L"ERROR: Insufficient Processor Error Node length. Length = %d.\n",
 | 
				
			||||||
@@ -393,8 +396,8 @@ DumpProcessorNode (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpMemoryControllerNode (
 | 
					DumpMemoryControllerNode (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -416,8 +419,8 @@ DumpMemoryControllerNode (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpSmmuNode (
 | 
					DumpSmmuNode (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -439,8 +442,8 @@ DumpSmmuNode (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpVendorDefinedNode (
 | 
					DumpVendorDefinedNode (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -462,8 +465,8 @@ DumpVendorDefinedNode (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpGicNode (
 | 
					DumpGicNode (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -485,8 +488,8 @@ DumpGicNode (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpNodeInterface (
 | 
					DumpNodeInterface (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -509,19 +512,19 @@ DumpNodeInterface (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpNodeInterrupts (
 | 
					DumpNodeInterrupts (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length,
 | 
					  IN UINT32  Length,
 | 
				
			||||||
  IN UINT32 InterruptCount
 | 
					  IN UINT32  InterruptCount
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  CHAR8  Buffer[64];
 | 
					  CHAR8   Buffer[64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Length < (InterruptCount * sizeof (EFI_ACPI_AEST_INTERRUPT_STRUCT))) {
 | 
					  if (Length < (InterruptCount * sizeof (EFI_ACPI_AEST_INTERRUPT_STRUCT))) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Node not long enough for Interrupt Array.\n"\
 | 
					      L"ERROR: Node not long enough for Interrupt Array.\n" \
 | 
				
			||||||
      L"       Length left = %d, Required = %d, Interrupt Count = %d\n",
 | 
					      L"       Length left = %d, Required = %d, Interrupt Count = %d\n",
 | 
				
			||||||
      Length,
 | 
					      Length,
 | 
				
			||||||
      (InterruptCount * sizeof (EFI_ACPI_AEST_INTERRUPT_STRUCT)),
 | 
					      (InterruptCount * sizeof (EFI_ACPI_AEST_INTERRUPT_STRUCT)),
 | 
				
			||||||
@@ -547,7 +550,7 @@ DumpNodeInterrupts (
 | 
				
			|||||||
                Length - Offset,
 | 
					                Length - Offset,
 | 
				
			||||||
                PARSER_PARAMS (AestNodeInterrupt)
 | 
					                PARSER_PARAMS (AestNodeInterrupt)
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
  } //for
 | 
					  } // for
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -564,7 +567,7 @@ DumpNodeInterrupts (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpAestNodeStructure (
 | 
					DumpAestNodeStructure (
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32  Length,
 | 
					  IN UINT32  Length,
 | 
				
			||||||
  IN UINT8   NodeType,
 | 
					  IN UINT8   NodeType,
 | 
				
			||||||
  IN UINT32  DataOffset,
 | 
					  IN UINT32  DataOffset,
 | 
				
			||||||
@@ -573,9 +576,9 @@ DumpAestNodeStructure (
 | 
				
			|||||||
  IN UINT32  InterruptCount
 | 
					  IN UINT32  InterruptCount
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 RemainingLength;
 | 
					  UINT32  RemainingLength;
 | 
				
			||||||
  UINT8* NodeDataPtr;
 | 
					  UINT8   *NodeDataPtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = ParseAcpi (
 | 
					  Offset = ParseAcpi (
 | 
				
			||||||
             TRUE,
 | 
					             TRUE,
 | 
				
			||||||
@@ -589,7 +592,7 @@ DumpAestNodeStructure (
 | 
				
			|||||||
  if ((Offset > DataOffset) || (DataOffset > Length)) {
 | 
					  if ((Offset > DataOffset) || (DataOffset > Length)) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Invalid Node Data Offset: %d.\n"\
 | 
					      L"ERROR: Invalid Node Data Offset: %d.\n" \
 | 
				
			||||||
      L"       It should be between %d and %d.\n",
 | 
					      L"       It should be between %d and %d.\n",
 | 
				
			||||||
      DataOffset,
 | 
					      DataOffset,
 | 
				
			||||||
      Offset,
 | 
					      Offset,
 | 
				
			||||||
@@ -600,7 +603,7 @@ DumpAestNodeStructure (
 | 
				
			|||||||
  if ((Offset > InterfaceOffset) || (InterfaceOffset > Length)) {
 | 
					  if ((Offset > InterfaceOffset) || (InterfaceOffset > Length)) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Invalid Node Interface Offset: %d.\n"\
 | 
					      L"ERROR: Invalid Node Interface Offset: %d.\n" \
 | 
				
			||||||
      L"       It should be between %d and %d.\n",
 | 
					      L"       It should be between %d and %d.\n",
 | 
				
			||||||
      InterfaceOffset,
 | 
					      InterfaceOffset,
 | 
				
			||||||
      Offset,
 | 
					      Offset,
 | 
				
			||||||
@@ -611,7 +614,7 @@ DumpAestNodeStructure (
 | 
				
			|||||||
  if ((Offset > InterruptArrayOffset) || (InterruptArrayOffset > Length)) {
 | 
					  if ((Offset > InterruptArrayOffset) || (InterruptArrayOffset > Length)) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Invalid Node Interrupt Array Offset: %d.\n"\
 | 
					      L"ERROR: Invalid Node Interrupt Array Offset: %d.\n" \
 | 
				
			||||||
      L"       It should be between %d and %d.\n",
 | 
					      L"       It should be between %d and %d.\n",
 | 
				
			||||||
      InterruptArrayOffset,
 | 
					      InterruptArrayOffset,
 | 
				
			||||||
      Offset,
 | 
					      Offset,
 | 
				
			||||||
@@ -620,7 +623,7 @@ DumpAestNodeStructure (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Parse Node Data Field.
 | 
					  // Parse Node Data Field.
 | 
				
			||||||
  NodeDataPtr = Ptr + DataOffset;
 | 
					  NodeDataPtr     = Ptr + DataOffset;
 | 
				
			||||||
  RemainingLength = Length - DataOffset;
 | 
					  RemainingLength = Length - DataOffset;
 | 
				
			||||||
  switch (NodeType) {
 | 
					  switch (NodeType) {
 | 
				
			||||||
    case EFI_ACPI_AEST_NODE_TYPE_PROCESSOR:
 | 
					    case EFI_ACPI_AEST_NODE_TYPE_PROCESSOR:
 | 
				
			||||||
@@ -675,14 +678,14 @@ DumpAestNodeStructure (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiAest (
 | 
					ParseAcpiAest (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32  Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT8*  NodePtr;
 | 
					  UINT8   *NodePtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -716,10 +719,11 @@ ParseAcpiAest (
 | 
				
			|||||||
        (NodeDataOffset == NULL)           ||
 | 
					        (NodeDataOffset == NULL)           ||
 | 
				
			||||||
        (NodeInterfaceOffset == NULL)      ||
 | 
					        (NodeInterfaceOffset == NULL)      ||
 | 
				
			||||||
        (NodeInterruptArrayOffset == NULL) ||
 | 
					        (NodeInterruptArrayOffset == NULL) ||
 | 
				
			||||||
        (NodeInterruptCount == NULL)) {
 | 
					        (NodeInterruptCount == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient length left for Node Structure.\n"\
 | 
					        L"ERROR: Insufficient length left for Node Structure.\n" \
 | 
				
			||||||
        L"       Length left = %d.\n",
 | 
					        L"       Length left = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
@@ -728,11 +732,12 @@ ParseAcpiAest (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate AEST Node length
 | 
					    // Validate AEST Node length
 | 
				
			||||||
    if ((*AestNodeLength == 0) ||
 | 
					    if ((*AestNodeLength == 0) ||
 | 
				
			||||||
        ((Offset + (*AestNodeLength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*AestNodeLength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid AEST Node length. " \
 | 
					        L"ERROR: Invalid AEST Node length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *AestNodeLength,
 | 
					        *AestNodeLength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,19 +14,19 @@
 | 
				
			|||||||
#include "AcpiTableParser.h"
 | 
					#include "AcpiTableParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI BDRT Table.
 | 
					  An ACPI_PARSER array describing the ACPI BDRT Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER BgrtParser[] = {
 | 
					STATIC CONST ACPI_PARSER  BgrtParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Version", 2, 36, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Version",                    2,  36, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Status", 1, 38, L"0x%x", NULL,  NULL, NULL, NULL},
 | 
					  { L"Status",                     1,  38, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Image Type", 1, 39, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Image Type",                 1,  39, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Image Address", 8, 40, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Image Address",              8,  40, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Image Offset X", 4, 48, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Image Offset X",             4,  48, L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Image Offset Y", 4, 52, L"%d", NULL, NULL, NULL, NULL}
 | 
					  { L"Image Offset Y",             4,  52, L"%d",    NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -44,10 +44,10 @@ STATIC CONST ACPI_PARSER BgrtParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiBgrt (
 | 
					ParseAcpiBgrt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,17 +14,17 @@
 | 
				
			|||||||
#include "AcpiTableParser.h"
 | 
					#include "AcpiTableParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables pointing to the table fields
 | 
					// Local variables pointing to the table fields
 | 
				
			||||||
STATIC CONST UINT32* OffsetDbgDeviceInfo;
 | 
					STATIC CONST UINT32                  *OffsetDbgDeviceInfo;
 | 
				
			||||||
STATIC CONST UINT32* NumberDbgDeviceInfo;
 | 
					STATIC CONST UINT32                  *NumberDbgDeviceInfo;
 | 
				
			||||||
STATIC CONST UINT16* DbgDevInfoLen;
 | 
					STATIC CONST UINT16                  *DbgDevInfoLen;
 | 
				
			||||||
STATIC CONST UINT8*  GasCount;
 | 
					STATIC CONST UINT8                   *GasCount;
 | 
				
			||||||
STATIC CONST UINT16* NameSpaceStringLength;
 | 
					STATIC CONST UINT16                  *NameSpaceStringLength;
 | 
				
			||||||
STATIC CONST UINT16* NameSpaceStringOffset;
 | 
					STATIC CONST UINT16                  *NameSpaceStringOffset;
 | 
				
			||||||
STATIC CONST UINT16* OEMDataLength;
 | 
					STATIC CONST UINT16                  *OEMDataLength;
 | 
				
			||||||
STATIC CONST UINT16* OEMDataOffset;
 | 
					STATIC CONST UINT16                  *OEMDataOffset;
 | 
				
			||||||
STATIC CONST UINT16* BaseAddrRegOffset;
 | 
					STATIC CONST UINT16                  *BaseAddrRegOffset;
 | 
				
			||||||
STATIC CONST UINT16* AddrSizeOffset;
 | 
					STATIC CONST UINT16                  *AddrSizeOffset;
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the NameSpace string length.
 | 
					  This function validates the NameSpace string length.
 | 
				
			||||||
@@ -37,64 +37,64 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateNameSpaceStrLen (
 | 
					ValidateNameSpaceStrLen (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT16 NameSpaceStrLen;
 | 
					  UINT16  NameSpaceStrLen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  NameSpaceStrLen = *(UINT16*)Ptr;
 | 
					  NameSpaceStrLen = *(UINT16 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (NameSpaceStrLen < 2) {
 | 
					  if (NameSpaceStrLen < 2) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: NamespaceString Length = %d. If no Namespace device exists, " \
 | 
					      L"\nERROR: NamespaceString Length = %d. If no Namespace device exists, " \
 | 
				
			||||||
        L"NamespaceString[] must contain a period '.'",
 | 
					      L"NamespaceString[] must contain a period '.'",
 | 
				
			||||||
      NameSpaceStrLen
 | 
					      NameSpaceStrLen
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// An ACPI_PARSER array describing the ACPI DBG2 table.
 | 
					/// An ACPI_PARSER array describing the ACPI DBG2 table.
 | 
				
			||||||
STATIC CONST ACPI_PARSER Dbg2Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  Dbg2Parser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"OffsetDbgDeviceInfo", 4, 36, L"0x%x", NULL,
 | 
					  { L"OffsetDbgDeviceInfo",        4,     36, L"0x%x", NULL,
 | 
				
			||||||
   (VOID**)&OffsetDbgDeviceInfo, NULL, NULL},
 | 
					    (VOID **)&OffsetDbgDeviceInfo, NULL,  NULL },
 | 
				
			||||||
  {L"NumberDbgDeviceInfo", 4, 40, L"%d", NULL,
 | 
					  { L"NumberDbgDeviceInfo",        4,     40, L"%d",   NULL,
 | 
				
			||||||
   (VOID**)&NumberDbgDeviceInfo, NULL, NULL}
 | 
					    (VOID **)&NumberDbgDeviceInfo, NULL,  NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// An ACPI_PARSER array describing the debug device information structure
 | 
					/// An ACPI_PARSER array describing the debug device information structure
 | 
				
			||||||
/// header.
 | 
					/// header.
 | 
				
			||||||
STATIC CONST ACPI_PARSER DbgDevInfoHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  DbgDevInfoHeaderParser[] = {
 | 
				
			||||||
  {L"Revision", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Revision", 1, 0, L"0x%x", NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Length", 2, 1, L"%d", NULL, (VOID**)&DbgDevInfoLen, NULL, NULL}
 | 
					  { L"Length",   2, 1, L"%d",   NULL, (VOID **)&DbgDevInfoLen, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// An ACPI_PARSER array describing the debug device information.
 | 
					/// An ACPI_PARSER array describing the debug device information.
 | 
				
			||||||
STATIC CONST ACPI_PARSER DbgDevInfoParser[] = {
 | 
					STATIC CONST ACPI_PARSER  DbgDevInfoParser[] = {
 | 
				
			||||||
  {L"Revision", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Revision",                        1, 0,  L"0x%x", NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Length", 2, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                          2, 1,  L"%d",   NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Generic Address Registers Count", 1, 3, L"0x%x", NULL,
 | 
					  { L"Generic Address Registers Count", 1, 3,  L"0x%x", NULL,
 | 
				
			||||||
   (VOID**)&GasCount, NULL, NULL},
 | 
					    (VOID **)&GasCount, NULL, NULL },
 | 
				
			||||||
  {L"NameSpace String Length", 2, 4, L"%d", NULL,
 | 
					  { L"NameSpace String Length",         2, 4,  L"%d",   NULL,
 | 
				
			||||||
   (VOID**)&NameSpaceStringLength, ValidateNameSpaceStrLen, NULL},
 | 
					    (VOID **)&NameSpaceStringLength, ValidateNameSpaceStrLen, NULL },
 | 
				
			||||||
  {L"NameSpace String Offset", 2, 6, L"0x%x", NULL,
 | 
					  { L"NameSpace String Offset",         2, 6,  L"0x%x", NULL,
 | 
				
			||||||
   (VOID**)&NameSpaceStringOffset, NULL, NULL},
 | 
					    (VOID **)&NameSpaceStringOffset, NULL, NULL },
 | 
				
			||||||
  {L"OEM Data Length", 2, 8, L"%d", NULL, (VOID**)&OEMDataLength,
 | 
					  { L"OEM Data Length",                 2, 8,  L"%d",   NULL, (VOID **)&OEMDataLength,
 | 
				
			||||||
   NULL, NULL},
 | 
					    NULL, NULL },
 | 
				
			||||||
  {L"OEM Data Offset", 2, 10, L"0x%x", NULL, (VOID**)&OEMDataOffset,
 | 
					  { L"OEM Data Offset",                 2, 10, L"0x%x", NULL, (VOID **)&OEMDataOffset,
 | 
				
			||||||
   NULL, NULL},
 | 
					    NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Port Type", 2, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Port Type",                       2, 12, L"0x%x", NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Port SubType", 2, 14, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Port SubType",                    2, 14, L"0x%x", NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 16, L"%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                        2, 16, L"%x",   NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Base Address Register Offset", 2, 18, L"0x%x", NULL,
 | 
					  { L"Base Address Register Offset",    2, 18, L"0x%x", NULL,
 | 
				
			||||||
   (VOID**)&BaseAddrRegOffset, NULL, NULL},
 | 
					    (VOID **)&BaseAddrRegOffset, NULL, NULL },
 | 
				
			||||||
  {L"Address Size Offset", 2, 20, L"0x%x", NULL,
 | 
					  { L"Address Size Offset",             2, 20, L"0x%x", NULL,
 | 
				
			||||||
   (VOID**)&AddrSizeOffset, NULL, NULL}
 | 
					    (VOID **)&AddrSizeOffset, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -107,8 +107,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpDbgDeviceInfo (
 | 
					DumpDbgDeviceInfo (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length
 | 
					  IN UINT16  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT16  Index;
 | 
					  UINT16  Index;
 | 
				
			||||||
@@ -131,21 +131,23 @@ DumpDbgDeviceInfo (
 | 
				
			|||||||
      (OEMDataLength == NULL)         ||
 | 
					      (OEMDataLength == NULL)         ||
 | 
				
			||||||
      (OEMDataOffset == NULL)         ||
 | 
					      (OEMDataOffset == NULL)         ||
 | 
				
			||||||
      (BaseAddrRegOffset == NULL)     ||
 | 
					      (BaseAddrRegOffset == NULL)     ||
 | 
				
			||||||
      (AddrSizeOffset == NULL)) {
 | 
					      (AddrSizeOffset == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient Debug Device Information Structure length. " \
 | 
					      L"ERROR: Insufficient Debug Device Information Structure length. " \
 | 
				
			||||||
        L"Length = %d.\n",
 | 
					      L"Length = %d.\n",
 | 
				
			||||||
      Length
 | 
					      Length
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // GAS
 | 
					  // GAS
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
  Offset = *BaseAddrRegOffset;
 | 
					  Offset = *BaseAddrRegOffset;
 | 
				
			||||||
  while ((Index++ < *GasCount) &&
 | 
					  while ((Index++ < *GasCount) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    PrintFieldName (4, L"BaseAddressRegister");
 | 
					    PrintFieldName (4, L"BaseAddressRegister");
 | 
				
			||||||
    Offset += (UINT16)DumpGasStruct (
 | 
					    Offset += (UINT16)DumpGasStruct (
 | 
				
			||||||
                        Ptr + Offset,
 | 
					                        Ptr + Offset,
 | 
				
			||||||
@@ -160,7 +162,7 @@ DumpDbgDeviceInfo (
 | 
				
			|||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Invalid GAS count. GasCount = %d. RemainingBufferLength = %d. " \
 | 
					      L"ERROR: Invalid GAS count. GasCount = %d. RemainingBufferLength = %d. " \
 | 
				
			||||||
        L"Parsing of the Debug Device Information structure aborted.\n",
 | 
					      L"Parsing of the Debug Device Information structure aborted.\n",
 | 
				
			||||||
      *GasCount,
 | 
					      *GasCount,
 | 
				
			||||||
      Length - *AddrSizeOffset
 | 
					      Length - *AddrSizeOffset
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -168,39 +170,45 @@ DumpDbgDeviceInfo (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Address Size
 | 
					  // Address Size
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
  Offset = *AddrSizeOffset;
 | 
					  Offset = *AddrSizeOffset;
 | 
				
			||||||
  while ((Index++ < *GasCount) &&
 | 
					  while ((Index++ < *GasCount) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    PrintFieldName (4, L"Address Size");
 | 
					    PrintFieldName (4, L"Address Size");
 | 
				
			||||||
    Print (L"0x%x\n", *((UINT32*)(Ptr + Offset)));
 | 
					    Print (L"0x%x\n", *((UINT32 *)(Ptr + Offset)));
 | 
				
			||||||
    Offset += sizeof (UINT32);
 | 
					    Offset += sizeof (UINT32);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // NameSpace String
 | 
					  // NameSpace String
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
  Offset = *NameSpaceStringOffset;
 | 
					  Offset = *NameSpaceStringOffset;
 | 
				
			||||||
  PrintFieldName (4, L"NameSpace String");
 | 
					  PrintFieldName (4, L"NameSpace String");
 | 
				
			||||||
  while ((Index++ < *NameSpaceStringLength) &&
 | 
					  while ((Index++ < *NameSpaceStringLength) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    Print (L"%c", *(Ptr + Offset));
 | 
					    Print (L"%c", *(Ptr + Offset));
 | 
				
			||||||
    Offset++;
 | 
					    Offset++;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Print (L"\n");
 | 
					  Print (L"\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // OEM Data
 | 
					  // OEM Data
 | 
				
			||||||
  if (*OEMDataOffset != 0) {
 | 
					  if (*OEMDataOffset != 0) {
 | 
				
			||||||
    Index = 0;
 | 
					    Index  = 0;
 | 
				
			||||||
    Offset = *OEMDataOffset;
 | 
					    Offset = *OEMDataOffset;
 | 
				
			||||||
    PrintFieldName (4, L"OEM Data");
 | 
					    PrintFieldName (4, L"OEM Data");
 | 
				
			||||||
    while ((Index++ < *OEMDataLength) &&
 | 
					    while ((Index++ < *OEMDataLength) &&
 | 
				
			||||||
           (Offset < Length)) {
 | 
					           (Offset < Length))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      Print (L"%x ", *(Ptr + Offset));
 | 
					      Print (L"%x ", *(Ptr + Offset));
 | 
				
			||||||
      if ((Index & 7) == 0) {
 | 
					      if ((Index & 7) == 0) {
 | 
				
			||||||
        Print (L"\n%-*s   ", OUTPUT_FIELD_COLUMN_WIDTH, L"");
 | 
					        Print (L"\n%-*s   ", OUTPUT_FIELD_COLUMN_WIDTH, L"");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Offset++;
 | 
					      Offset++;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Print (L"\n");
 | 
					    Print (L"\n");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -220,14 +228,14 @@ DumpDbgDeviceInfo (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiDbg2 (
 | 
					ParseAcpiDbg2 (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -245,7 +253,8 @@ ParseAcpiDbg2 (
 | 
				
			|||||||
  // Check if the values used to control the parsing logic have been
 | 
					  // Check if the values used to control the parsing logic have been
 | 
				
			||||||
  // successfully read.
 | 
					  // successfully read.
 | 
				
			||||||
  if ((OffsetDbgDeviceInfo == NULL) ||
 | 
					  if ((OffsetDbgDeviceInfo == NULL) ||
 | 
				
			||||||
      (NumberDbgDeviceInfo == NULL)) {
 | 
					      (NumberDbgDeviceInfo == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient table length. AcpiTableLength = %d\n",
 | 
					      L"ERROR: Insufficient table length. AcpiTableLength = %d\n",
 | 
				
			||||||
@@ -255,10 +264,9 @@ ParseAcpiDbg2 (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = *OffsetDbgDeviceInfo;
 | 
					  Offset = *OffsetDbgDeviceInfo;
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (Index++ < *NumberDbgDeviceInfo) {
 | 
					  while (Index++ < *NumberDbgDeviceInfo) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Parse the Debug Device Information Structure header to obtain Length
 | 
					    // Parse the Debug Device Information Structure header to obtain Length
 | 
				
			||||||
    ParseAcpi (
 | 
					    ParseAcpi (
 | 
				
			||||||
      FALSE,
 | 
					      FALSE,
 | 
				
			||||||
@@ -275,8 +283,8 @@ ParseAcpiDbg2 (
 | 
				
			|||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"Debug Device Information structure's 'Length' field. " \
 | 
					        L"Debug Device Information structure's 'Length' field. " \
 | 
				
			||||||
          L"RemainingTableBufferLength = %d.\n",
 | 
					        L"RemainingTableBufferLength = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -284,11 +292,12 @@ ParseAcpiDbg2 (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate Debug Device Information Structure length
 | 
					    // Validate Debug Device Information Structure length
 | 
				
			||||||
    if ((*DbgDevInfoLen == 0) ||
 | 
					    if ((*DbgDevInfoLen == 0) ||
 | 
				
			||||||
        ((Offset + (*DbgDevInfoLen)) > AcpiTableLength)) {
 | 
					        ((Offset + (*DbgDevInfoLen)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid Debug Device Information Structure length. " \
 | 
					        L"ERROR: Invalid Debug Device Information Structure length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *DbgDevInfoLen,
 | 
					        *DbgDevInfoLen,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,10 +28,10 @@
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiDsdt (
 | 
					ParseAcpiDsdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,23 +16,23 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI FACS Table.
 | 
					  An ACPI_PARSER array describing the ACPI FACS Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER FacsParser[] = {
 | 
					STATIC CONST ACPI_PARSER  FacsParser[] = {
 | 
				
			||||||
  {L"Signature", 4, 0, L"%c%c%c%c", Dump4Chars, NULL, NULL, NULL},
 | 
					  { L"Signature",                 4, 0,  L"%c%c%c%c",                Dump4Chars, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 4, 4, L"%d", NULL,  NULL, NULL, NULL},
 | 
					  { L"Length",                    4, 4,  L"%d",                      NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Hardware Signature", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Hardware Signature",        4, 8,  L"0x%x",                    NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Firmware Waking Vector", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Firmware Waking Vector",    4, 12, L"0x%x",                    NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Global Lock", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Global Lock",               4, 16, L"0x%x",                    NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                     4, 20, L"0x%x",                    NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"X Firmware Walking Vector", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"X Firmware Walking Vector", 8, 24, L"0x%lx",                   NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Version", 1, 32, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Version",                   1, 32, L"%d",                      NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 3, 33, L"%x %x %x", Dump3Chars, NULL, NULL, NULL},
 | 
					  { L"Reserved",                  3, 33, L"%x %x %x",                Dump3Chars, NULL, NULL, NULL },
 | 
				
			||||||
  {L"OSPM Flags", 4, 36, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"OSPM Flags",                4, 36, L"0x%x",                    NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 8, 40, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
 | 
					  { L"Reserved",                  8, 40, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Reserved", 8, 48, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
 | 
					  { L"Reserved",                  8, 48, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Reserved", 8, 56, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
 | 
					  { L"Reserved",                  8, 56, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
 | 
				
			||||||
    NULL}
 | 
					    NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -50,10 +50,10 @@ STATIC CONST ACPI_PARSER FacsParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiFacs (
 | 
					ParseAcpiFacs (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,33 +15,33 @@
 | 
				
			|||||||
#include "AcpiView.h"
 | 
					#include "AcpiView.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC CONST UINT32* DsdtAddress;
 | 
					STATIC CONST UINT32                  *DsdtAddress;
 | 
				
			||||||
STATIC CONST UINT64* X_DsdtAddress;
 | 
					STATIC CONST UINT64                  *X_DsdtAddress;
 | 
				
			||||||
STATIC CONST UINT32* Flags;
 | 
					STATIC CONST UINT32                  *Flags;
 | 
				
			||||||
STATIC CONST UINT32* FirmwareCtrl;
 | 
					STATIC CONST UINT32                  *FirmwareCtrl;
 | 
				
			||||||
STATIC CONST UINT64* X_FirmwareCtrl;
 | 
					STATIC CONST UINT64                  *X_FirmwareCtrl;
 | 
				
			||||||
STATIC CONST UINT8*  FadtMinorRevision;
 | 
					STATIC CONST UINT8                   *FadtMinorRevision;
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  A macro defining the Hardware reduced ACPI flag
 | 
					  A macro defining the Hardware reduced ACPI flag
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define HW_REDUCED_ACPI   BIT20
 | 
					#define HW_REDUCED_ACPI  BIT20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Offset to the FACS signature from the start of the FACS.
 | 
					  Offset to the FACS signature from the start of the FACS.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define FACS_SIGNATURE_OFFSET   0
 | 
					#define FACS_SIGNATURE_OFFSET  0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Offset to the FACS revision from the start of the FACS.
 | 
					  Offset to the FACS revision from the start of the FACS.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define FACS_VERSION_OFFSET     32
 | 
					#define FACS_VERSION_OFFSET  32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Offset to the FACS length from the start of the FACS.
 | 
					  Offset to the FACS length from the start of the FACS.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define FACS_LENGTH_OFFSET      4
 | 
					#define FACS_LENGTH_OFFSET  4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Get the ACPI XSDT header info.
 | 
					  Get the ACPI XSDT header info.
 | 
				
			||||||
@@ -63,18 +63,19 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateFirmwareCtrl (
 | 
					ValidateFirmwareCtrl (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  if (*(UINT32*)Ptr != 0) {
 | 
					  if (*(UINT32 *)Ptr != 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: Firmware Control must be zero for ARM platforms."
 | 
					      L"\nERROR: Firmware Control must be zero for ARM platforms."
 | 
				
			||||||
    );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -88,18 +89,19 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateXFirmwareCtrl (
 | 
					ValidateXFirmwareCtrl (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  if (*(UINT64*)Ptr != 0) {
 | 
					  if (*(UINT64 *)Ptr != 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: X Firmware Control must be zero for ARM platforms."
 | 
					      L"\nERROR: X Firmware Control must be zero for ARM platforms."
 | 
				
			||||||
    );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -113,83 +115,84 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateFlags (
 | 
					ValidateFlags (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  if (((*(UINT32*)Ptr) & HW_REDUCED_ACPI) == 0) {
 | 
					  if (((*(UINT32 *)Ptr) & HW_REDUCED_ACPI) == 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: HW_REDUCED_ACPI flag must be set for ARM platforms."
 | 
					      L"\nERROR: HW_REDUCED_ACPI flag must be set for ARM platforms."
 | 
				
			||||||
    );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI FADT Table.
 | 
					  An ACPI_PARSER array describing the ACPI FADT Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER FadtParser[] = {
 | 
					STATIC CONST ACPI_PARSER  FadtParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"FIRMWARE_CTRL", 4, 36, L"0x%x", NULL, (VOID**)&FirmwareCtrl,
 | 
					  { L"FIRMWARE_CTRL",              4,   36,  L"0x%x",  NULL,    (VOID **)&FirmwareCtrl,
 | 
				
			||||||
    ValidateFirmwareCtrl, NULL},
 | 
					    ValidateFirmwareCtrl,          NULL },
 | 
				
			||||||
  {L"DSDT", 4, 40, L"0x%x", NULL, (VOID**)&DsdtAddress, NULL, NULL},
 | 
					  { L"DSDT",                       4,   40,  L"0x%x",  NULL,    (VOID **)&DsdtAddress,      NULL,           NULL },
 | 
				
			||||||
  {L"Reserved", 1, 44, L"%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                   1,   44,  L"%x",    NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"Preferred_PM_Profile", 1, 45, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Preferred_PM_Profile",       1,   45,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"SCI_INT", 2, 46, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"SCI_INT",                    2,   46,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"SMI_CMD", 4, 48, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"SMI_CMD",                    4,   48,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"ACPI_ENABLE", 1, 52, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI_ENABLE",                1,   52,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"ACPI_DISABLE", 1, 53, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI_DISABLE",               1,   53,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"S4BIOS_REQ", 1, 54, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"S4BIOS_REQ",                 1,   54,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PSTATE_CNT", 1, 55, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PSTATE_CNT",                 1,   55,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM1a_EVT_BLK", 4, 56, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM1a_EVT_BLK",               4,   56,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM1b_EVT_BLK", 4, 60, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM1b_EVT_BLK",               4,   60,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM1a_CNT_BLK", 4, 64, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM1a_CNT_BLK",               4,   64,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM1b_CNT_BLK", 4, 68, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM1b_CNT_BLK",               4,   68,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM2_CNT_BLK", 4, 72, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM2_CNT_BLK",                4,   72,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM_TMR_BLK", 4, 76, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM_TMR_BLK",                 4,   76,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"GPE0_BLK", 4, 80, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GPE0_BLK",                   4,   80,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"GPE1_BLK", 4, 84, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GPE1_BLK",                   4,   84,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM1_EVT_LEN", 1, 88, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM1_EVT_LEN",                1,   88,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM1_CNT_LEN", 1, 89, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM1_CNT_LEN",                1,   89,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM2_CNT_LEN", 1, 90, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM2_CNT_LEN",                1,   90,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"PM_TMR_LEN", 1, 91, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PM_TMR_LEN",                 1,   91,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"GPE0_BLK_LEN", 1, 92, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GPE0_BLK_LEN",               1,   92,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"GPE1_BLK_LEN", 1, 93, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GPE1_BLK_LEN",               1,   93,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"GPE1_BASE", 1, 94, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GPE1_BASE",                  1,   94,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"CST_CNT", 1, 95, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"CST_CNT",                    1,   95,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"P_LVL2_LAT", 2, 96, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"P_LVL2_LAT",                 2,   96,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"P_LVL3_LAT", 2, 98, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"P_LVL3_LAT",                 2,   98,  L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"FLUSH_SIZE", 2, 100, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"FLUSH_SIZE",                 2,   100, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"FLUSH_STRIDE", 2, 102, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"FLUSH_STRIDE",               2,   102, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"DUTY_OFFSET", 1, 104, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"DUTY_OFFSET",                1,   104, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"DUTY_WIDTH", 1, 105, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"DUTY_WIDTH",                 1,   105, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"DAY_ALRM", 1, 106, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"DAY_ALRM",                   1,   106, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"MON_ALRM", 1, 107, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"MON_ALRM",                   1,   107, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"CENTURY", 1, 108, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"CENTURY",                    1,   108, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"IAPC_BOOT_ARCH", 2, 109, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"IAPC_BOOT_ARCH",             2,   109, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"Reserved", 1, 111, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                   1,   111, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"Flags", 4, 112, L"0x%x", NULL, (VOID**)&Flags, ValidateFlags, NULL},
 | 
					  { L"Flags",                      4,   112, L"0x%x",  NULL,    (VOID **)&Flags,            ValidateFlags,  NULL },
 | 
				
			||||||
  {L"RESET_REG", 12, 116, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"RESET_REG",                  12,  116, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"RESET_VALUE", 1, 128, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"RESET_VALUE",                1,   128, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"ARM_BOOT_ARCH", 2, 129, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ARM_BOOT_ARCH",              2,   129, L"0x%x",  NULL,    NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"FADT Minor Version", 1, 131, L"0x%x", NULL, (VOID**)&FadtMinorRevision,
 | 
					  { L"FADT Minor Version",         1,   131, L"0x%x",  NULL,    (VOID **)&FadtMinorRevision,
 | 
				
			||||||
    NULL, NULL},
 | 
					    NULL,                          NULL },
 | 
				
			||||||
  {L"X_FIRMWARE_CTRL", 8, 132, L"0x%lx", NULL, (VOID**)&X_FirmwareCtrl,
 | 
					  { L"X_FIRMWARE_CTRL",            8,   132, L"0x%lx", NULL,    (VOID **)&X_FirmwareCtrl,
 | 
				
			||||||
    ValidateXFirmwareCtrl, NULL},
 | 
					    ValidateXFirmwareCtrl,         NULL },
 | 
				
			||||||
  {L"X_DSDT", 8, 140, L"0x%lx", NULL, (VOID**)&X_DsdtAddress, NULL, NULL},
 | 
					  { L"X_DSDT",                     8,   140, L"0x%lx", NULL,    (VOID **)&X_DsdtAddress,    NULL,           NULL },
 | 
				
			||||||
  {L"X_PM1a_EVT_BLK", 12, 148, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_PM1a_EVT_BLK",             12,  148, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"X_PM1b_EVT_BLK", 12, 160, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_PM1b_EVT_BLK",             12,  160, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"X_PM1a_CNT_BLK", 12, 172, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_PM1a_CNT_BLK",             12,  172, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"X_PM1b_CNT_BLK", 12, 184, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_PM1b_CNT_BLK",             12,  184, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"X_PM2_CNT_BLK", 12, 196, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_PM2_CNT_BLK",              12,  196, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"X_PM_TMR_BLK", 12, 208, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_PM_TMR_BLK",               12,  208, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"X_GPE0_BLK", 12, 220, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_GPE0_BLK",                 12,  220, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"X_GPE1_BLK", 12, 232, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"X_GPE1_BLK",                 12,  232, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"SLEEP_CONTROL_REG", 12, 244, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"SLEEP_CONTROL_REG",          12,  244, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"SLEEP_STATUS_REG", 12, 256, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"SLEEP_STATUS_REG",           12,  256, NULL,     DumpGas, NULL,                       NULL,           NULL },
 | 
				
			||||||
  {L"Hypervisor VendorIdentity", 8, 268, L"%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Hypervisor VendorIdentity",  8,   268, L"%lx",   NULL,    NULL,                       NULL,           NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -206,19 +209,19 @@ STATIC CONST ACPI_PARSER FadtParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiFadt (
 | 
					ParseAcpiFadt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS              Status;
 | 
					  EFI_STATUS             Status;
 | 
				
			||||||
  UINT8*                  DsdtPtr;
 | 
					  UINT8                  *DsdtPtr;
 | 
				
			||||||
  UINT8*                  FirmwareCtrlPtr;
 | 
					  UINT8                  *FirmwareCtrlPtr;
 | 
				
			||||||
  UINT32                  FacsSignature;
 | 
					  UINT32                 FacsSignature;
 | 
				
			||||||
  UINT32                  FacsLength;
 | 
					  UINT32                 FacsLength;
 | 
				
			||||||
  UINT8                   FacsRevision;
 | 
					  UINT8                  FacsRevision;
 | 
				
			||||||
  PARSE_ACPI_TABLE_PROC   FacsParserProc;
 | 
					  PARSE_ACPI_TABLE_PROC  FacsParserProc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
    Trace,
 | 
					    Trace,
 | 
				
			||||||
@@ -233,7 +236,7 @@ ParseAcpiFadt (
 | 
				
			|||||||
    if (FadtMinorRevision != NULL) {
 | 
					    if (FadtMinorRevision != NULL) {
 | 
				
			||||||
      Print (L"\nSummary:\n");
 | 
					      Print (L"\nSummary:\n");
 | 
				
			||||||
      PrintFieldName (2, L"FADT Version");
 | 
					      PrintFieldName (2, L"FADT Version");
 | 
				
			||||||
      Print (L"%d.%d\n",  *AcpiHdrInfo.Revision, *FadtMinorRevision);
 | 
					      Print (L"%d.%d\n", *AcpiHdrInfo.Revision, *FadtMinorRevision);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (*GetAcpiXsdtHeaderInfo ()->OemTableId != *AcpiHdrInfo.OemTableId) {
 | 
					    if (*GetAcpiXsdtHeaderInfo ()->OemTableId != *AcpiHdrInfo.OemTableId) {
 | 
				
			||||||
@@ -245,9 +248,9 @@ ParseAcpiFadt (
 | 
				
			|||||||
  // If X_FIRMWARE_CTRL is not zero then use X_FIRMWARE_CTRL and ignore
 | 
					  // If X_FIRMWARE_CTRL is not zero then use X_FIRMWARE_CTRL and ignore
 | 
				
			||||||
  // FIRMWARE_CTRL, else use FIRMWARE_CTRL.
 | 
					  // FIRMWARE_CTRL, else use FIRMWARE_CTRL.
 | 
				
			||||||
  if ((X_FirmwareCtrl != NULL) && (*X_FirmwareCtrl != 0)) {
 | 
					  if ((X_FirmwareCtrl != NULL) && (*X_FirmwareCtrl != 0)) {
 | 
				
			||||||
    FirmwareCtrlPtr = (UINT8*)(UINTN)(*X_FirmwareCtrl);
 | 
					    FirmwareCtrlPtr = (UINT8 *)(UINTN)(*X_FirmwareCtrl);
 | 
				
			||||||
  } else if ((FirmwareCtrl != NULL) && (*FirmwareCtrl != 0)) {
 | 
					  } else if ((FirmwareCtrl != NULL) && (*FirmwareCtrl != 0)) {
 | 
				
			||||||
    FirmwareCtrlPtr = (UINT8*)(UINTN)(*FirmwareCtrl);
 | 
					    FirmwareCtrlPtr = (UINT8 *)(UINTN)(*FirmwareCtrl);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    FirmwareCtrlPtr = NULL;
 | 
					    FirmwareCtrlPtr = NULL;
 | 
				
			||||||
    // if HW_REDUCED_ACPI flag is not set, both FIRMWARE_CTRL and
 | 
					    // if HW_REDUCED_ACPI flag is not set, both FIRMWARE_CTRL and
 | 
				
			||||||
@@ -255,10 +258,13 @@ ParseAcpiFadt (
 | 
				
			|||||||
    // present.
 | 
					    // present.
 | 
				
			||||||
    if ((Trace) &&
 | 
					    if ((Trace) &&
 | 
				
			||||||
        (Flags != NULL) &&
 | 
					        (Flags != NULL) &&
 | 
				
			||||||
        ((*Flags & EFI_ACPI_6_3_HW_REDUCED_ACPI) != EFI_ACPI_6_3_HW_REDUCED_ACPI)) {
 | 
					        ((*Flags & EFI_ACPI_6_3_HW_REDUCED_ACPI) != EFI_ACPI_6_3_HW_REDUCED_ACPI))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (L"ERROR: No FACS table found, "
 | 
					      Print (
 | 
				
			||||||
               L"both X_FIRMWARE_CTRL and FIRMWARE_CTRL are zero.\n");
 | 
					        L"ERROR: No FACS table found, "
 | 
				
			||||||
 | 
					        L"both X_FIRMWARE_CTRL and FIRMWARE_CTRL are zero.\n"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -266,13 +272,13 @@ ParseAcpiFadt (
 | 
				
			|||||||
    // The FACS table does not have a standard ACPI table header. Therefore,
 | 
					    // The FACS table does not have a standard ACPI table header. Therefore,
 | 
				
			||||||
    // the signature, length and version needs to be initially parsed.
 | 
					    // the signature, length and version needs to be initially parsed.
 | 
				
			||||||
    // The FACS signature is 4 bytes starting at offset 0.
 | 
					    // The FACS signature is 4 bytes starting at offset 0.
 | 
				
			||||||
    FacsSignature = *(UINT32*)(FirmwareCtrlPtr + FACS_SIGNATURE_OFFSET);
 | 
					    FacsSignature = *(UINT32 *)(FirmwareCtrlPtr + FACS_SIGNATURE_OFFSET);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // The FACS length is 4 bytes starting at offset 4.
 | 
					    // The FACS length is 4 bytes starting at offset 4.
 | 
				
			||||||
    FacsLength = *(UINT32*)(FirmwareCtrlPtr + FACS_LENGTH_OFFSET);
 | 
					    FacsLength = *(UINT32 *)(FirmwareCtrlPtr + FACS_LENGTH_OFFSET);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // The FACS version is 1 byte starting at offset 32.
 | 
					    // The FACS version is 1 byte starting at offset 32.
 | 
				
			||||||
    FacsRevision = *(UINT8*)(FirmwareCtrlPtr + FACS_VERSION_OFFSET);
 | 
					    FacsRevision = *(UINT8 *)(FirmwareCtrlPtr + FACS_VERSION_OFFSET);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Trace = ProcessTableReportOptions (
 | 
					    Trace = ProcessTableReportOptions (
 | 
				
			||||||
              FacsSignature,
 | 
					              FacsSignature,
 | 
				
			||||||
@@ -298,12 +304,12 @@ ParseAcpiFadt (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // If X_DSDT is valid then use X_DSDT and ignore DSDT, else use DSDT.
 | 
					  // If X_DSDT is valid then use X_DSDT and ignore DSDT, else use DSDT.
 | 
				
			||||||
  if ((X_DsdtAddress != NULL) && (*X_DsdtAddress != 0)) {
 | 
					  if ((X_DsdtAddress != NULL) && (*X_DsdtAddress != 0)) {
 | 
				
			||||||
    DsdtPtr = (UINT8*)(UINTN)(*X_DsdtAddress);
 | 
					    DsdtPtr = (UINT8 *)(UINTN)(*X_DsdtAddress);
 | 
				
			||||||
  } else if ((DsdtAddress != NULL) && (*DsdtAddress != 0)) {
 | 
					  } else if ((DsdtAddress != NULL) && (*DsdtAddress != 0)) {
 | 
				
			||||||
    DsdtPtr = (UINT8*)(UINTN)(*DsdtAddress);
 | 
					    DsdtPtr = (UINT8 *)(UINTN)(*DsdtAddress);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    // Both DSDT and X_DSDT cannot be invalid.
 | 
					    // Both DSDT and X_DSDT cannot be invalid.
 | 
				
			||||||
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
    if (Trace) {
 | 
					    if (Trace) {
 | 
				
			||||||
      // The DSDT Table is mandatory for ARM systems
 | 
					      // The DSDT Table is mandatory for ARM systems
 | 
				
			||||||
      // as the CPU information MUST be presented in
 | 
					      // as the CPU information MUST be presented in
 | 
				
			||||||
@@ -311,7 +317,8 @@ ParseAcpiFadt (
 | 
				
			|||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (L"ERROR: Both X_DSDT and DSDT are invalid.\n");
 | 
					      Print (L"ERROR: Both X_DSDT and DSDT are invalid.\n");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,16 +15,16 @@
 | 
				
			|||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// "The number of GT Block Timers must be less than or equal to 8"
 | 
					// "The number of GT Block Timers must be less than or equal to 8"
 | 
				
			||||||
#define GT_BLOCK_TIMER_COUNT_MAX 8
 | 
					#define GT_BLOCK_TIMER_COUNT_MAX  8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC CONST UINT32* GtdtPlatformTimerCount;
 | 
					STATIC CONST UINT32                  *GtdtPlatformTimerCount;
 | 
				
			||||||
STATIC CONST UINT32* GtdtPlatformTimerOffset;
 | 
					STATIC CONST UINT32                  *GtdtPlatformTimerOffset;
 | 
				
			||||||
STATIC CONST UINT8*  PlatformTimerType;
 | 
					STATIC CONST UINT8                   *PlatformTimerType;
 | 
				
			||||||
STATIC CONST UINT16* PlatformTimerLength;
 | 
					STATIC CONST UINT16                  *PlatformTimerLength;
 | 
				
			||||||
STATIC CONST UINT32* GtBlockTimerCount;
 | 
					STATIC CONST UINT32                  *GtBlockTimerCount;
 | 
				
			||||||
STATIC CONST UINT32* GtBlockTimerOffset;
 | 
					STATIC CONST UINT32                  *GtBlockTimerOffset;
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the GT Block timer count.
 | 
					  This function validates the GT Block timer count.
 | 
				
			||||||
@@ -37,13 +37,13 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateGtBlockTimerCount (
 | 
					ValidateGtBlockTimerCount (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 BlockTimerCount;
 | 
					  UINT32  BlockTimerCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  BlockTimerCount = *(UINT32*)Ptr;
 | 
					  BlockTimerCount = *(UINT32 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (BlockTimerCount > GT_BLOCK_TIMER_COUNT_MAX) {
 | 
					  if (BlockTimerCount > GT_BLOCK_TIMER_COUNT_MAX) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -66,13 +66,13 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateGtFrameNumber (
 | 
					ValidateGtFrameNumber (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT8 FrameNumber;
 | 
					  UINT8  FrameNumber;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FrameNumber = *(UINT8*)Ptr;
 | 
					  FrameNumber = *(UINT8 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (FrameNumber >= GT_BLOCK_TIMER_COUNT_MAX) {
 | 
					  if (FrameNumber >= GT_BLOCK_TIMER_COUNT_MAX) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -87,82 +87,82 @@ ValidateGtFrameNumber (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI GTDT Table.
 | 
					  An ACPI_PARSER array describing the ACPI GTDT Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GtdtParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GtdtParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"CntControlBase Physical Address", 8, 36, L"0x%lx", NULL, NULL,
 | 
					  { L"CntControlBase Physical Address",8,      36,  L"0x%lx", NULL, NULL,
 | 
				
			||||||
   NULL, NULL},
 | 
					    NULL,                             NULL },
 | 
				
			||||||
  {L"Reserved", 4, 44, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                      4,      44,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
  {L"Secure EL1 timer GSIV", 4, 48, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Secure EL1 timer GSIV",         4,      48,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
  {L"Secure EL1 timer FLAGS", 4, 52, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Secure EL1 timer FLAGS",        4,      52,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Non-Secure EL1 timer GSIV", 4, 56, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Non-Secure EL1 timer GSIV",     4,      56,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
  {L"Non-Secure EL1 timer FLAGS", 4, 60, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Non-Secure EL1 timer FLAGS",    4,      60,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Virtual timer GSIV", 4, 64, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Virtual timer GSIV",            4,      64,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
  {L"Virtual timer FLAGS", 4, 68, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Virtual timer FLAGS",           4,      68,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Non-Secure EL2 timer GSIV", 4, 72, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Non-Secure EL2 timer GSIV",     4,      72,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
  {L"Non-Secure EL2 timer FLAGS", 4, 76, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Non-Secure EL2 timer FLAGS",    4,      76,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"CntReadBase Physical address", 8, 80, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"CntReadBase Physical address",  8,      80,  L"0x%lx", NULL, NULL,NULL,  NULL },
 | 
				
			||||||
  {L"Platform Timer Count", 4, 88, L"%d", NULL,
 | 
					  { L"Platform Timer Count",          4,      88,  L"%d",    NULL,
 | 
				
			||||||
   (VOID**)&GtdtPlatformTimerCount, NULL, NULL},
 | 
					    (VOID **)&GtdtPlatformTimerCount, NULL,   NULL },
 | 
				
			||||||
  {L"Platform Timer Offset", 4, 92, L"0x%x", NULL,
 | 
					  { L"Platform Timer Offset",         4,      92,  L"0x%x",  NULL,
 | 
				
			||||||
   (VOID**)&GtdtPlatformTimerOffset, NULL, NULL},
 | 
					    (VOID **)&GtdtPlatformTimerOffset,NULL,   NULL },
 | 
				
			||||||
  {L"Virtual EL2 Timer GSIV", 4, 96, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Virtual EL2 Timer GSIV",        4,      96,  L"0x%x",  NULL, NULL,NULL,  NULL },
 | 
				
			||||||
  {L"Virtual EL2 Timer Flags", 4, 100, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Virtual EL2 Timer Flags",       4,      100, L"0x%x",  NULL, NULL,NULL,  NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Platform timer header.
 | 
					  An ACPI_PARSER array describing the Platform timer header.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GtPlatformTimerHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GtPlatformTimerHeaderParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, NULL, NULL, (VOID**)&PlatformTimerType, NULL, NULL},
 | 
					  { L"Type",     1, 0, NULL, NULL, (VOID **)&PlatformTimerType,   NULL, NULL },
 | 
				
			||||||
  {L"Length", 2, 1, NULL, NULL, (VOID**)&PlatformTimerLength, NULL, NULL},
 | 
					  { L"Length",   2, 1, NULL, NULL, (VOID **)&PlatformTimerLength, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 1, 3, NULL, NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved", 1, 3, NULL, NULL, NULL,                          NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Platform GT Block.
 | 
					  An ACPI_PARSER array describing the Platform GT Block.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GtBlockParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GtBlockParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                          1, 0,  L"%d",    NULL, NULL,                         NULL, NULL },
 | 
				
			||||||
  {L"Length", 2, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                        2, 1,  L"%d",    NULL, NULL,                         NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 1, 3, L"%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                      1, 3,  L"%x",    NULL, NULL,                         NULL, NULL },
 | 
				
			||||||
  {L"Physical address (CntCtlBase)", 8, 4, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical address (CntCtlBase)", 8, 4,  L"0x%lx", NULL, NULL,                         NULL, NULL },
 | 
				
			||||||
  {L"Timer Count", 4, 12, L"%d", NULL, (VOID**)&GtBlockTimerCount,
 | 
					  { L"Timer Count",                   4, 12, L"%d",    NULL, (VOID **)&GtBlockTimerCount,
 | 
				
			||||||
   ValidateGtBlockTimerCount, NULL},
 | 
					    ValidateGtBlockTimerCount, NULL },
 | 
				
			||||||
  {L"Timer Offset", 4, 16, L"%d", NULL, (VOID**)&GtBlockTimerOffset, NULL,
 | 
					  { L"Timer Offset",                  4, 16, L"%d",    NULL, (VOID **)&GtBlockTimerOffset, NULL,
 | 
				
			||||||
    NULL}
 | 
					    NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GT Block timer.
 | 
					  An ACPI_PARSER array describing the GT Block timer.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GtBlockTimerParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GtBlockTimerParser[] = {
 | 
				
			||||||
  {L"Frame Number", 1, 0, L"%d", NULL, NULL, ValidateGtFrameNumber, NULL},
 | 
					  { L"Frame Number",                   1, 0,  L"%d",       NULL,       NULL, ValidateGtFrameNumber, NULL },
 | 
				
			||||||
  {L"Reserved", 3, 1, L"%x %x %x", Dump3Chars, NULL, NULL, NULL},
 | 
					  { L"Reserved",                       3, 1,  L"%x %x %x", Dump3Chars, NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Physical address (CntBaseX)", 8, 4, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical address (CntBaseX)",    8, 4,  L"0x%lx",    NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Physical address (CntEL0BaseX)", 8, 12, L"0x%lx", NULL, NULL, NULL,
 | 
					  { L"Physical address (CntEL0BaseX)", 8, 12, L"0x%lx",    NULL,       NULL, NULL,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Physical Timer GSIV", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical Timer GSIV",            4, 20, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Physical Timer Flags", 4, 24, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical Timer Flags",           4, 24, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Virtual Timer GSIV", 4, 28, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Virtual Timer GSIV",             4, 28, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Virtual Timer Flags", 4, 32, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Virtual Timer Flags",            4, 32, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Common Flags", 4, 36, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Common Flags",                   4, 36, L"0x%x",     NULL,       NULL, NULL,                  NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Platform Watchdog.
 | 
					  An ACPI_PARSER array describing the Platform Watchdog.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER ArmGenericWatchdogParser[] = {
 | 
					STATIC CONST ACPI_PARSER  ArmGenericWatchdogParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                          1, 0,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 2, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                        2, 1,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 1, 3, L"%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                      1, 3,  L"%x",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"RefreshFrame Physical address", 8, 4, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"RefreshFrame Physical address", 8, 4,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"ControlFrame Physical address", 8, 12, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"ControlFrame Physical address", 8, 12, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Watchdog Timer GSIV", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Watchdog Timer GSIV",           4, 20, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Watchdog Timer Flags", 4, 24, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Watchdog Timer Flags",          4, 24, L"0x%x",  NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -174,12 +174,12 @@ STATIC CONST ACPI_PARSER ArmGenericWatchdogParser[] = {
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpGTBlock (
 | 
					DumpGTBlock (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length
 | 
					  IN UINT16  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
    TRUE,
 | 
					    TRUE,
 | 
				
			||||||
@@ -193,7 +193,8 @@ DumpGTBlock (
 | 
				
			|||||||
  // Check if the values used to control the parsing logic have been
 | 
					  // Check if the values used to control the parsing logic have been
 | 
				
			||||||
  // successfully read.
 | 
					  // successfully read.
 | 
				
			||||||
  if ((GtBlockTimerCount == NULL) ||
 | 
					  if ((GtBlockTimerCount == NULL) ||
 | 
				
			||||||
      (GtBlockTimerOffset == NULL)) {
 | 
					      (GtBlockTimerOffset == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient GT Block Structure length. Length = %d.\n",
 | 
					      L"ERROR: Insufficient GT Block Structure length. Length = %d.\n",
 | 
				
			||||||
@@ -203,12 +204,13 @@ DumpGTBlock (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = *GtBlockTimerOffset;
 | 
					  Offset = *GtBlockTimerOffset;
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Parse the specified number of GT Block Timer Structures or the GT Block
 | 
					  // Parse the specified number of GT Block Timer Structures or the GT Block
 | 
				
			||||||
  // Structure buffer length. Whichever is minimum.
 | 
					  // Structure buffer length. Whichever is minimum.
 | 
				
			||||||
  while ((Index++ < *GtBlockTimerCount) &&
 | 
					  while ((Index++ < *GtBlockTimerCount) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    Offset += ParseAcpi (
 | 
					    Offset += ParseAcpi (
 | 
				
			||||||
                TRUE,
 | 
					                TRUE,
 | 
				
			||||||
                2,
 | 
					                2,
 | 
				
			||||||
@@ -229,8 +231,8 @@ DumpGTBlock (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpWatchdogTimer (
 | 
					DumpWatchdogTimer (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length
 | 
					  IN UINT16  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -262,15 +264,15 @@ DumpWatchdogTimer (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiGtdt (
 | 
					ParseAcpiGtdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT8* TimerPtr;
 | 
					  UINT8   *TimerPtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -288,7 +290,8 @@ ParseAcpiGtdt (
 | 
				
			|||||||
  // Check if the values used to control the parsing logic have been
 | 
					  // Check if the values used to control the parsing logic have been
 | 
				
			||||||
  // successfully read.
 | 
					  // successfully read.
 | 
				
			||||||
  if ((GtdtPlatformTimerCount == NULL) ||
 | 
					  if ((GtdtPlatformTimerCount == NULL) ||
 | 
				
			||||||
      (GtdtPlatformTimerOffset == NULL)) {
 | 
					      (GtdtPlatformTimerOffset == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient table length. AcpiTableLength = %d.\n",
 | 
					      L"ERROR: Insufficient table length. AcpiTableLength = %d.\n",
 | 
				
			||||||
@@ -298,13 +301,14 @@ ParseAcpiGtdt (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TimerPtr = Ptr + *GtdtPlatformTimerOffset;
 | 
					  TimerPtr = Ptr + *GtdtPlatformTimerOffset;
 | 
				
			||||||
  Offset = *GtdtPlatformTimerOffset;
 | 
					  Offset   = *GtdtPlatformTimerOffset;
 | 
				
			||||||
  Index = 0;
 | 
					  Index    = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Parse the specified number of Platform Timer Structures or the GTDT
 | 
					  // Parse the specified number of Platform Timer Structures or the GTDT
 | 
				
			||||||
  // buffer length. Whichever is minimum.
 | 
					  // buffer length. Whichever is minimum.
 | 
				
			||||||
  while ((Index++ < *GtdtPlatformTimerCount) &&
 | 
					  while ((Index++ < *GtdtPlatformTimerCount) &&
 | 
				
			||||||
         (Offset < AcpiTableLength)) {
 | 
					         (Offset < AcpiTableLength))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    // Parse the Platform Timer Header to obtain Length and Type
 | 
					    // Parse the Platform Timer Header to obtain Length and Type
 | 
				
			||||||
    ParseAcpi (
 | 
					    ParseAcpi (
 | 
				
			||||||
      FALSE,
 | 
					      FALSE,
 | 
				
			||||||
@@ -318,11 +322,12 @@ ParseAcpiGtdt (
 | 
				
			|||||||
    // Check if the values used to control the parsing logic have been
 | 
					    // Check if the values used to control the parsing logic have been
 | 
				
			||||||
    // successfully read.
 | 
					    // successfully read.
 | 
				
			||||||
    if ((PlatformTimerType == NULL) ||
 | 
					    if ((PlatformTimerType == NULL) ||
 | 
				
			||||||
        (PlatformTimerLength == NULL)) {
 | 
					        (PlatformTimerLength == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"Platform Timer Structure header. Length = %d.\n",
 | 
					        L"Platform Timer Structure header. Length = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -330,11 +335,12 @@ ParseAcpiGtdt (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate Platform Timer Structure length
 | 
					    // Validate Platform Timer Structure length
 | 
				
			||||||
    if ((*PlatformTimerLength == 0) ||
 | 
					    if ((*PlatformTimerLength == 0) ||
 | 
				
			||||||
        ((Offset + (*PlatformTimerLength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*PlatformTimerLength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid Platform Timer Structure length. " \
 | 
					        L"ERROR: Invalid Platform Timer Structure length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *PlatformTimerLength,
 | 
					        *PlatformTimerLength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
@@ -359,6 +365,6 @@ ParseAcpiGtdt (
 | 
				
			|||||||
    } // switch
 | 
					    } // switch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TimerPtr += *PlatformTimerLength;
 | 
					    TimerPtr += *PlatformTimerLength;
 | 
				
			||||||
    Offset += *PlatformTimerLength;
 | 
					    Offset   += *PlatformTimerLength;
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,27 +21,27 @@
 | 
				
			|||||||
#include "AcpiView.h"
 | 
					#include "AcpiView.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Maximum Memory Domain matrix print size.
 | 
					// Maximum Memory Domain matrix print size.
 | 
				
			||||||
#define MAX_MEMORY_DOMAIN_TARGET_PRINT_MATRIX    10
 | 
					#define MAX_MEMORY_DOMAIN_TARGET_PRINT_MATRIX  10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC CONST UINT16*  HmatStructureType;
 | 
					STATIC CONST UINT16  *HmatStructureType;
 | 
				
			||||||
STATIC CONST UINT32*  HmatStructureLength;
 | 
					STATIC CONST UINT32  *HmatStructureLength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST UINT32*  NumberInitiatorProximityDomain;
 | 
					STATIC CONST UINT32  *NumberInitiatorProximityDomain;
 | 
				
			||||||
STATIC CONST UINT32*  NumberTargetProximityDomain;
 | 
					STATIC CONST UINT32  *NumberTargetProximityDomain;
 | 
				
			||||||
STATIC CONST
 | 
					STATIC CONST
 | 
				
			||||||
EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS*
 | 
					EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS *
 | 
				
			||||||
SllbiFlags;
 | 
					  SllbiFlags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST UINT8*   SllbiDataType;
 | 
					STATIC CONST UINT8   *SllbiDataType;
 | 
				
			||||||
STATIC CONST UINT16*  NumberSMBIOSHandles;
 | 
					STATIC CONST UINT16  *NumberSMBIOSHandles;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Names of System Locality Latency Bandwidth Information (SLLBI) data types
 | 
					  Names of System Locality Latency Bandwidth Information (SLLBI) data types
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST CHAR16* SllbiNames[] = {
 | 
					STATIC CONST CHAR16  *SllbiNames[] = {
 | 
				
			||||||
  L"Access %sLatency%s",
 | 
					  L"Access %sLatency%s",
 | 
				
			||||||
  L"Read %sLatency%s",
 | 
					  L"Read %sLatency%s",
 | 
				
			||||||
  L"Write %sLatency%s",
 | 
					  L"Write %sLatency%s",
 | 
				
			||||||
@@ -61,15 +61,15 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateCacheAttributes (
 | 
					ValidateCacheAttributes (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES*
 | 
					  EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES *
 | 
				
			||||||
  Attributes;
 | 
					    Attributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Attributes =
 | 
					  Attributes =
 | 
				
			||||||
    (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES*)Ptr;
 | 
					    (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Attributes->TotalCacheLevels > 0x3) {
 | 
					  if (Attributes->TotalCacheLevels > 0x3) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -78,6 +78,7 @@ ValidateCacheAttributes (
 | 
				
			|||||||
      Attributes->TotalCacheLevels
 | 
					      Attributes->TotalCacheLevels
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Attributes->CacheLevel > 0x3) {
 | 
					  if (Attributes->CacheLevel > 0x3) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
@@ -85,6 +86,7 @@ ValidateCacheAttributes (
 | 
				
			|||||||
      Attributes->CacheLevel
 | 
					      Attributes->CacheLevel
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Attributes->CacheAssociativity > 0x2) {
 | 
					  if (Attributes->CacheAssociativity > 0x2) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
@@ -92,6 +94,7 @@ ValidateCacheAttributes (
 | 
				
			|||||||
      Attributes->CacheAssociativity
 | 
					      Attributes->CacheAssociativity
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Attributes->WritePolicy > 0x2) {
 | 
					  if (Attributes->WritePolicy > 0x2) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
@@ -111,15 +114,15 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpCacheAttributes (
 | 
					DumpCacheAttributes (
 | 
				
			||||||
  IN CONST CHAR16* Format OPTIONAL,
 | 
					  IN CONST CHAR16  *Format OPTIONAL,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES*
 | 
					  EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES *
 | 
				
			||||||
  Attributes;
 | 
					    Attributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Attributes =
 | 
					  Attributes =
 | 
				
			||||||
    (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES*)Ptr;
 | 
					    (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Print (L"\n");
 | 
					  Print (L"\n");
 | 
				
			||||||
  PrintFieldName (4, L"Total Cache Levels");
 | 
					  PrintFieldName (4, L"Total Cache Levels");
 | 
				
			||||||
@@ -137,55 +140,55 @@ DumpCacheAttributes (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI HMAT Table.
 | 
					  An ACPI_PARSER array describing the ACPI HMAT Table.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER HmatParser[] = {
 | 
					STATIC CONST ACPI_PARSER  HmatParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Reserved", 4, 36, NULL, NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",                   4,36, NULL, NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the HMAT structure header.
 | 
					  An ACPI_PARSER array describing the HMAT structure header.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER HmatStructureHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  HmatStructureHeaderParser[] = {
 | 
				
			||||||
  {L"Type", 2, 0, NULL, NULL, (VOID**)&HmatStructureType, NULL, NULL},
 | 
					  { L"Type",     2, 0, NULL, NULL, (VOID **)&HmatStructureType,   NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, NULL, NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved", 2, 2, NULL, NULL, NULL,                          NULL, NULL },
 | 
				
			||||||
  {L"Length", 4, 4, NULL, NULL, (VOID**)&HmatStructureLength, NULL, NULL}
 | 
					  { L"Length",   4, 4, NULL, NULL, (VOID **)&HmatStructureLength, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI PARSER array describing the Memory Proximity Domain Attributes
 | 
					  An ACPI PARSER array describing the Memory Proximity Domain Attributes
 | 
				
			||||||
  Structure - Type 0.
 | 
					  Structure - Type 0.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER MemProximityDomainAttributeParser[] = {
 | 
					STATIC CONST ACPI_PARSER  MemProximityDomainAttributeParser[] = {
 | 
				
			||||||
  {L"Type", 2, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                        2, 0,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                    2, 2,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 4, 4, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                      4, 4,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 2, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                       2, 8,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 10, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                    2, 10, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Proximity Dom for initiator", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Dom for initiator", 4, 12, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Proximity Dom for memory", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Dom for memory",    4, 16, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                    4, 20, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                    8, 24, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",                    8, 32, L"0x%lx", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI PARSER array describing the System Locality Latency and Bandwidth
 | 
					  An ACPI PARSER array describing the System Locality Latency and Bandwidth
 | 
				
			||||||
  Information Structure - Type 1.
 | 
					  Information Structure - Type 1.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SllbiParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SllbiParser[] = {
 | 
				
			||||||
  {L"Type", 2, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                          2, 0,  L"0x%x",  NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                      2, 2,  L"0x%x",  NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Length", 4, 4, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                        4, 4,  L"%d",    NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Flags", 1, 8, L"0x%x", NULL, (VOID**)&SllbiFlags, NULL, NULL},
 | 
					  { L"Flags",                         1, 8,  L"0x%x",  NULL, (VOID **)&SllbiFlags,    NULL, NULL },
 | 
				
			||||||
  {L"Data type", 1, 9, L"0x%x", NULL, (VOID**)&SllbiDataType, NULL, NULL},
 | 
					  { L"Data type",                     1, 9,  L"0x%x",  NULL, (VOID **)&SllbiDataType, NULL, NULL },
 | 
				
			||||||
  {L"Min Transfer Size", 1, 10, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Min Transfer Size",             1, 10, L"%d",    NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 1, 11, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                      1, 11, L"0x%x",  NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Initiator Proximity Dom Count", 4, 12, L"%d", NULL,
 | 
					  { L"Initiator Proximity Dom Count", 4, 12, L"%d",    NULL,
 | 
				
			||||||
    (VOID**)&NumberInitiatorProximityDomain, NULL, NULL},
 | 
					    (VOID **)&NumberInitiatorProximityDomain, NULL, NULL },
 | 
				
			||||||
  {L"Target Proximity Dom Count", 4, 16, L"%d", NULL,
 | 
					  { L"Target Proximity Dom Count",    4, 16, L"%d",    NULL,
 | 
				
			||||||
    (VOID**)&NumberTargetProximityDomain, NULL, NULL},
 | 
					    (VOID **)&NumberTargetProximityDomain, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                      4, 20, L"0x%x",  NULL, NULL,                    NULL, NULL },
 | 
				
			||||||
  {L"Entry Base Unit", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Entry Base Unit",               8, 24, L"0x%lx", NULL, NULL,                    NULL, NULL }
 | 
				
			||||||
  // initiator Proximity Domain list ...
 | 
					  // initiator Proximity Domain list ...
 | 
				
			||||||
  // target Proximity Domain list ...
 | 
					  // target Proximity Domain list ...
 | 
				
			||||||
  // Latency/Bandwidth matrix ...
 | 
					  // Latency/Bandwidth matrix ...
 | 
				
			||||||
@@ -195,18 +198,18 @@ STATIC CONST ACPI_PARSER SllbiParser[] = {
 | 
				
			|||||||
  An ACPI PARSER array describing the Memory Side Cache Information
 | 
					  An ACPI PARSER array describing the Memory Side Cache Information
 | 
				
			||||||
  Structure - Type 2.
 | 
					  Structure - Type 2.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER MemSideCacheInfoParser[] = {
 | 
					STATIC CONST ACPI_PARSER  MemSideCacheInfoParser[] = {
 | 
				
			||||||
  {L"Type", 2, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                     2, 0,  L"0x%x",  NULL,                NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                 2, 2,  L"0x%x",  NULL,                NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 4, 4, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                   4, 4,  L"%d",    NULL,                NULL, NULL, NULL },
 | 
				
			||||||
  {L"Proximity Dom for memory", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Dom for memory", 4, 8,  L"0x%x",  NULL,                NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                 4, 12, L"0x%x",  NULL,                NULL, NULL, NULL },
 | 
				
			||||||
  {L"Memory Side Cache Size", 8, 16, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Memory Side Cache Size",   8, 16, L"0x%lx", NULL,                NULL, NULL, NULL },
 | 
				
			||||||
  {L"Cache Attributes", 4, 24, NULL, DumpCacheAttributes, NULL,
 | 
					  { L"Cache Attributes",         4, 24, NULL,     DumpCacheAttributes, NULL,
 | 
				
			||||||
    ValidateCacheAttributes, NULL},
 | 
					    ValidateCacheAttributes, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 28, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                 2, 28, L"0x%x",  NULL,                NULL, NULL, NULL },
 | 
				
			||||||
  {L"SMBIOS Handle Count", 2, 30, L"%d", NULL,
 | 
					  { L"SMBIOS Handle Count",      2, 30, L"%d",    NULL,
 | 
				
			||||||
    (VOID**)&NumberSMBIOSHandles, NULL, NULL}
 | 
					    (VOID **)&NumberSMBIOSHandles, NULL, NULL }
 | 
				
			||||||
  // SMBIOS handles List ...
 | 
					  // SMBIOS handles List ...
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -222,8 +225,8 @@ STATIC CONST ACPI_PARSER MemSideCacheInfoParser[] = {
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpMpda (
 | 
					DumpMpda (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -248,13 +251,13 @@ DumpMpda (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpSllbi (
 | 
					DumpSllbi (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CONST UINT32* InitiatorProximityDomainList;
 | 
					  CONST UINT32  *InitiatorProximityDomainList;
 | 
				
			||||||
  CONST UINT32* TargetProximityDomainList;
 | 
					  CONST UINT32  *TargetProximityDomainList;
 | 
				
			||||||
  CONST UINT16* LatencyBandwidthMatrix;
 | 
					  CONST UINT16  *LatencyBandwidthMatrix;
 | 
				
			||||||
  UINT32        Offset;
 | 
					  UINT32        Offset;
 | 
				
			||||||
  CHAR16        Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
					  CHAR16        Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
				
			||||||
  CHAR16        SecondBuffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
					  CHAR16        SecondBuffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
				
			||||||
@@ -278,11 +281,12 @@ DumpSllbi (
 | 
				
			|||||||
  if ((SllbiFlags == NULL)                     ||
 | 
					  if ((SllbiFlags == NULL)                     ||
 | 
				
			||||||
      (SllbiDataType == NULL)                  ||
 | 
					      (SllbiDataType == NULL)                  ||
 | 
				
			||||||
      (NumberInitiatorProximityDomain == NULL) ||
 | 
					      (NumberInitiatorProximityDomain == NULL) ||
 | 
				
			||||||
      (NumberTargetProximityDomain == NULL)) {
 | 
					      (NumberTargetProximityDomain == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					      L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
        L"SLLBI structure header. Length = %d.\n",
 | 
					      L"SLLBI structure header. Length = %d.\n",
 | 
				
			||||||
      Length
 | 
					      Length
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -306,10 +310,10 @@ DumpSllbi (
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  InitiatorProximityDomainList = (UINT32*) (Ptr + Offset);
 | 
					  InitiatorProximityDomainList = (UINT32 *)(Ptr + Offset);
 | 
				
			||||||
  TargetProximityDomainList = InitiatorProximityDomainList +
 | 
					  TargetProximityDomainList    = InitiatorProximityDomainList +
 | 
				
			||||||
                              *NumberInitiatorProximityDomain;
 | 
					                                 *NumberInitiatorProximityDomain;
 | 
				
			||||||
  LatencyBandwidthMatrix = (UINT16*) (TargetProximityDomainList +
 | 
					  LatencyBandwidthMatrix = (UINT16 *)(TargetProximityDomainList +
 | 
				
			||||||
                                      *NumberTargetProximityDomain);
 | 
					                                      *NumberTargetProximityDomain);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Display each element of the Initiator Proximity Domain list
 | 
					  // Display each element of the Initiator Proximity Domain list
 | 
				
			||||||
@@ -350,6 +354,7 @@ DumpSllbi (
 | 
				
			|||||||
    Print (L"Error: Unkown Data Type. DataType = 0x%x.\n", *SllbiDataType);
 | 
					    Print (L"Error: Unkown Data Type. DataType = 0x%x.\n", *SllbiDataType);
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  StrCpyS (Buffer, sizeof (Buffer), SllbiNames[*SllbiDataType]);
 | 
					  StrCpyS (Buffer, sizeof (Buffer), SllbiNames[*SllbiDataType]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Adjust base name depending on Memory Hierarchy in this Structure
 | 
					  // Adjust base name depending on Memory Hierarchy in this Structure
 | 
				
			||||||
@@ -381,7 +386,6 @@ DumpSllbi (
 | 
				
			|||||||
        SllbiFlags->MemoryHierarchy
 | 
					        SllbiFlags->MemoryHierarchy
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  } // switch
 | 
					  } // switch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (*NumberTargetProximityDomain <= MAX_MEMORY_DOMAIN_TARGET_PRINT_MATRIX) {
 | 
					  if (*NumberTargetProximityDomain <= MAX_MEMORY_DOMAIN_TARGET_PRINT_MATRIX) {
 | 
				
			||||||
@@ -400,34 +404,41 @@ DumpSllbi (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for (IndexTarget = 0;
 | 
					    for (IndexTarget = 0;
 | 
				
			||||||
         IndexTarget < *NumberTargetProximityDomain;
 | 
					         IndexTarget < *NumberTargetProximityDomain;
 | 
				
			||||||
         IndexTarget++) {
 | 
					         IndexTarget++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      Print (L"    %2d", IndexTarget);
 | 
					      Print (L"    %2d", IndexTarget);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Print (L"\n      ---+");
 | 
					    Print (L"\n      ---+");
 | 
				
			||||||
    for (IndexTarget = 0;
 | 
					    for (IndexTarget = 0;
 | 
				
			||||||
         IndexTarget < *NumberTargetProximityDomain;
 | 
					         IndexTarget < *NumberTargetProximityDomain;
 | 
				
			||||||
         IndexTarget++) {
 | 
					         IndexTarget++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      Print (L"------");
 | 
					      Print (L"------");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Print (L"\n");
 | 
					    Print (L"\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TargetStartOffset = 0;
 | 
					    TargetStartOffset = 0;
 | 
				
			||||||
    for (IndexInitiator = 0;
 | 
					    for (IndexInitiator = 0;
 | 
				
			||||||
         IndexInitiator < *NumberInitiatorProximityDomain;
 | 
					         IndexInitiator < *NumberInitiatorProximityDomain;
 | 
				
			||||||
         IndexInitiator++) {
 | 
					         IndexInitiator++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      Print (L"      %2d |", IndexInitiator);
 | 
					      Print (L"      %2d |", IndexInitiator);
 | 
				
			||||||
      for (IndexTarget = 0;
 | 
					      for (IndexTarget = 0;
 | 
				
			||||||
           IndexTarget < *NumberTargetProximityDomain;
 | 
					           IndexTarget < *NumberTargetProximityDomain;
 | 
				
			||||||
           IndexTarget++) {
 | 
					           IndexTarget++)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L" %5d",
 | 
					          L" %5d",
 | 
				
			||||||
          LatencyBandwidthMatrix[TargetStartOffset + IndexTarget]
 | 
					          LatencyBandwidthMatrix[TargetStartOffset + IndexTarget]
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
      } // for Target
 | 
					      } // for Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"\n");
 | 
					      Print (L"\n");
 | 
				
			||||||
      TargetStartOffset += (*NumberTargetProximityDomain);
 | 
					      TargetStartOffset += (*NumberTargetProximityDomain);
 | 
				
			||||||
    } // for Initiator
 | 
					    } // for Initiator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Print (L"\n");
 | 
					    Print (L"\n");
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    // Display the latency/bandwidth matrix as a list
 | 
					    // Display the latency/bandwidth matrix as a list
 | 
				
			||||||
@@ -441,10 +452,12 @@ DumpSllbi (
 | 
				
			|||||||
    TargetStartOffset = 0;
 | 
					    TargetStartOffset = 0;
 | 
				
			||||||
    for (IndexInitiator = 0;
 | 
					    for (IndexInitiator = 0;
 | 
				
			||||||
         IndexInitiator < *NumberInitiatorProximityDomain;
 | 
					         IndexInitiator < *NumberInitiatorProximityDomain;
 | 
				
			||||||
         IndexInitiator++) {
 | 
					         IndexInitiator++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      for (IndexTarget = 0;
 | 
					      for (IndexTarget = 0;
 | 
				
			||||||
           IndexTarget < *NumberTargetProximityDomain;
 | 
					           IndexTarget < *NumberTargetProximityDomain;
 | 
				
			||||||
           IndexTarget++) {
 | 
					           IndexTarget++)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        UnicodeSPrint (
 | 
					        UnicodeSPrint (
 | 
				
			||||||
          SecondBuffer,
 | 
					          SecondBuffer,
 | 
				
			||||||
          sizeof (SecondBuffer),
 | 
					          sizeof (SecondBuffer),
 | 
				
			||||||
@@ -459,6 +472,7 @@ DumpSllbi (
 | 
				
			|||||||
          LatencyBandwidthMatrix[TargetStartOffset + IndexTarget]
 | 
					          LatencyBandwidthMatrix[TargetStartOffset + IndexTarget]
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
      } // for Target
 | 
					      } // for Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      TargetStartOffset += (*NumberTargetProximityDomain);
 | 
					      TargetStartOffset += (*NumberTargetProximityDomain);
 | 
				
			||||||
    } // for Initiator
 | 
					    } // for Initiator
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -474,11 +488,11 @@ DumpSllbi (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpMsci (
 | 
					DumpMsci (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length
 | 
					  IN UINT32  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CONST UINT16* SMBIOSHandlesList;
 | 
					  CONST UINT16  *SMBIOSHandlesList;
 | 
				
			||||||
  CHAR16        Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
					  CHAR16        Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
				
			||||||
  UINT32        Offset;
 | 
					  UINT32        Offset;
 | 
				
			||||||
  UINT16        Index;
 | 
					  UINT16        Index;
 | 
				
			||||||
@@ -498,7 +512,7 @@ DumpMsci (
 | 
				
			|||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					      L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
        L"MSCI structure header. Length = %d.\n",
 | 
					      L"MSCI structure header. Length = %d.\n",
 | 
				
			||||||
      Length
 | 
					      Length
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -515,7 +529,7 @@ DumpMsci (
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SMBIOSHandlesList = (UINT16*) (Ptr + Offset);
 | 
					  SMBIOSHandlesList = (UINT16 *)(Ptr + Offset);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (Index = 0; Index < *NumberSMBIOSHandles; Index++) {
 | 
					  for (Index = 0; Index < *NumberSMBIOSHandles; Index++) {
 | 
				
			||||||
    UnicodeSPrint (
 | 
					    UnicodeSPrint (
 | 
				
			||||||
@@ -553,14 +567,14 @@ DumpMsci (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiHmat (
 | 
					ParseAcpiHmat (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT8* HmatStructurePtr;
 | 
					  UINT8   *HmatStructurePtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -591,11 +605,12 @@ ParseAcpiHmat (
 | 
				
			|||||||
    // Check if the values used to control the parsing logic have been
 | 
					    // Check if the values used to control the parsing logic have been
 | 
				
			||||||
    // successfully read.
 | 
					    // successfully read.
 | 
				
			||||||
    if ((HmatStructureType == NULL) ||
 | 
					    if ((HmatStructureType == NULL) ||
 | 
				
			||||||
        (HmatStructureLength == NULL)) {
 | 
					        (HmatStructureLength == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"HMAT structure header. Length = %d.\n",
 | 
					        L"HMAT structure header. Length = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -603,11 +618,12 @@ ParseAcpiHmat (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate HMAT Structure length.
 | 
					    // Validate HMAT Structure length.
 | 
				
			||||||
    if ((*HmatStructureLength == 0) ||
 | 
					    if ((*HmatStructureLength == 0) ||
 | 
				
			||||||
        ((Offset + (*HmatStructureLength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*HmatStructureLength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid HMAT Structure length. " \
 | 
					        L"ERROR: Invalid HMAT Structure length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *HmatStructureLength,
 | 
					        *HmatStructureLength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
@@ -629,7 +645,7 @@ ParseAcpiHmat (
 | 
				
			|||||||
          );
 | 
					          );
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      case EFI_ACPI_6_4_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO:
 | 
					      case EFI_ACPI_6_4_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO:
 | 
				
			||||||
         DumpMsci (
 | 
					        DumpMsci (
 | 
				
			||||||
          HmatStructurePtr,
 | 
					          HmatStructurePtr,
 | 
				
			||||||
          *HmatStructureLength
 | 
					          *HmatStructureLength
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
@@ -638,7 +654,7 @@ ParseAcpiHmat (
 | 
				
			|||||||
        IncrementErrorCount ();
 | 
					        IncrementErrorCount ();
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L"ERROR: Unknown HMAT structure:"
 | 
					          L"ERROR: Unknown HMAT structure:"
 | 
				
			||||||
            L" Type = %d, Length = %d\n",
 | 
					          L" Type = %d, Length = %d\n",
 | 
				
			||||||
          *HmatStructureType,
 | 
					          *HmatStructureType,
 | 
				
			||||||
          *HmatStructureLength
 | 
					          *HmatStructureLength
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
@@ -646,6 +662,6 @@ ParseAcpiHmat (
 | 
				
			|||||||
    } // switch
 | 
					    } // switch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    HmatStructurePtr += *HmatStructureLength;
 | 
					    HmatStructurePtr += *HmatStructureLength;
 | 
				
			||||||
    Offset += *HmatStructureLength;
 | 
					    Offset           += *HmatStructureLength;
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,22 +16,22 @@
 | 
				
			|||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST UINT32* IortNodeCount;
 | 
					STATIC CONST UINT32  *IortNodeCount;
 | 
				
			||||||
STATIC CONST UINT32* IortNodeOffset;
 | 
					STATIC CONST UINT32  *IortNodeOffset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST UINT8*  IortNodeType;
 | 
					STATIC CONST UINT8   *IortNodeType;
 | 
				
			||||||
STATIC CONST UINT16* IortNodeLength;
 | 
					STATIC CONST UINT16  *IortNodeLength;
 | 
				
			||||||
STATIC CONST UINT32* IortIdMappingCount;
 | 
					STATIC CONST UINT32  *IortIdMappingCount;
 | 
				
			||||||
STATIC CONST UINT32* IortIdMappingOffset;
 | 
					STATIC CONST UINT32  *IortIdMappingOffset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST UINT32* InterruptContextCount;
 | 
					STATIC CONST UINT32  *InterruptContextCount;
 | 
				
			||||||
STATIC CONST UINT32* InterruptContextOffset;
 | 
					STATIC CONST UINT32  *InterruptContextOffset;
 | 
				
			||||||
STATIC CONST UINT32* PmuInterruptCount;
 | 
					STATIC CONST UINT32  *PmuInterruptCount;
 | 
				
			||||||
STATIC CONST UINT32* PmuInterruptOffset;
 | 
					STATIC CONST UINT32  *PmuInterruptOffset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST UINT32* ItsCount;
 | 
					STATIC CONST UINT32  *ItsCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the ID Mapping array count for the ITS node.
 | 
					  This function validates the ID Mapping array count for the ITS node.
 | 
				
			||||||
@@ -44,11 +44,11 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateItsIdMappingCount (
 | 
					ValidateItsIdMappingCount (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(UINT32*)Ptr != 0) {
 | 
					  if (*(UINT32 *)Ptr != 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (L"\nERROR: IORT ID Mapping count must be zero.");
 | 
					    Print (L"\nERROR: IORT ID Mapping count must be zero.");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -66,11 +66,11 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidatePmcgIdMappingCount (
 | 
					ValidatePmcgIdMappingCount (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(UINT32*)Ptr > 1) {
 | 
					  if (*(UINT32 *)Ptr > 1) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (L"\nERROR: IORT ID Mapping count must not be greater than 1.");
 | 
					    Print (L"\nERROR: IORT ID Mapping count must not be greater than 1.");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -87,11 +87,11 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateItsIdArrayReference (
 | 
					ValidateItsIdArrayReference (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(UINT32*)Ptr != 0) {
 | 
					  if (*(UINT32 *)Ptr != 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (L"\nERROR: IORT ID Mapping offset must be zero.");
 | 
					    Print (L"\nERROR: IORT ID Mapping offset must be zero.");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -119,135 +119,135 @@ ValidateItsIdArrayReference (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI IORT Table
 | 
					  An ACPI_PARSER array describing the ACPI IORT Table
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Number of IORT Nodes", 4, 36, L"%d", NULL,
 | 
					  { L"Number of IORT Nodes",       4,     36, L"%d",   NULL,
 | 
				
			||||||
   (VOID**)&IortNodeCount, NULL, NULL},
 | 
					    (VOID **)&IortNodeCount,       NULL,  NULL },
 | 
				
			||||||
  {L"Offset to Array of IORT Nodes", 4, 40, L"0x%x", NULL,
 | 
					  { L"Offset to Array of IORT Nodes",4,     40, L"0x%x", NULL,
 | 
				
			||||||
   (VOID**)&IortNodeOffset, NULL, NULL},
 | 
					    (VOID **)&IortNodeOffset,      NULL,  NULL },
 | 
				
			||||||
  {L"Reserved", 4, 44, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",                   4,     44, L"0x%x", NULL,NULL,NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT node header structure.
 | 
					  An ACPI_PARSER array describing the IORT node header structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodeHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodeHeaderParser[] = {
 | 
				
			||||||
  PARSE_IORT_NODE_HEADER (NULL, NULL)
 | 
					  PARSE_IORT_NODE_HEADER (NULL, NULL)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT SMMUv1/2 node.
 | 
					  An ACPI_PARSER array describing the IORT SMMUv1/2 node.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodeSmmuV1V2Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodeSmmuV1V2Parser[] = {
 | 
				
			||||||
  PARSE_IORT_NODE_HEADER (NULL, NULL),
 | 
					  PARSE_IORT_NODE_HEADER (NULL,       NULL),
 | 
				
			||||||
  {L"Base Address", 8, 16, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",                  8,    16,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Span", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Span",                          8,    24,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Model", 4, 32, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Model",                         4,    32,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 36, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                         4,    36,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reference to Global Interrupt Array", 4, 40, L"0x%x", NULL, NULL, NULL,
 | 
					  { L"Reference to Global Interrupt Array",4,    40,  L"0x%x",  NULL, NULL, NULL,
 | 
				
			||||||
   NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Number of context interrupts", 4, 44, L"%d", NULL,
 | 
					  { L"Number of context interrupts",  4,    44,  L"%d",    NULL,
 | 
				
			||||||
   (VOID**)&InterruptContextCount, NULL, NULL},
 | 
					    (VOID **)&InterruptContextCount,  NULL, NULL },
 | 
				
			||||||
  {L"Reference to Context Interrupt Array", 4, 48, L"0x%x", NULL,
 | 
					  { L"Reference to Context Interrupt Array",4,    48,  L"0x%x",  NULL,
 | 
				
			||||||
   (VOID**)&InterruptContextOffset, NULL, NULL},
 | 
					    (VOID **)&InterruptContextOffset, NULL, NULL },
 | 
				
			||||||
  {L"Number of PMU Interrupts", 4, 52, L"%d", NULL,
 | 
					  { L"Number of PMU Interrupts",      4,    52,  L"%d",    NULL,
 | 
				
			||||||
   (VOID**)&PmuInterruptCount, NULL, NULL},
 | 
					    (VOID **)&PmuInterruptCount,      NULL, NULL },
 | 
				
			||||||
  {L"Reference to PMU Interrupt Array", 4, 56, L"0x%x", NULL,
 | 
					  { L"Reference to PMU Interrupt Array",4,    56,  L"0x%x",  NULL,
 | 
				
			||||||
   (VOID**)&PmuInterruptOffset, NULL, NULL},
 | 
					    (VOID **)&PmuInterruptOffset,     NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Interrupt Array
 | 
					  // Interrupt Array
 | 
				
			||||||
  {L"SMMU_NSgIrpt", 4, 60, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"SMMU_NSgIrpt",                  4,    60,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"SMMU_NSgIrpt interrupt flags", 4, 64, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"SMMU_NSgIrpt interrupt flags",  4,    64,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"SMMU_NSgCfgIrpt", 4, 68, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"SMMU_NSgCfgIrpt",               4,    68,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"SMMU_NSgCfgIrpt interrupt flags", 4, 72, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"SMMU_NSgCfgIrpt interrupt flags",4,    72,  L"0x%x",  NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the SMMUv1/2 Node Interrupt Array.
 | 
					  An ACPI_PARSER array describing the SMMUv1/2 Node Interrupt Array.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER InterruptArrayParser[] = {
 | 
					STATIC CONST ACPI_PARSER  InterruptArrayParser[] = {
 | 
				
			||||||
  {L"Interrupt GSIV", 4, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Interrupt GSIV", 4, 0, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Flags",          4, 4, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT ID Mapping.
 | 
					  An ACPI_PARSER array describing the IORT ID Mapping.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodeIdMappingParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodeIdMappingParser[] = {
 | 
				
			||||||
  {L"Input base", 4, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Input base",       4, 0,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Number of IDs", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Number of IDs",    4, 4,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Output base", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Output base",      4, 8,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Output reference", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Output reference", 4, 12, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 16, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Flags",            4, 16, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT SMMUv3 node.
 | 
					  An ACPI_PARSER array describing the IORT SMMUv3 node.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodeSmmuV3Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodeSmmuV3Parser[] = {
 | 
				
			||||||
  PARSE_IORT_NODE_HEADER (NULL, NULL),
 | 
					  PARSE_IORT_NODE_HEADER (NULL, NULL),
 | 
				
			||||||
  {L"Base Address", 8, 16, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",            8,    16,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 24, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                   4,    24,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 28, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                4,    28,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"VATOS Address", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"VATOS Address",           8,    32,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Model", 4, 40, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Model",                   4,    40,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Event", 4, 44, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Event",                   4,    44,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"PRI", 4, 48, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PRI",                     4,    48,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"GERR", 4, 52, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GERR",                    4,    52,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Sync", 4, 56, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Sync",                    4,    56,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Proximity domain", 4, 60, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity domain",        4,    60,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Device ID mapping index", 4, 64, L"%d", NULL, NULL, NULL, NULL}
 | 
					  { L"Device ID mapping index", 4,    64,  L"%d",    NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT ITS node.
 | 
					  An ACPI_PARSER array describing the IORT ITS node.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodeItsParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodeItsParser[] = {
 | 
				
			||||||
  PARSE_IORT_NODE_HEADER (
 | 
					  PARSE_IORT_NODE_HEADER (
 | 
				
			||||||
    ValidateItsIdMappingCount,
 | 
					    ValidateItsIdMappingCount,
 | 
				
			||||||
    ValidateItsIdArrayReference
 | 
					    ValidateItsIdArrayReference
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
  {L"Number of ITSs", 4, 16, L"%d", NULL, (VOID**)&ItsCount, NULL}
 | 
					  { L"Number of ITSs",        4,16, L"%d", NULL, (VOID **)&ItsCount, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ITS ID.
 | 
					  An ACPI_PARSER array describing the ITS ID.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER ItsIdParser[] = {
 | 
					STATIC CONST ACPI_PARSER  ItsIdParser[] = {
 | 
				
			||||||
  { L"GIC ITS Identifier", 4, 0, L"%d", NULL, NULL, NULL }
 | 
					  { L"GIC ITS Identifier", 4, 0, L"%d", NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT Names Component node.
 | 
					  An ACPI_PARSER array describing the IORT Names Component node.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodeNamedComponentParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodeNamedComponentParser[] = {
 | 
				
			||||||
  PARSE_IORT_NODE_HEADER (NULL, NULL),
 | 
					  PARSE_IORT_NODE_HEADER (NULL, NULL),
 | 
				
			||||||
  {L"Node Flags", 4, 16, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Node Flags",              4,    16,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Memory access properties", 8, 20, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Memory access properties",8,    20,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Device memory address size limit", 1, 28, L"%d", NULL, NULL, NULL, NULL}
 | 
					  { L"Device memory address size limit",1,    28,  L"%d",    NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT Root Complex node.
 | 
					  An ACPI_PARSER array describing the IORT Root Complex node.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodeRootComplexParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodeRootComplexParser[] = {
 | 
				
			||||||
  PARSE_IORT_NODE_HEADER (NULL, NULL),
 | 
					  PARSE_IORT_NODE_HEADER (NULL, NULL),
 | 
				
			||||||
  {L"Memory access properties", 8, 16, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Memory access properties",8,    16,  L"0x%lx",    NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"ATS Attribute", 4, 24, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ATS Attribute",           4,    24,  L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"PCI Segment number", 4, 28, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Segment number",      4,    28,  L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Memory access size limit", 1, 32, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Memory access size limit",1,    32,  L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 3, 33, L"%x %x %x", Dump3Chars, NULL, NULL, NULL}
 | 
					  { L"Reserved",                3,    33,  L"%x %x %x", Dump3Chars, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IORT PMCG node.
 | 
					  An ACPI_PARSER array describing the IORT PMCG node.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IortNodePmcgParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IortNodePmcgParser[] = {
 | 
				
			||||||
  PARSE_IORT_NODE_HEADER (ValidatePmcgIdMappingCount, NULL),
 | 
					  PARSE_IORT_NODE_HEADER (ValidatePmcgIdMappingCount, NULL),
 | 
				
			||||||
  {L"Page 0 Base Address", 8, 16, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Page 0 Base Address",                           8,    16,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Overflow interrupt GSIV", 4, 24, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Overflow interrupt GSIV",                       4,    24,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Node reference", 4, 28, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Node reference",                                4,    28,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Page 1 Base Address", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Page 1 Base Address",                           8,    32,  L"0x%lx", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -260,20 +260,21 @@ STATIC CONST ACPI_PARSER IortNodePmcgParser[] = {
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIortNodeIdMappings (
 | 
					DumpIortNodeIdMappings (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT32 Length,
 | 
					  IN UINT32  Length,
 | 
				
			||||||
  IN UINT32 MappingCount
 | 
					  IN UINT32  MappingCount
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  CHAR8  Buffer[40];  // Used for AsciiName param of ParseAcpi
 | 
					  CHAR8   Buffer[40]; // Used for AsciiName param of ParseAcpi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
  Offset = 0;
 | 
					  Offset = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while ((Index < MappingCount) &&
 | 
					  while ((Index < MappingCount) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    AsciiSPrint (
 | 
					    AsciiSPrint (
 | 
				
			||||||
      Buffer,
 | 
					      Buffer,
 | 
				
			||||||
      sizeof (Buffer),
 | 
					      sizeof (Buffer),
 | 
				
			||||||
@@ -304,15 +305,15 @@ DumpIortNodeIdMappings (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIortNodeSmmuV1V2 (
 | 
					DumpIortNodeSmmuV1V2 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length,
 | 
					  IN UINT16  Length,
 | 
				
			||||||
  IN UINT32 MappingCount,
 | 
					  IN UINT32  MappingCount,
 | 
				
			||||||
  IN UINT32 MappingOffset
 | 
					  IN UINT32  MappingOffset
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  CHAR8  Buffer[50];  // Used for AsciiName param of ParseAcpi
 | 
					  CHAR8   Buffer[50]; // Used for AsciiName param of ParseAcpi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
    TRUE,
 | 
					    TRUE,
 | 
				
			||||||
@@ -328,7 +329,8 @@ DumpIortNodeSmmuV1V2 (
 | 
				
			|||||||
  if ((InterruptContextCount == NULL)   ||
 | 
					  if ((InterruptContextCount == NULL)   ||
 | 
				
			||||||
      (InterruptContextOffset == NULL)  ||
 | 
					      (InterruptContextOffset == NULL)  ||
 | 
				
			||||||
      (PmuInterruptCount == NULL)       ||
 | 
					      (PmuInterruptCount == NULL)       ||
 | 
				
			||||||
      (PmuInterruptOffset == NULL)) {
 | 
					      (PmuInterruptOffset == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient SMMUv1/2 node length. Length = %d\n",
 | 
					      L"ERROR: Insufficient SMMUv1/2 node length. Length = %d\n",
 | 
				
			||||||
@@ -338,10 +340,11 @@ DumpIortNodeSmmuV1V2 (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = *InterruptContextOffset;
 | 
					  Offset = *InterruptContextOffset;
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while ((Index < *InterruptContextCount) &&
 | 
					  while ((Index < *InterruptContextCount) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    AsciiSPrint (
 | 
					    AsciiSPrint (
 | 
				
			||||||
      Buffer,
 | 
					      Buffer,
 | 
				
			||||||
      sizeof (Buffer),
 | 
					      sizeof (Buffer),
 | 
				
			||||||
@@ -360,10 +363,11 @@ DumpIortNodeSmmuV1V2 (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = *PmuInterruptOffset;
 | 
					  Offset = *PmuInterruptOffset;
 | 
				
			||||||
  Index = 0;
 | 
					  Index  = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while ((Index < *PmuInterruptCount) &&
 | 
					  while ((Index < *PmuInterruptCount) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    AsciiSPrint (
 | 
					    AsciiSPrint (
 | 
				
			||||||
      Buffer,
 | 
					      Buffer,
 | 
				
			||||||
      sizeof (Buffer),
 | 
					      sizeof (Buffer),
 | 
				
			||||||
@@ -400,10 +404,10 @@ DumpIortNodeSmmuV1V2 (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIortNodeSmmuV3 (
 | 
					DumpIortNodeSmmuV3 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length,
 | 
					  IN UINT16  Length,
 | 
				
			||||||
  IN UINT32 MappingCount,
 | 
					  IN UINT32  MappingCount,
 | 
				
			||||||
  IN UINT32 MappingOffset
 | 
					  IN UINT32  MappingOffset
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -431,22 +435,22 @@ DumpIortNodeSmmuV3 (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIortNodeIts (
 | 
					DumpIortNodeIts (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length
 | 
					  IN UINT16  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  CHAR8  Buffer[80];  // Used for AsciiName param of ParseAcpi
 | 
					  CHAR8   Buffer[80]; // Used for AsciiName param of ParseAcpi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = ParseAcpi (
 | 
					  Offset = ParseAcpi (
 | 
				
			||||||
            TRUE,
 | 
					             TRUE,
 | 
				
			||||||
            2,
 | 
					             2,
 | 
				
			||||||
            "ITS Node",
 | 
					             "ITS Node",
 | 
				
			||||||
            Ptr,
 | 
					             Ptr,
 | 
				
			||||||
            Length,
 | 
					             Length,
 | 
				
			||||||
            PARSER_PARAMS (IortNodeItsParser)
 | 
					             PARSER_PARAMS (IortNodeItsParser)
 | 
				
			||||||
            );
 | 
					             );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Check if the values used to control the parsing logic have been
 | 
					  // Check if the values used to control the parsing logic have been
 | 
				
			||||||
  // successfully read.
 | 
					  // successfully read.
 | 
				
			||||||
@@ -462,7 +466,8 @@ DumpIortNodeIts (
 | 
				
			|||||||
  Index = 0;
 | 
					  Index = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while ((Index < *ItsCount) &&
 | 
					  while ((Index < *ItsCount) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    AsciiSPrint (
 | 
					    AsciiSPrint (
 | 
				
			||||||
      Buffer,
 | 
					      Buffer,
 | 
				
			||||||
      sizeof (Buffer),
 | 
					      sizeof (Buffer),
 | 
				
			||||||
@@ -481,7 +486,6 @@ DumpIortNodeIts (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Note: ITS does not have the ID Mappings Array
 | 
					  // Note: ITS does not have the ID Mappings Array
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -496,13 +500,13 @@ DumpIortNodeIts (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIortNodeNamedComponent (
 | 
					DumpIortNodeNamedComponent (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length,
 | 
					  IN UINT16  Length,
 | 
				
			||||||
  IN UINT32 MappingCount,
 | 
					  IN UINT32  MappingCount,
 | 
				
			||||||
  IN UINT32 MappingOffset
 | 
					  IN UINT32  MappingOffset
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = ParseAcpi (
 | 
					  Offset = ParseAcpi (
 | 
				
			||||||
             TRUE,
 | 
					             TRUE,
 | 
				
			||||||
@@ -517,10 +521,12 @@ DumpIortNodeNamedComponent (
 | 
				
			|||||||
  PrintFieldName (2, L"Device Object Name");
 | 
					  PrintFieldName (2, L"Device Object Name");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while ((*(Ptr + Offset) != 0) &&
 | 
					  while ((*(Ptr + Offset) != 0) &&
 | 
				
			||||||
         (Offset < Length)) {
 | 
					         (Offset < Length))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    Print (L"%c", *(Ptr + Offset));
 | 
					    Print (L"%c", *(Ptr + Offset));
 | 
				
			||||||
    Offset++;
 | 
					    Offset++;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Print (L"\n");
 | 
					  Print (L"\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  DumpIortNodeIdMappings (
 | 
					  DumpIortNodeIdMappings (
 | 
				
			||||||
@@ -542,10 +548,10 @@ DumpIortNodeNamedComponent (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIortNodeRootComplex (
 | 
					DumpIortNodeRootComplex (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length,
 | 
					  IN UINT16  Length,
 | 
				
			||||||
  IN UINT32 MappingCount,
 | 
					  IN UINT32  MappingCount,
 | 
				
			||||||
  IN UINT32 MappingOffset
 | 
					  IN UINT32  MappingOffset
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -576,11 +582,11 @@ DumpIortNodeRootComplex (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIortNodePmcg (
 | 
					DumpIortNodePmcg (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8   *Ptr,
 | 
				
			||||||
  IN UINT16 Length,
 | 
					  IN UINT16  Length,
 | 
				
			||||||
  IN UINT32 MappingCount,
 | 
					  IN UINT32  MappingCount,
 | 
				
			||||||
  IN UINT32 MappingOffset
 | 
					  IN UINT32  MappingOffset
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
    TRUE,
 | 
					    TRUE,
 | 
				
			||||||
@@ -620,15 +626,15 @@ DumpIortNodePmcg (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiIort (
 | 
					ParseAcpiIort (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  UINT8* NodePtr;
 | 
					  UINT8   *NodePtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -646,7 +652,8 @@ ParseAcpiIort (
 | 
				
			|||||||
  // Check if the values used to control the parsing logic have been
 | 
					  // Check if the values used to control the parsing logic have been
 | 
				
			||||||
  // successfully read.
 | 
					  // successfully read.
 | 
				
			||||||
  if ((IortNodeCount == NULL) ||
 | 
					  if ((IortNodeCount == NULL) ||
 | 
				
			||||||
      (IortNodeOffset == NULL)) {
 | 
					      (IortNodeOffset == NULL))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient table length. AcpiTableLength = %d.\n",
 | 
					      L"ERROR: Insufficient table length. AcpiTableLength = %d.\n",
 | 
				
			||||||
@@ -655,14 +662,15 @@ ParseAcpiIort (
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = *IortNodeOffset;
 | 
					  Offset  = *IortNodeOffset;
 | 
				
			||||||
  NodePtr = Ptr + Offset;
 | 
					  NodePtr = Ptr + Offset;
 | 
				
			||||||
  Index = 0;
 | 
					  Index   = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Parse the specified number of IORT nodes or the IORT table buffer length.
 | 
					  // Parse the specified number of IORT nodes or the IORT table buffer length.
 | 
				
			||||||
  // Whichever is minimum.
 | 
					  // Whichever is minimum.
 | 
				
			||||||
  while ((Index++ < *IortNodeCount) &&
 | 
					  while ((Index++ < *IortNodeCount) &&
 | 
				
			||||||
         (Offset < AcpiTableLength)) {
 | 
					         (Offset < AcpiTableLength))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    // Parse the IORT Node Header
 | 
					    // Parse the IORT Node Header
 | 
				
			||||||
    ParseAcpi (
 | 
					    ParseAcpi (
 | 
				
			||||||
      FALSE,
 | 
					      FALSE,
 | 
				
			||||||
@@ -678,11 +686,12 @@ ParseAcpiIort (
 | 
				
			|||||||
    if ((IortNodeType == NULL)        ||
 | 
					    if ((IortNodeType == NULL)        ||
 | 
				
			||||||
        (IortNodeLength == NULL)      ||
 | 
					        (IortNodeLength == NULL)      ||
 | 
				
			||||||
        (IortIdMappingCount == NULL)  ||
 | 
					        (IortIdMappingCount == NULL)  ||
 | 
				
			||||||
        (IortIdMappingOffset == NULL)) {
 | 
					        (IortIdMappingOffset == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"IORT node header. Length = %d.\n",
 | 
					        L"IORT node header. Length = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -690,11 +699,12 @@ ParseAcpiIort (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate IORT Node length
 | 
					    // Validate IORT Node length
 | 
				
			||||||
    if ((*IortNodeLength == 0) ||
 | 
					    if ((*IortNodeLength == 0) ||
 | 
				
			||||||
        ((Offset + (*IortNodeLength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*IortNodeLength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid IORT Node length. " \
 | 
					        L"ERROR: Invalid IORT Node length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *IortNodeLength,
 | 
					        *IortNodeLength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
@@ -750,7 +760,7 @@ ParseAcpiIort (
 | 
				
			|||||||
          *IortNodeLength,
 | 
					          *IortNodeLength,
 | 
				
			||||||
          *IortIdMappingCount,
 | 
					          *IortIdMappingCount,
 | 
				
			||||||
          *IortIdMappingOffset
 | 
					          *IortIdMappingOffset
 | 
				
			||||||
        );
 | 
					          );
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      default:
 | 
					      default:
 | 
				
			||||||
@@ -759,6 +769,6 @@ ParseAcpiIort (
 | 
				
			|||||||
    } // switch
 | 
					    } // switch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NodePtr += (*IortNodeLength);
 | 
					    NodePtr += (*IortNodeLength);
 | 
				
			||||||
    Offset += (*IortNodeLength);
 | 
					    Offset  += (*IortNodeLength);
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,9 +19,9 @@
 | 
				
			|||||||
#include "MadtParser.h"
 | 
					#include "MadtParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local Variables
 | 
					// Local Variables
 | 
				
			||||||
STATIC CONST UINT8* MadtInterruptControllerType;
 | 
					STATIC CONST UINT8                   *MadtInterruptControllerType;
 | 
				
			||||||
STATIC CONST UINT8* MadtInterruptControllerLength;
 | 
					STATIC CONST UINT8                   *MadtInterruptControllerLength;
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the System Vector Base in the GICD.
 | 
					  This function validates the System Vector Base in the GICD.
 | 
				
			||||||
@@ -34,15 +34,15 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateGICDSystemVectorBase (
 | 
					ValidateGICDSystemVectorBase (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(UINT32*)Ptr != 0) {
 | 
					  if (*(UINT32 *)Ptr != 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: System Vector Base must be zero."
 | 
					      L"\nERROR: System Vector Base must be zero."
 | 
				
			||||||
    );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -57,13 +57,13 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateSpeOverflowInterrupt (
 | 
					ValidateSpeOverflowInterrupt (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT16 SpeOverflowInterrupt;
 | 
					  UINT16  SpeOverflowInterrupt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SpeOverflowInterrupt = *(UINT16*)Ptr;
 | 
					  SpeOverflowInterrupt = *(UINT16 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // SPE not supported by this processor
 | 
					  // SPE not supported by this processor
 | 
				
			||||||
  if (SpeOverflowInterrupt == 0) {
 | 
					  if (SpeOverflowInterrupt == 0) {
 | 
				
			||||||
@@ -73,183 +73,183 @@ ValidateSpeOverflowInterrupt (
 | 
				
			|||||||
  if ((SpeOverflowInterrupt < ARM_PPI_ID_MIN) ||
 | 
					  if ((SpeOverflowInterrupt < ARM_PPI_ID_MIN) ||
 | 
				
			||||||
      ((SpeOverflowInterrupt > ARM_PPI_ID_MAX) &&
 | 
					      ((SpeOverflowInterrupt > ARM_PPI_ID_MAX) &&
 | 
				
			||||||
       (SpeOverflowInterrupt < ARM_PPI_ID_EXTENDED_MIN)) ||
 | 
					       (SpeOverflowInterrupt < ARM_PPI_ID_EXTENDED_MIN)) ||
 | 
				
			||||||
      (SpeOverflowInterrupt > ARM_PPI_ID_EXTENDED_MAX)) {
 | 
					      (SpeOverflowInterrupt > ARM_PPI_ID_EXTENDED_MAX))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: SPE Overflow Interrupt ID of %d is not in the allowed PPI ID "
 | 
					      L"\nERROR: SPE Overflow Interrupt ID of %d is not in the allowed PPI ID "
 | 
				
			||||||
        L"ranges of %d-%d or %d-%d (for GICv3.1 or later).",
 | 
					      L"ranges of %d-%d or %d-%d (for GICv3.1 or later).",
 | 
				
			||||||
      SpeOverflowInterrupt,
 | 
					      SpeOverflowInterrupt,
 | 
				
			||||||
      ARM_PPI_ID_MIN,
 | 
					      ARM_PPI_ID_MIN,
 | 
				
			||||||
      ARM_PPI_ID_MAX,
 | 
					      ARM_PPI_ID_MAX,
 | 
				
			||||||
      ARM_PPI_ID_EXTENDED_MIN,
 | 
					      ARM_PPI_ID_EXTENDED_MIN,
 | 
				
			||||||
      ARM_PPI_ID_EXTENDED_MAX
 | 
					      ARM_PPI_ID_EXTENDED_MAX
 | 
				
			||||||
    );
 | 
					      );
 | 
				
			||||||
  } else if (SpeOverflowInterrupt != ARM_PPI_ID_PMBIRQ) {
 | 
					  } else if (SpeOverflowInterrupt != ARM_PPI_ID_PMBIRQ) {
 | 
				
			||||||
    IncrementWarningCount();
 | 
					    IncrementWarningCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nWARNING: SPE Overflow Interrupt ID of %d is not compliant with SBSA "
 | 
					      L"\nWARNING: SPE Overflow Interrupt ID of %d is not compliant with SBSA "
 | 
				
			||||||
        L"Level 3 PPI ID assignment: %d.",
 | 
					      L"Level 3 PPI ID assignment: %d.",
 | 
				
			||||||
      SpeOverflowInterrupt,
 | 
					      SpeOverflowInterrupt,
 | 
				
			||||||
      ARM_PPI_ID_PMBIRQ
 | 
					      ARM_PPI_ID_PMBIRQ
 | 
				
			||||||
    );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GICC Interrupt Controller Structure.
 | 
					  An ACPI_PARSER array describing the GICC Interrupt Controller Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GicCParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GicCParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                             1, 0,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                           1, 1,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                         2, 2,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"CPU Interface Number", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"CPU Interface Number",             4, 4,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"ACPI Processor UID", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI Processor UID",               4, 8,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                            4, 12, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Parking Protocol Version", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Parking Protocol Version",         4, 16, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Performance Interrupt GSIV", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Performance Interrupt GSIV",       4, 20, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Parked Address", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Parked Address",                   8, 24, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Physical Base Address", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical Base Address",            8, 32, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"GICV", 8, 40, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"GICV",                             8, 40, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"GICH", 8, 48, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"GICH",                             8, 48, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"VGIC Maintenance interrupt", 4, 56, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"VGIC Maintenance interrupt",       4, 56, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"GICR Base Address", 8, 60, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"GICR Base Address",                8, 60, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"MPIDR", 8, 68, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"MPIDR",                            8, 68, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Processor Power Efficiency Class", 1, 76, L"0x%x", NULL, NULL, NULL,
 | 
					  { L"Processor Power Efficiency Class", 1, 76, L"0x%x",  NULL, NULL, NULL,
 | 
				
			||||||
   NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Reserved", 1, 77, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                         1, 77, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"SPE overflow Interrupt", 2, 78, L"0x%x", NULL, NULL,
 | 
					  { L"SPE overflow Interrupt",           2, 78, L"0x%x",  NULL, NULL,
 | 
				
			||||||
    ValidateSpeOverflowInterrupt, NULL}
 | 
					    ValidateSpeOverflowInterrupt, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GICD Interrupt Controller Structure.
 | 
					  An ACPI_PARSER array describing the GICD Interrupt Controller Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GicDParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GicDParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                  1, 0,  L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                1, 1,  L"%d",       NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",              2, 2,  L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"GIC ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GIC ID",                4, 4,  L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Physical Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical Base Address", 8, 8,  L"0x%lx",    NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"System Vector Base", 4, 16, L"0x%x", NULL, NULL,
 | 
					  { L"System Vector Base",    4, 16, L"0x%x",     NULL,       NULL,
 | 
				
			||||||
    ValidateGICDSystemVectorBase, NULL},
 | 
					    ValidateGICDSystemVectorBase, NULL },
 | 
				
			||||||
  {L"GIC Version", 1, 20, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"GIC Version",           1, 20, L"%d",       NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 3, 21, L"%x %x %x", Dump3Chars, NULL, NULL, NULL}
 | 
					  { L"Reserved",              3, 21, L"%x %x %x", Dump3Chars, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the MSI Frame Interrupt Controller Structure.
 | 
					  An ACPI_PARSER array describing the MSI Frame Interrupt Controller Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GicMSIFrameParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GicMSIFrameParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                  1, 0,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                1, 1,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",              2, 2,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"MSI Frame ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"MSI Frame ID",          4, 4,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Physical Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical Base Address", 8, 8,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                 4, 16, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"SPI Count", 2, 20, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"SPI Count",             2, 20, L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"SPI Base", 2, 22, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"SPI Base",              2, 22, L"0x%x",  NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GICR Interrupt Controller Structure.
 | 
					  An ACPI_PARSER array describing the GICR Interrupt Controller Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GicRParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GicRParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                         1, 0,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                       1, 1,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                     2, 2,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Discovery Range Base Address", 8, 4, L"0x%lx", NULL, NULL, NULL,
 | 
					  { L"Discovery Range Base Address", 8, 4,  L"0x%lx", NULL, NULL, NULL,
 | 
				
			||||||
   NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Discovery Range Length", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Discovery Range Length",       4, 12, L"0x%x",  NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GIC ITS Interrupt Controller Structure.
 | 
					  An ACPI_PARSER array describing the GIC ITS Interrupt Controller Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER GicITSParser[] = {
 | 
					STATIC CONST ACPI_PARSER  GicITSParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                  1, 0,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                1, 1,  L"%d",    NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",              2, 2,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"GIC ITS ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"GIC ITS ID",            4, 4,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Physical Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Physical Base Address", 8, 8,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 16, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",              4, 16, L"0x%x",  NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the IO APIC Structure.
 | 
					  An ACPI_PARSER array describing the IO APIC Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IoApic[] = {
 | 
					STATIC CONST ACPI_PARSER  IoApic[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                         1, 0, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                       1, 1, L"%d",   NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"I/O APIC ID", 1, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"I/O APIC ID",                  1, 2, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 1, 3, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                     1, 3, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"I/O APIC Address", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"I/O APIC Address",             4, 4, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Global System Interrupt Base", 4, 8, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Global System Interrupt Base", 4, 8, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Interrupt Source Override Structure.
 | 
					  An ACPI_PARSER array describing the Interrupt Source Override Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER InterruptSourceOverride[] = {
 | 
					STATIC CONST ACPI_PARSER  InterruptSourceOverride[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                    1, 0, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                  1, 1, L"%d",   NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Bus", 1, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Bus",                     1, 2, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Source", 1, 3, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Source",                  1, 3, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Global System Interrupt", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Global System Interrupt", 4, 4, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 2, 8, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Flags",                   2, 8, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Processor Local x2APIC Structure.
 | 
					  An ACPI_PARSER array describing the Processor Local x2APIC Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER ProcessorLocalX2Apic[] = {
 | 
					STATIC CONST ACPI_PARSER  ProcessorLocalX2Apic[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",               1, 0,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",             1, 1,  L"%d",   NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",           2, 2,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"X2APIC ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"X2APIC ID",          4, 4,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",              4, 8,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"ACPI Processor UID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"ACPI Processor UID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Local x2APIC NMI Structure.
 | 
					  An ACPI_PARSER array describing the Local x2APIC NMI Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER LocalX2ApicNmi[] = {
 | 
					STATIC CONST ACPI_PARSER  LocalX2ApicNmi[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",               1, 0, L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",             1, 1, L"%d",       NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",              2, 2, L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"ACPI Processor UID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI Processor UID", 4, 4, L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Local x2APIC LINT#", 1, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Local x2APIC LINT#", 1, 8, L"0x%x",     NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 3, 9, L"0x%x%x%x", Dump3Chars, NULL, NULL, NULL}
 | 
					  { L"Reserved",           3, 9, L"0x%x%x%x", Dump3Chars, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI MADT Table.
 | 
					  An ACPI_PARSER array describing the ACPI MADT Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER MadtParser[] = {
 | 
					STATIC CONST ACPI_PARSER  MadtParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Local Interrupt Controller Address", 4, 36, L"0x%x", NULL, NULL, NULL,
 | 
					  { L"Local Interrupt Controller Address",4,         36, L"0x%x", NULL, NULL, NULL,
 | 
				
			||||||
   NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Flags", 4, 40, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Flags",                      4,         40, L"0x%x", NULL, NULL, NULL,NULL}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the MADT Interrupt Controller Structure Header Structure.
 | 
					  An ACPI_PARSER array describing the MADT Interrupt Controller Structure Header Structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER MadtInterruptControllerHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  MadtInterruptControllerHeaderParser[] = {
 | 
				
			||||||
  {NULL, 1, 0, NULL, NULL, (VOID**)&MadtInterruptControllerType, NULL, NULL},
 | 
					  { NULL,        1, 0, NULL, NULL, (VOID **)&MadtInterruptControllerType,   NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, NULL, NULL, (VOID**)&MadtInterruptControllerLength, NULL,
 | 
					  { L"Length",   1, 1, NULL, NULL, (VOID **)&MadtInterruptControllerLength, NULL,
 | 
				
			||||||
   NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, NULL, NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved", 2, 2, NULL, NULL, NULL,                                    NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -275,15 +275,15 @@ STATIC CONST ACPI_PARSER MadtInterruptControllerHeaderParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiMadt (
 | 
					ParseAcpiMadt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT8* InterruptContollerPtr;
 | 
					  UINT8   *InterruptContollerPtr;
 | 
				
			||||||
  UINT32 GICDCount;
 | 
					  UINT32  GICDCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GICDCount = 0;
 | 
					  GICDCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -315,11 +315,12 @@ ParseAcpiMadt (
 | 
				
			|||||||
    // Check if the values used to control the parsing logic have been
 | 
					    // Check if the values used to control the parsing logic have been
 | 
				
			||||||
    // successfully read.
 | 
					    // successfully read.
 | 
				
			||||||
    if ((MadtInterruptControllerType == NULL) ||
 | 
					    if ((MadtInterruptControllerType == NULL) ||
 | 
				
			||||||
        (MadtInterruptControllerLength == NULL)) {
 | 
					        (MadtInterruptControllerLength == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"Interrupt Controller Structure header. Length = %d.\n",
 | 
					        L"Interrupt Controller Structure header. Length = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -327,11 +328,12 @@ ParseAcpiMadt (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate Interrupt Controller Structure length
 | 
					    // Validate Interrupt Controller Structure length
 | 
				
			||||||
    if ((*MadtInterruptControllerLength == 0) ||
 | 
					    if ((*MadtInterruptControllerLength == 0) ||
 | 
				
			||||||
        ((Offset + (*MadtInterruptControllerLength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*MadtInterruptControllerLength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid Interrupt Controller Structure length. " \
 | 
					        L"ERROR: Invalid Interrupt Controller Structure length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *MadtInterruptControllerLength,
 | 
					        *MadtInterruptControllerLength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
@@ -340,7 +342,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (*MadtInterruptControllerType) {
 | 
					    switch (*MadtInterruptControllerType) {
 | 
				
			||||||
      case EFI_ACPI_6_3_GIC: {
 | 
					      case EFI_ACPI_6_3_GIC:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -352,15 +355,17 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_GICD: {
 | 
					      case EFI_ACPI_6_3_GICD:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        if (++GICDCount > 1) {
 | 
					        if (++GICDCount > 1) {
 | 
				
			||||||
          IncrementErrorCount ();
 | 
					          IncrementErrorCount ();
 | 
				
			||||||
          Print (
 | 
					          Print (
 | 
				
			||||||
            L"ERROR: Only one GICD must be present,"
 | 
					            L"ERROR: Only one GICD must be present,"
 | 
				
			||||||
              L" GICDCount = %d\n",
 | 
					            L" GICDCount = %d\n",
 | 
				
			||||||
            GICDCount
 | 
					            GICDCount
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -372,7 +377,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_GIC_MSI_FRAME: {
 | 
					      case EFI_ACPI_6_3_GIC_MSI_FRAME:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -384,7 +390,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_GICR: {
 | 
					      case EFI_ACPI_6_3_GICR:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -396,7 +403,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_GIC_ITS: {
 | 
					      case EFI_ACPI_6_3_GIC_ITS:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -408,7 +416,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_IO_APIC: {
 | 
					      case EFI_ACPI_6_3_IO_APIC:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -420,7 +429,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE: {
 | 
					      case EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -432,7 +442,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_PROCESSOR_LOCAL_X2APIC: {
 | 
					      case EFI_ACPI_6_3_PROCESSOR_LOCAL_X2APIC:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -444,7 +455,8 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_LOCAL_X2APIC_NMI: {
 | 
					      case EFI_ACPI_6_3_LOCAL_X2APIC_NMI:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -456,11 +468,12 @@ ParseAcpiMadt (
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      default: {
 | 
					      default:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        IncrementErrorCount ();
 | 
					        IncrementErrorCount ();
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L"ERROR: Unknown Interrupt Controller Structure,"
 | 
					          L"ERROR: Unknown Interrupt Controller Structure,"
 | 
				
			||||||
            L" Type = %d, Length = %d\n",
 | 
					          L" Type = %d, Length = %d\n",
 | 
				
			||||||
          *MadtInterruptControllerType,
 | 
					          *MadtInterruptControllerType,
 | 
				
			||||||
          *MadtInterruptControllerLength
 | 
					          *MadtInterruptControllerLength
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
@@ -468,6 +481,6 @@ ParseAcpiMadt (
 | 
				
			|||||||
    } // switch
 | 
					    } // switch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    InterruptContollerPtr += *MadtInterruptControllerLength;
 | 
					    InterruptContollerPtr += *MadtInterruptControllerLength;
 | 
				
			||||||
    Offset += *MadtInterruptControllerLength;
 | 
					    Offset                += *MadtInterruptControllerLength;
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,25 +16,25 @@
 | 
				
			|||||||
///
 | 
					///
 | 
				
			||||||
/// Level 3 base server system Private Peripheral Inerrupt (PPI) ID assignments
 | 
					/// Level 3 base server system Private Peripheral Inerrupt (PPI) ID assignments
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTP       30
 | 
					#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTP    30
 | 
				
			||||||
#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTPS      29
 | 
					#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTPS   29
 | 
				
			||||||
#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTHV      28
 | 
					#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTHV   28
 | 
				
			||||||
#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTV       27
 | 
					#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTV    27
 | 
				
			||||||
#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTHP      26
 | 
					#define ARM_PPI_ID_OVERFLOW_INTERRUPT_FROM_CNTHP   26
 | 
				
			||||||
#define ARM_PPI_ID_GIC_MAINTENANCE_INTERRUPT          25
 | 
					#define ARM_PPI_ID_GIC_MAINTENANCE_INTERRUPT       25
 | 
				
			||||||
#define ARM_PPI_ID_CTIIRQ                             24
 | 
					#define ARM_PPI_ID_CTIIRQ                          24
 | 
				
			||||||
#define ARM_PPI_ID_PERFORMANCE_MONITORS_INTERRUPT     23
 | 
					#define ARM_PPI_ID_PERFORMANCE_MONITORS_INTERRUPT  23
 | 
				
			||||||
#define ARM_PPI_ID_COMMIRQ                            22
 | 
					#define ARM_PPI_ID_COMMIRQ                         22
 | 
				
			||||||
#define ARM_PPI_ID_PMBIRQ                             21
 | 
					#define ARM_PPI_ID_PMBIRQ                          21
 | 
				
			||||||
#define ARM_PPI_ID_CNTHPS                             20
 | 
					#define ARM_PPI_ID_CNTHPS                          20
 | 
				
			||||||
#define ARM_PPI_ID_CNTHVS                             19
 | 
					#define ARM_PPI_ID_CNTHVS                          19
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// PPI ID allowed ranges
 | 
					/// PPI ID allowed ranges
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
#define ARM_PPI_ID_MAX              31
 | 
					#define ARM_PPI_ID_MAX           31
 | 
				
			||||||
#define ARM_PPI_ID_MIN              16
 | 
					#define ARM_PPI_ID_MIN           16
 | 
				
			||||||
#define ARM_PPI_ID_EXTENDED_MAX     1119
 | 
					#define ARM_PPI_ID_EXTENDED_MAX  1119
 | 
				
			||||||
#define ARM_PPI_ID_EXTENDED_MIN     1056
 | 
					#define ARM_PPI_ID_EXTENDED_MIN  1056
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // MADT_PARSER_H_
 | 
					#endif // MADT_PARSER_H_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,25 +14,25 @@
 | 
				
			|||||||
#include "AcpiTableParser.h"
 | 
					#include "AcpiTableParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI MCFG Table.
 | 
					  An ACPI_PARSER array describing the ACPI MCFG Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER McfgParser[] = {
 | 
					STATIC CONST ACPI_PARSER  McfgParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Reserved", 8, 36, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                   8,36, L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the PCI configuration Space Base Address structure.
 | 
					  An ACPI_PARSER array describing the PCI configuration Space Base Address structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PciCfgSpaceBaseAddrParser[] = {
 | 
					STATIC CONST ACPI_PARSER  PciCfgSpaceBaseAddrParser[] = {
 | 
				
			||||||
  {L"Base Address", 8, 0, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",          8, 0,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"PCI Segment Group No.", 2, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Segment Group No.", 2, 8,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Start Bus No.", 1, 10, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Start Bus No.",         1, 10, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"End Bus No.", 1, 11, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"End Bus No.",           1, 11, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",              4, 12, L"0x%x",  NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -50,15 +50,15 @@ STATIC CONST ACPI_PARSER PciCfgSpaceBaseAddrParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiMcfg (
 | 
					ParseAcpiMcfg (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 PciCfgOffset;
 | 
					  UINT32  PciCfgOffset;
 | 
				
			||||||
  UINT8* PciCfgSpacePtr;
 | 
					  UINT8   *PciCfgSpacePtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -85,6 +85,6 @@ ParseAcpiMcfg (
 | 
				
			|||||||
                     PARSER_PARAMS (PciCfgSpaceBaseAddrParser)
 | 
					                     PARSER_PARAMS (PciCfgSpaceBaseAddrParser)
 | 
				
			||||||
                     );
 | 
					                     );
 | 
				
			||||||
    PciCfgSpacePtr += PciCfgOffset;
 | 
					    PciCfgSpacePtr += PciCfgOffset;
 | 
				
			||||||
    Offset += PciCfgOffset;
 | 
					    Offset         += PciCfgOffset;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,12 +17,12 @@
 | 
				
			|||||||
#include "PcctParser.h"
 | 
					#include "PcctParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC UINT32* PccGlobalFlags;
 | 
					STATIC UINT32  *PccGlobalFlags;
 | 
				
			||||||
STATIC UINT8*  PccSubspaceLength;
 | 
					STATIC UINT8   *PccSubspaceLength;
 | 
				
			||||||
STATIC UINT8*  PccSubspaceType;
 | 
					STATIC UINT8   *PccSubspaceType;
 | 
				
			||||||
STATIC UINT8*  ExtendedPccSubspaceInterruptFlags;
 | 
					STATIC UINT8   *ExtendedPccSubspaceInterruptFlags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the length coded on 4 bytes of a shared memory range
 | 
					  This function validates the length coded on 4 bytes of a shared memory range
 | 
				
			||||||
@@ -35,16 +35,16 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateRangeLength4 (
 | 
					ValidateRangeLength4 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(UINT32*)Ptr < MIN_EXT_PCC_SUBSPACE_MEM_RANGE_LEN) {
 | 
					  if (*(UINT32 *)Ptr < MIN_EXT_PCC_SUBSPACE_MEM_RANGE_LEN) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nError: Shared memory range length is too short.\n"
 | 
					      L"\nError: Shared memory range length is too short.\n"
 | 
				
			||||||
      L"Length is %u when it should be greater than or equal to %u",
 | 
					      L"Length is %u when it should be greater than or equal to %u",
 | 
				
			||||||
      *(UINT32*)Ptr,
 | 
					      *(UINT32 *)Ptr,
 | 
				
			||||||
      MIN_EXT_PCC_SUBSPACE_MEM_RANGE_LEN
 | 
					      MIN_EXT_PCC_SUBSPACE_MEM_RANGE_LEN
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -61,16 +61,16 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateRangeLength8 (
 | 
					ValidateRangeLength8 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(UINT64*)Ptr <= MIN_MEMORY_RANGE_LENGTH) {
 | 
					  if (*(UINT64 *)Ptr <= MIN_MEMORY_RANGE_LENGTH) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nError: Shared memory range length is too short.\n"
 | 
					      L"\nError: Shared memory range length is too short.\n"
 | 
				
			||||||
      L"Length is %u when it should be greater than %u",
 | 
					      L"Length is %u when it should be greater than %u",
 | 
				
			||||||
      *(UINT64*)Ptr,
 | 
					      *(UINT64 *)Ptr,
 | 
				
			||||||
      MIN_MEMORY_RANGE_LENGTH
 | 
					      MIN_MEMORY_RANGE_LENGTH
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -87,14 +87,14 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidatePccMemoryIoGas (
 | 
					ValidatePccMemoryIoGas (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  switch (*(UINT8*)Ptr) {
 | 
					  switch (*(UINT8 *)Ptr) {
 | 
				
			||||||
#if !(defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
					 #if !(defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
				
			||||||
    case EFI_ACPI_6_4_SYSTEM_IO:
 | 
					    case EFI_ACPI_6_4_SYSTEM_IO:
 | 
				
			||||||
#endif //if not (defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
					 #endif //if not (defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
				
			||||||
    case EFI_ACPI_6_4_SYSTEM_MEMORY:
 | 
					    case EFI_ACPI_6_4_SYSTEM_MEMORY:
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
@@ -114,14 +114,14 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidatePccGas (
 | 
					ValidatePccGas (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  switch (*(UINT8*)Ptr) {
 | 
					  switch (*(UINT8 *)Ptr) {
 | 
				
			||||||
#if !(defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
					 #if !(defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
				
			||||||
    case EFI_ACPI_6_4_SYSTEM_IO:
 | 
					    case EFI_ACPI_6_4_SYSTEM_IO:
 | 
				
			||||||
#endif //if not (defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
					 #endif //if not (defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64))
 | 
				
			||||||
    case EFI_ACPI_6_4_FUNCTIONAL_FIXED_HARDWARE:
 | 
					    case EFI_ACPI_6_4_FUNCTIONAL_FIXED_HARDWARE:
 | 
				
			||||||
    case EFI_ACPI_6_4_SYSTEM_MEMORY:
 | 
					    case EFI_ACPI_6_4_SYSTEM_MEMORY:
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -142,8 +142,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidatePccDoorbellGas (
 | 
					ValidatePccDoorbellGas (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // For slave subspaces this field is optional, if not present the field
 | 
					  // For slave subspaces this field is optional, if not present the field
 | 
				
			||||||
@@ -152,7 +152,8 @@ ValidatePccDoorbellGas (
 | 
				
			|||||||
    if (IsZeroBuffer (
 | 
					    if (IsZeroBuffer (
 | 
				
			||||||
          Ptr,
 | 
					          Ptr,
 | 
				
			||||||
          sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE)
 | 
					          sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE)
 | 
				
			||||||
          )) {
 | 
					          ))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -172,8 +173,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidatePccIntAckGas (
 | 
					ValidatePccIntAckGas (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // If the subspace does not support interrupts or the interrupt is
 | 
					  // If the subspace does not support interrupts or the interrupt is
 | 
				
			||||||
@@ -183,12 +184,14 @@ ValidatePccIntAckGas (
 | 
				
			|||||||
  if (((*PccGlobalFlags & EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT) !=
 | 
					  if (((*PccGlobalFlags & EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT) !=
 | 
				
			||||||
       EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT) ||
 | 
					       EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT) ||
 | 
				
			||||||
      ((*ExtendedPccSubspaceInterruptFlags &
 | 
					      ((*ExtendedPccSubspaceInterruptFlags &
 | 
				
			||||||
       EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_MODE) ==
 | 
					        EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_MODE) ==
 | 
				
			||||||
       EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_MODE)) {
 | 
					       EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_MODE))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    if (IsZeroBuffer (
 | 
					    if (IsZeroBuffer (
 | 
				
			||||||
          Ptr,
 | 
					          Ptr,
 | 
				
			||||||
          sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE)
 | 
					          sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE)
 | 
				
			||||||
          )) {
 | 
					          ))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -207,8 +210,8 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidatePccErrStatusGas (
 | 
					ValidatePccErrStatusGas (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // This field is ignored by the OSPM on slave channels.
 | 
					  // This field is ignored by the OSPM on slave channels.
 | 
				
			||||||
@@ -230,19 +233,20 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidatePlatInterrupt (
 | 
					ValidatePlatInterrupt (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // If a slave subspace is present in the PCCT, then the global Platform
 | 
					  // If a slave subspace is present in the PCCT, then the global Platform
 | 
				
			||||||
  // Interrupt flag must be set to 1.
 | 
					  // Interrupt flag must be set to 1.
 | 
				
			||||||
  if ((*PccSubspaceType == EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_4_EXTENDED_PCC) &&
 | 
					  if ((*PccSubspaceType == EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_4_EXTENDED_PCC) &&
 | 
				
			||||||
      ((*PccGlobalFlags & EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT) !=
 | 
					      ((*PccGlobalFlags & EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT) !=
 | 
				
			||||||
        EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT)) {
 | 
					       EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nError: Global Platform interrupt flag must be set to 1" \
 | 
					      L"\nError: Global Platform interrupt flag must be set to 1" \
 | 
				
			||||||
        L" if a PCC type 4 structure is present in PCCT."
 | 
					      L" if a PCC type 4 structure is present in PCCT."
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -250,17 +254,17 @@ ValidatePlatInterrupt (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI PCCT Table.
 | 
					  An ACPI_PARSER array describing the ACPI PCCT Table.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PcctParser[] = {
 | 
					STATIC CONST ACPI_PARSER  PcctParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Flags", 4, 36, NULL, NULL, (VOID**)&PccGlobalFlags, NULL, NULL},
 | 
					  { L"Flags",                      4,  36, NULL, NULL, (VOID **)&PccGlobalFlags, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 8, 40, NULL, NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",                   8,  40, NULL, NULL, NULL,                     NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the platform communications channel subspace
 | 
					  An ACPI_PARSER array describing the platform communications channel subspace
 | 
				
			||||||
  structure header.
 | 
					  structure header.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PccSubspaceHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  PccSubspaceHeaderParser[] = {
 | 
				
			||||||
  PCC_SUBSPACE_HEADER ()
 | 
					  PCC_SUBSPACE_HEADER ()
 | 
				
			||||||
  // ... Type Specific Fields ...
 | 
					  // ... Type Specific Fields ...
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -268,126 +272,126 @@ STATIC CONST ACPI_PARSER PccSubspaceHeaderParser[] = {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Generic Communications Subspace - Type 0
 | 
					  An ACPI_PARSER array describing the Generic Communications Subspace - Type 0
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PccSubspaceType0Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  PccSubspaceType0Parser[] = {
 | 
				
			||||||
  PCC_SUBSPACE_HEADER (),
 | 
					  PCC_SUBSPACE_HEADER (),
 | 
				
			||||||
  {L"Reserved", 6, 2, L"%x %x %x %x %x %x", Dump6Chars, NULL, NULL, NULL},
 | 
					  { L"Reserved",         6,   2,  L"%x %x %x %x %x %x", Dump6Chars, NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",     8,   8,  L"0x%lx",             NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Memory Range Length", 8, 16, L"0x%lx", NULL, NULL, ValidateRangeLength8,
 | 
					  { L"Memory Range Length",8,   16, L"0x%lx",             NULL,       NULL, ValidateRangeLength8,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Doorbell Register", 12, 24, NULL, DumpGas, NULL, ValidatePccMemoryIoGas,
 | 
					  { L"Doorbell Register",12,  24, NULL,                 DumpGas,    NULL, ValidatePccMemoryIoGas,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Doorbell Preserve", 8, 36, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Preserve",8,   36, L"0x%lx",             NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Doorbell Write", 8, 44, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Write",   8,   44, L"0x%lx",             NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Nominal Latency", 4, 52, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Nominal Latency",  4,   52, L"%u",                NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Maximum Periodic Access Rate", 4, 56, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Maximum Periodic Access Rate",4,   56, L"%u",                NULL,       NULL, NULL,                   NULL },
 | 
				
			||||||
  {L"Minimum Request Turnaround Time", 2, 60, L"%u", NULL, NULL, NULL, NULL}
 | 
					  { L"Minimum Request Turnaround Time",2,   60, L"%u",                NULL,       NULL, NULL,                   NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the HW-Reduced Communications Subspace
 | 
					  An ACPI_PARSER array describing the HW-Reduced Communications Subspace
 | 
				
			||||||
  - Type 1
 | 
					  - Type 1
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PccSubspaceType1Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  PccSubspaceType1Parser[] = {
 | 
				
			||||||
  PCC_SUBSPACE_HEADER (),
 | 
					  PCC_SUBSPACE_HEADER (),
 | 
				
			||||||
  {L"Platform Interrupt", 4, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Platform Interrupt",4,   2,  L"0x%x",  NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Platform Interrupt Flags", 1, 6, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Platform Interrupt Flags",1,   6,  L"0x%x",  NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Reserved", 1, 7, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",         1,   7,  L"0x%x",  NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",     8,   8,  L"0x%lx", NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Memory Range Length", 8, 16, L"0x%lx", NULL, NULL, ValidateRangeLength8,
 | 
					  { L"Memory Range Length",8,   16, L"0x%lx", NULL,    NULL, ValidateRangeLength8,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Doorbell Register", 12, 24, NULL, DumpGas, NULL,
 | 
					  { L"Doorbell Register",12,  24, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccGas, NULL},
 | 
					    ValidatePccGas,      NULL },
 | 
				
			||||||
  {L"Doorbell Preserve", 8, 36, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Preserve",8,   36, L"0x%lx", NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Doorbell Write", 8, 44, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Write",   8,   44, L"0x%lx", NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Nominal Latency", 4, 52, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Nominal Latency",  4,   52, L"%u",    NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Maximum Periodic Access Rate", 4, 56, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Maximum Periodic Access Rate",4,   56, L"%u",    NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Minimum Request Turnaround Time", 2, 60, L"%u", NULL, NULL, NULL, NULL}
 | 
					  { L"Minimum Request Turnaround Time",2,   60, L"%u",    NULL,    NULL, NULL,                 NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the HW-Reduced Communications Subspace
 | 
					  An ACPI_PARSER array describing the HW-Reduced Communications Subspace
 | 
				
			||||||
  - Type 2
 | 
					  - Type 2
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PccSubspaceType2Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  PccSubspaceType2Parser[] = {
 | 
				
			||||||
  PCC_SUBSPACE_HEADER (),
 | 
					  PCC_SUBSPACE_HEADER (),
 | 
				
			||||||
  {L"Platform Interrupt", 4, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Platform Interrupt",4,   2,  L"0x%x",  NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Platform Interrupt Flags", 1, 6, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Platform Interrupt Flags",1,   6,  L"0x%x",  NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Reserved", 1, 7, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",         1,   7,  L"0x%x",  NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",     8,   8,  L"0x%lx", NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Memory Range Length", 8, 16, L"0x%lx", NULL, NULL, ValidateRangeLength8,
 | 
					  { L"Memory Range Length",8,   16, L"0x%lx", NULL,    NULL, ValidateRangeLength8,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Doorbell Register", 12, 24, NULL, DumpGas, NULL,
 | 
					  { L"Doorbell Register",12,  24, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccGas, NULL},
 | 
					    ValidatePccGas,      NULL },
 | 
				
			||||||
  {L"Doorbell Preserve", 8, 36, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Preserve",8,   36, L"0x%lx", NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Doorbell Write", 8, 44, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Write",   8,   44, L"0x%lx", NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Nominal Latency", 4, 52, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Nominal Latency",  4,   52, L"%u",    NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Maximum Periodic Access Rate", 4, 56, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Maximum Periodic Access Rate",4,   56, L"%u",    NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Minimum Request Turnaround Time", 2, 60, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Minimum Request Turnaround Time",2,   60, L"%u",    NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Platform Interrupt Ack Register", 12, 62, NULL, DumpGas, NULL,
 | 
					  { L"Platform Interrupt Ack Register",12,  62, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccGas, NULL},
 | 
					    ValidatePccGas,      NULL },
 | 
				
			||||||
  {L"Platform Interrupt Ack Preserve", 8, 74, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Platform Interrupt Ack Preserve",8,   74, L"0x%lx", NULL,    NULL, NULL,                 NULL },
 | 
				
			||||||
  {L"Platform Interrupt Ack Write", 8, 82, L"0x%lx", NULL, NULL,
 | 
					  { L"Platform Interrupt Ack Write",8,   82, L"0x%lx", NULL,    NULL,
 | 
				
			||||||
    NULL, NULL},
 | 
					    NULL,                NULL },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Extended PCC Subspaces - Type 3/4
 | 
					  An ACPI_PARSER array describing the Extended PCC Subspaces - Type 3/4
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PccSubspaceType3Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  PccSubspaceType3Parser[] = {
 | 
				
			||||||
  PCC_SUBSPACE_HEADER (),
 | 
					  PCC_SUBSPACE_HEADER (),
 | 
				
			||||||
  {L"Platform Interrupt", 4, 2, L"0x%x", NULL, NULL,
 | 
					  { L"Platform Interrupt",                      4,     2,   L"0x%x",  NULL,    NULL,
 | 
				
			||||||
    ValidatePlatInterrupt, NULL},
 | 
					    ValidatePlatInterrupt,                      NULL },
 | 
				
			||||||
  {L"Platform Interrupt Flags", 1, 6, L"0x%x", NULL,
 | 
					  { L"Platform Interrupt Flags",                1,     6,   L"0x%x",  NULL,
 | 
				
			||||||
    (VOID**)&ExtendedPccSubspaceInterruptFlags, NULL, NULL},
 | 
					    (VOID **)&ExtendedPccSubspaceInterruptFlags,NULL,  NULL },
 | 
				
			||||||
  {L"Reserved", 1, 7, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                                1,     7,   L"0x%x",  NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Base Address", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",                            8,     8,   L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Memory Range Length", 4, 16, L"0x%x", NULL, NULL, ValidateRangeLength4,
 | 
					  { L"Memory Range Length",                     4,     16,  L"0x%x",  NULL,    NULL,ValidateRangeLength4,
 | 
				
			||||||
    NULL},
 | 
					    NULL },
 | 
				
			||||||
  {L"Doorbell Register", 12, 20, NULL, DumpGas, NULL,
 | 
					  { L"Doorbell Register",                       12,    20,  NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccDoorbellGas, NULL},
 | 
					    ValidatePccDoorbellGas,                     NULL },
 | 
				
			||||||
  {L"Doorbell Preserve", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Preserve",                       8,     32,  L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Doorbell Write", 8, 40, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Write",                          8,     40,  L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Nominal Latency", 4, 48, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Nominal Latency",                         4,     48,  L"%u",    NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Maximum Periodic Access Rate", 4, 52, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Maximum Periodic Access Rate",            4,     52,  L"%u",    NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Minimum Request Turnaround Time", 4, 56, L"%u", NULL, NULL, NULL, NULL},
 | 
					  { L"Minimum Request Turnaround Time",         4,     56,  L"%u",    NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Platform Interrupt Ack Register", 12, 60, NULL, DumpGas, NULL,
 | 
					  { L"Platform Interrupt Ack Register",         12,    60,  NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccIntAckGas, NULL},
 | 
					    ValidatePccIntAckGas,                       NULL },
 | 
				
			||||||
  {L"Platform Interrupt Ack Preserve", 8, 72, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Platform Interrupt Ack Preserve",         8,     72,  L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Platform Interrupt Ack Set", 8, 80, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Platform Interrupt Ack Set",              8,     80,  L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Reserved", 8, 88, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                                8,     88,  L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Cmd Complete Check Reg Addr", 12, 96, NULL, DumpGas, NULL,
 | 
					  { L"Cmd Complete Check Reg Addr",             12,    96,  NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccGas, NULL},
 | 
					    ValidatePccGas,                             NULL },
 | 
				
			||||||
  {L"Cmd Complete Check Mask", 8, 108, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Cmd Complete Check Mask",                 8,     108, L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Cmd Update Reg Addr", 12, 116, NULL, DumpGas, NULL,
 | 
					  { L"Cmd Update Reg Addr",                     12,    116, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccGas, NULL},
 | 
					    ValidatePccGas,                             NULL },
 | 
				
			||||||
  {L"Cmd Update Preserve mask", 8, 128, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Cmd Update Preserve mask",                8,     128, L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Cmd Update Set mask", 8, 136, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Cmd Update Set mask",                     8,     136, L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
  {L"Error Status Register", 12, 144, NULL, DumpGas, NULL,
 | 
					  { L"Error Status Register",                   12,    144, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccErrStatusGas, NULL},
 | 
					    ValidatePccErrStatusGas,                    NULL },
 | 
				
			||||||
  {L"Error Status Mask", 8, 156, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Error Status Mask",                       8,     156, L"0x%lx", NULL,    NULL,NULL,                  NULL },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the HW Registers based Communications
 | 
					  An ACPI_PARSER array describing the HW Registers based Communications
 | 
				
			||||||
  Subspace Structure - Type 5
 | 
					  Subspace Structure - Type 5
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PccSubspaceType5Parser[] = {
 | 
					STATIC CONST ACPI_PARSER  PccSubspaceType5Parser[] = {
 | 
				
			||||||
  PCC_SUBSPACE_HEADER (),
 | 
					  PCC_SUBSPACE_HEADER (),
 | 
				
			||||||
  {L"Version", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Version",            2,   2,  L"0x%x",  NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Base Address", 8, 4, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address",       8,   4,  L"0x%lx", NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Shared Memory Range Length", 8, 12, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Shared Memory Range Length",8,   12, L"0x%lx", NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Doorbell Register", 12, 20, NULL, DumpGas, NULL,
 | 
					  { L"Doorbell Register",  12,  20, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccMemoryIoGas, NULL},
 | 
					    ValidatePccMemoryIoGas,NULL },
 | 
				
			||||||
  {L"Doorbell Preserve", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Preserve",  8,   32, L"0x%lx", NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Doorbell Write", 8, 40, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Doorbell Write",     8,   40, L"0x%lx", NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Command Complete Check Register", 12, 48, NULL, DumpGas, NULL,
 | 
					  { L"Command Complete Check Register",12,  48, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccMemoryIoGas, NULL},
 | 
					    ValidatePccMemoryIoGas,NULL },
 | 
				
			||||||
  {L"Command Complete Check Mask", 8, 60, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Command Complete Check Mask",8,   60, L"0x%lx", NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Error Status Register", 12, 68, NULL, DumpGas, NULL,
 | 
					  { L"Error Status Register",12,  68, NULL,     DumpGas, NULL,
 | 
				
			||||||
    ValidatePccMemoryIoGas, NULL},
 | 
					    ValidatePccMemoryIoGas,NULL },
 | 
				
			||||||
  {L"Error Status Mask", 8, 80, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"Error Status Mask",  8,   80, L"0x%lx", NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Nominal Latency", 4, 88, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Nominal Latency",    4,   88, L"0x%x",  NULL,    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Minimum Request Turnaround Time", 4, 92, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Minimum Request Turnaround Time",4,   92, L"0x%x",  NULL,    NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -399,7 +403,7 @@ STATIC CONST ACPI_PARSER PccSubspaceType5Parser[] = {
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpPccSubspaceType0 (
 | 
					DumpPccSubspaceType0 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -422,7 +426,7 @@ DumpPccSubspaceType0 (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpPccSubspaceType1 (
 | 
					DumpPccSubspaceType1 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -445,7 +449,7 @@ DumpPccSubspaceType1 (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpPccSubspaceType2 (
 | 
					DumpPccSubspaceType2 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -468,7 +472,7 @@ DumpPccSubspaceType2 (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpPccSubspaceType3 (
 | 
					DumpPccSubspaceType3 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -491,7 +495,7 @@ DumpPccSubspaceType3 (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpPccSubspaceType4 (
 | 
					DumpPccSubspaceType4 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -514,7 +518,7 @@ DumpPccSubspaceType4 (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpPccSubspaceType5 (
 | 
					DumpPccSubspaceType5 (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -544,15 +548,15 @@ DumpPccSubspaceType5 (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiPcct (
 | 
					ParseAcpiPcct (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT8* PccSubspacePtr;
 | 
					  UINT8   *PccSubspacePtr;
 | 
				
			||||||
  UINTN  SubspaceCount;
 | 
					  UINTN   SubspaceCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -584,11 +588,12 @@ ParseAcpiPcct (
 | 
				
			|||||||
    // Check if the values used to control the parsing logic have been
 | 
					    // Check if the values used to control the parsing logic have been
 | 
				
			||||||
    // successfully read.
 | 
					    // successfully read.
 | 
				
			||||||
    if ((PccSubspaceType == NULL) ||
 | 
					    if ((PccSubspaceType == NULL) ||
 | 
				
			||||||
        (PccSubspaceLength == NULL)) {
 | 
					        (PccSubspaceLength == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"structure header. Length = %u.\n",
 | 
					        L"structure header. Length = %u.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -596,11 +601,12 @@ ParseAcpiPcct (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate Structure length
 | 
					    // Validate Structure length
 | 
				
			||||||
    if ((*PccSubspaceLength == 0) ||
 | 
					    if ((*PccSubspaceLength == 0) ||
 | 
				
			||||||
        ((Offset + (*PccSubspaceLength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*PccSubspaceLength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid Structure length. " \
 | 
					        L"ERROR: Invalid Structure length. " \
 | 
				
			||||||
          L"Length = %u. Offset = %u. AcpiTableLength = %u.\n",
 | 
					        L"Length = %u. Offset = %u. AcpiTableLength = %u.\n",
 | 
				
			||||||
        *PccSubspaceLength,
 | 
					        *PccSubspaceLength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
@@ -649,14 +655,14 @@ ParseAcpiPcct (
 | 
				
			|||||||
        IncrementErrorCount ();
 | 
					        IncrementErrorCount ();
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L"ERROR: Unknown PCC subspace structure:"
 | 
					          L"ERROR: Unknown PCC subspace structure:"
 | 
				
			||||||
            L" Type = %u, Length = %u\n",
 | 
					          L" Type = %u, Length = %u\n",
 | 
				
			||||||
          PccSubspaceType,
 | 
					          PccSubspaceType,
 | 
				
			||||||
          *PccSubspaceLength
 | 
					          *PccSubspaceLength
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PccSubspacePtr += *PccSubspaceLength;
 | 
					    PccSubspacePtr += *PccSubspaceLength;
 | 
				
			||||||
    Offset += *PccSubspaceLength;
 | 
					    Offset         += *PccSubspaceLength;
 | 
				
			||||||
    SubspaceCount++;
 | 
					    SubspaceCount++;
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,17 +11,17 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  Minimum value for the 'length' field in subspaces of types 0, 1 and 2.
 | 
					  Minimum value for the 'length' field in subspaces of types 0, 1 and 2.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define MIN_MEMORY_RANGE_LENGTH                 8
 | 
					#define MIN_MEMORY_RANGE_LENGTH  8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Minimum value for the 'length' field in subspaces of types 3 and 4.
 | 
					  Minimum value for the 'length' field in subspaces of types 3 and 4.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define MIN_EXT_PCC_SUBSPACE_MEM_RANGE_LEN      16
 | 
					#define MIN_EXT_PCC_SUBSPACE_MEM_RANGE_LEN  16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Maximum number of PCC subspaces.
 | 
					  Maximum number of PCC subspaces.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define MAX_PCC_SUBSPACES                       256
 | 
					#define MAX_PCC_SUBSPACES  256
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Parser for the header of any type of PCC subspace.
 | 
					  Parser for the header of any type of PCC subspace.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,10 +17,10 @@
 | 
				
			|||||||
#include "PpttParser.h"
 | 
					#include "PpttParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC CONST UINT8*  ProcessorTopologyStructureType;
 | 
					STATIC CONST UINT8                   *ProcessorTopologyStructureType;
 | 
				
			||||||
STATIC CONST UINT8*  ProcessorTopologyStructureLength;
 | 
					STATIC CONST UINT8                   *ProcessorTopologyStructureLength;
 | 
				
			||||||
STATIC CONST UINT32* NumberOfPrivateResources;
 | 
					STATIC CONST UINT32                  *NumberOfPrivateResources;
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the Cache Type Structure (Type 1) 'Number of sets'
 | 
					  This function validates the Cache Type Structure (Type 1) 'Number of sets'
 | 
				
			||||||
@@ -34,12 +34,13 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateCacheNumberOfSets (
 | 
					ValidateCacheNumberOfSets (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 NumberOfSets;
 | 
					  UINT32  NumberOfSets;
 | 
				
			||||||
  NumberOfSets = *(UINT32*)Ptr;
 | 
					
 | 
				
			||||||
 | 
					  NumberOfSets = *(UINT32 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (NumberOfSets == 0) {
 | 
					  if (NumberOfSets == 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -47,12 +48,12 @@ ValidateCacheNumberOfSets (
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  if (NumberOfSets > PPTT_ARM_CCIDX_CACHE_NUMBER_OF_SETS_MAX) {
 | 
					  if (NumberOfSets > PPTT_ARM_CCIDX_CACHE_NUMBER_OF_SETS_MAX) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: When ARMv8.3-CCIDX is implemented the maximum cache number of "
 | 
					      L"\nERROR: When ARMv8.3-CCIDX is implemented the maximum cache number of "
 | 
				
			||||||
        L"sets must be less than or equal to %d",
 | 
					      L"sets must be less than or equal to %d",
 | 
				
			||||||
      PPTT_ARM_CCIDX_CACHE_NUMBER_OF_SETS_MAX
 | 
					      PPTT_ARM_CCIDX_CACHE_NUMBER_OF_SETS_MAX
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -62,14 +63,14 @@ ValidateCacheNumberOfSets (
 | 
				
			|||||||
    IncrementWarningCount ();
 | 
					    IncrementWarningCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nWARNING: Without ARMv8.3-CCIDX, the maximum cache number of sets "
 | 
					      L"\nWARNING: Without ARMv8.3-CCIDX, the maximum cache number of sets "
 | 
				
			||||||
        L"must be less than or equal to %d. Ignore this message if "
 | 
					      L"must be less than or equal to %d. Ignore this message if "
 | 
				
			||||||
        L"ARMv8.3-CCIDX is implemented",
 | 
					      L"ARMv8.3-CCIDX is implemented",
 | 
				
			||||||
      PPTT_ARM_CACHE_NUMBER_OF_SETS_MAX
 | 
					      PPTT_ARM_CACHE_NUMBER_OF_SETS_MAX
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -84,12 +85,13 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateCacheAssociativity (
 | 
					ValidateCacheAssociativity (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT8 Associativity;
 | 
					  UINT8  Associativity;
 | 
				
			||||||
  Associativity = *(UINT8*)Ptr;
 | 
					
 | 
				
			||||||
 | 
					  Associativity = *(UINT8 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Associativity == 0) {
 | 
					  if (Associativity == 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -109,25 +111,26 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateCacheLineSize (
 | 
					ValidateCacheLineSize (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  // Reference: ARM Architecture Reference Manual ARMv8 (D.a)
 | 
					  // Reference: ARM Architecture Reference Manual ARMv8 (D.a)
 | 
				
			||||||
  // Section D12.2.25: CCSIDR_EL1, Current Cache Size ID Register
 | 
					  // Section D12.2.25: CCSIDR_EL1, Current Cache Size ID Register
 | 
				
			||||||
  //   LineSize, bits [2:0]
 | 
					  //   LineSize, bits [2:0]
 | 
				
			||||||
  //     (Log2(Number of bytes in cache line)) - 4.
 | 
					  //     (Log2(Number of bytes in cache line)) - 4.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UINT16 LineSize;
 | 
					  UINT16  LineSize;
 | 
				
			||||||
  LineSize = *(UINT16*)Ptr;
 | 
					  LineSize = *(UINT16 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((LineSize < PPTT_ARM_CACHE_LINE_SIZE_MIN) ||
 | 
					  if ((LineSize < PPTT_ARM_CACHE_LINE_SIZE_MIN) ||
 | 
				
			||||||
      (LineSize > PPTT_ARM_CACHE_LINE_SIZE_MAX)) {
 | 
					      (LineSize > PPTT_ARM_CACHE_LINE_SIZE_MAX))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: The cache line size must be between %d and %d bytes"
 | 
					      L"\nERROR: The cache line size must be between %d and %d bytes"
 | 
				
			||||||
        L" on ARM Platforms.",
 | 
					      L" on ARM Platforms.",
 | 
				
			||||||
      PPTT_ARM_CACHE_LINE_SIZE_MIN,
 | 
					      PPTT_ARM_CACHE_LINE_SIZE_MIN,
 | 
				
			||||||
      PPTT_ARM_CACHE_LINE_SIZE_MAX
 | 
					      PPTT_ARM_CACHE_LINE_SIZE_MAX
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -138,7 +141,8 @@ ValidateCacheLineSize (
 | 
				
			|||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (L"\nERROR: The cache line size is not a power of 2.");
 | 
					    Print (L"\nERROR: The cache line size is not a power of 2.");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -152,15 +156,16 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateCacheAttributes (
 | 
					ValidateCacheAttributes (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // Reference: Advanced Configuration and Power Interface (ACPI) Specification
 | 
					  // Reference: Advanced Configuration and Power Interface (ACPI) Specification
 | 
				
			||||||
  //            Version 6.2 Errata A, September 2017
 | 
					  //            Version 6.2 Errata A, September 2017
 | 
				
			||||||
  // Table 5-153: Cache Type Structure
 | 
					  // Table 5-153: Cache Type Structure
 | 
				
			||||||
  UINT8 Attributes;
 | 
					  UINT8  Attributes;
 | 
				
			||||||
  Attributes = *(UINT8*)Ptr;
 | 
					
 | 
				
			||||||
 | 
					  Attributes = *(UINT8 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((Attributes & 0xE0) != 0) {
 | 
					  if ((Attributes & 0xE0) != 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -175,67 +180,67 @@ ValidateCacheAttributes (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI PPTT Table.
 | 
					  An ACPI_PARSER array describing the ACPI PPTT Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER PpttParser[] = {
 | 
					STATIC CONST ACPI_PARSER  PpttParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the processor topology structure header.
 | 
					  An ACPI_PARSER array describing the processor topology structure header.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER ProcessorTopologyStructureHeaderParser[] = {
 | 
					STATIC CONST ACPI_PARSER  ProcessorTopologyStructureHeaderParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, NULL, NULL, (VOID**)&ProcessorTopologyStructureType,
 | 
					  { L"Type",     1, 0, NULL, NULL, (VOID **)&ProcessorTopologyStructureType,
 | 
				
			||||||
   NULL, NULL},
 | 
					    NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, NULL, NULL, (VOID**)&ProcessorTopologyStructureLength,
 | 
					  { L"Length",   1, 1, NULL, NULL, (VOID **)&ProcessorTopologyStructureLength,
 | 
				
			||||||
   NULL, NULL},
 | 
					    NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, NULL, NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved", 2, 2, NULL, NULL, NULL,                                      NULL,NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Processor Hierarchy Node Structure - Type 0.
 | 
					  An ACPI_PARSER array describing the Processor Hierarchy Node Structure - Type 0.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER ProcessorHierarchyNodeStructureParser[] = {
 | 
					STATIC CONST ACPI_PARSER  ProcessorHierarchyNodeStructureParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                        1, 0,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                      1, 1,  L"%d",   NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                    2, 2,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                       4, 4,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Parent", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Parent",                      4, 8,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"ACPI Processor ID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI Processor ID",           4, 12, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Number of private resources", 4, 16, L"%d", NULL,
 | 
					  { L"Number of private resources", 4, 16, L"%d",   NULL,
 | 
				
			||||||
   (VOID**)&NumberOfPrivateResources, NULL, NULL}
 | 
					    (VOID **)&NumberOfPrivateResources, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Cache Type Structure - Type 1.
 | 
					  An ACPI_PARSER array describing the Cache Type Structure - Type 1.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER CacheTypeStructureParser[] = {
 | 
					STATIC CONST ACPI_PARSER  CacheTypeStructureParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                1, 0,  L"0x%x", NULL, NULL, NULL,                       NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",              1, 1,  L"%d",   NULL, NULL, NULL,                       NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",            2, 2,  L"0x%x", NULL, NULL, NULL,                       NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",               4, 4,  L"0x%x", NULL, NULL, NULL,                       NULL },
 | 
				
			||||||
  {L"Next Level of Cache", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Next Level of Cache", 4, 8,  L"0x%x", NULL, NULL, NULL,                       NULL },
 | 
				
			||||||
  {L"Size", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Size",                4, 12, L"0x%x", NULL, NULL, NULL,                       NULL },
 | 
				
			||||||
  {L"Number of sets", 4, 16, L"%d", NULL, NULL, ValidateCacheNumberOfSets, NULL},
 | 
					  { L"Number of sets",      4, 16, L"%d",   NULL, NULL, ValidateCacheNumberOfSets,  NULL },
 | 
				
			||||||
  {L"Associativity", 1, 20, L"%d", NULL, NULL, ValidateCacheAssociativity, NULL},
 | 
					  { L"Associativity",       1, 20, L"%d",   NULL, NULL, ValidateCacheAssociativity, NULL },
 | 
				
			||||||
  {L"Attributes", 1, 21, L"0x%x", NULL, NULL, ValidateCacheAttributes, NULL},
 | 
					  { L"Attributes",          1, 21, L"0x%x", NULL, NULL, ValidateCacheAttributes,    NULL },
 | 
				
			||||||
  {L"Line size", 2, 22, L"%d", NULL, NULL, ValidateCacheLineSize, NULL}
 | 
					  { L"Line size",           2, 22, L"%d",   NULL, NULL, ValidateCacheLineSize,      NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ID Type Structure - Type 2.
 | 
					  An ACPI_PARSER array describing the ID Type Structure - Type 2.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER IdStructureParser[] = {
 | 
					STATIC CONST ACPI_PARSER  IdStructureParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",       1, 0,  L"0x%x", NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",     1, 1,  L"%d",   NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",   2, 2,  L"0x%x", NULL,       NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"VENDOR_ID", 4, 4, NULL, Dump4Chars, NULL, NULL, NULL},
 | 
					  { L"VENDOR_ID",  4, 4,  NULL,    Dump4Chars, NULL, NULL, NULL },
 | 
				
			||||||
  {L"LEVEL_1_ID", 8, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"LEVEL_1_ID", 8, 8,  L"0x%x", NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"LEVEL_2_ID", 8, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"LEVEL_2_ID", 8, 16, L"0x%x", NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"MAJOR_REV", 2, 24, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"MAJOR_REV",  2, 24, L"0x%x", NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"MINOR_REV", 2, 26, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"MINOR_REV",  2, 26, L"0x%x", NULL,       NULL, NULL, NULL },
 | 
				
			||||||
  {L"SPIN_REV", 2, 28, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"SPIN_REV",   2, 28, L"0x%x", NULL,       NULL, NULL, NULL },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -248,13 +253,13 @@ STATIC CONST ACPI_PARSER IdStructureParser[] = {
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpProcessorHierarchyNodeStructure (
 | 
					DumpProcessorHierarchyNodeStructure (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  CHAR16 Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
					  CHAR16  Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = ParseAcpi (
 | 
					  Offset = ParseAcpi (
 | 
				
			||||||
             TRUE,
 | 
					             TRUE,
 | 
				
			||||||
@@ -281,8 +286,8 @@ DumpProcessorHierarchyNodeStructure (
 | 
				
			|||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Invalid Number of Private Resources. " \
 | 
					      L"ERROR: Invalid Number of Private Resources. " \
 | 
				
			||||||
        L"PrivateResourceCount = %d. RemainingBufferLength = %d. " \
 | 
					      L"PrivateResourceCount = %d. RemainingBufferLength = %d. " \
 | 
				
			||||||
        L"Parsing of this structure aborted.\n",
 | 
					      L"Parsing of this structure aborted.\n",
 | 
				
			||||||
      *NumberOfPrivateResources,
 | 
					      *NumberOfPrivateResources,
 | 
				
			||||||
      Length - Offset
 | 
					      Length - Offset
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -304,7 +309,7 @@ DumpProcessorHierarchyNodeStructure (
 | 
				
			|||||||
    PrintFieldName (4, Buffer);
 | 
					    PrintFieldName (4, Buffer);
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"0x%x\n",
 | 
					      L"0x%x\n",
 | 
				
			||||||
      *((UINT32*)(Ptr + Offset))
 | 
					      *((UINT32 *)(Ptr + Offset))
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Offset += sizeof (UINT32);
 | 
					    Offset += sizeof (UINT32);
 | 
				
			||||||
@@ -321,7 +326,7 @@ DumpProcessorHierarchyNodeStructure (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpCacheTypeStructure (
 | 
					DumpCacheTypeStructure (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8  Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -344,8 +349,8 @@ DumpCacheTypeStructure (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
DumpIDStructure (
 | 
					DumpIDStructure (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN UINT8 Length
 | 
					  IN UINT8  Length
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ParseAcpi (
 | 
					  ParseAcpi (
 | 
				
			||||||
@@ -378,14 +383,14 @@ DumpIDStructure (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiPptt (
 | 
					ParseAcpiPptt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT8* ProcessorTopologyStructurePtr;
 | 
					  UINT8   *ProcessorTopologyStructurePtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -416,11 +421,12 @@ ParseAcpiPptt (
 | 
				
			|||||||
    // Check if the values used to control the parsing logic have been
 | 
					    // Check if the values used to control the parsing logic have been
 | 
				
			||||||
    // successfully read.
 | 
					    // successfully read.
 | 
				
			||||||
    if ((ProcessorTopologyStructureType == NULL) ||
 | 
					    if ((ProcessorTopologyStructureType == NULL) ||
 | 
				
			||||||
        (ProcessorTopologyStructureLength == NULL)) {
 | 
					        (ProcessorTopologyStructureLength == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"processor topology structure header. Length = %d.\n",
 | 
					        L"processor topology structure header. Length = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -428,11 +434,12 @@ ParseAcpiPptt (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate Processor Topology Structure length
 | 
					    // Validate Processor Topology Structure length
 | 
				
			||||||
    if ((*ProcessorTopologyStructureLength == 0) ||
 | 
					    if ((*ProcessorTopologyStructureLength == 0) ||
 | 
				
			||||||
        ((Offset + (*ProcessorTopologyStructureLength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*ProcessorTopologyStructureLength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid Processor Topology Structure length. " \
 | 
					        L"ERROR: Invalid Processor Topology Structure length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *ProcessorTopologyStructureLength,
 | 
					        *ProcessorTopologyStructureLength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
@@ -466,13 +473,13 @@ ParseAcpiPptt (
 | 
				
			|||||||
        IncrementErrorCount ();
 | 
					        IncrementErrorCount ();
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L"ERROR: Unknown processor topology structure:"
 | 
					          L"ERROR: Unknown processor topology structure:"
 | 
				
			||||||
            L" Type = %d, Length = %d\n",
 | 
					          L" Type = %d, Length = %d\n",
 | 
				
			||||||
          *ProcessorTopologyStructureType,
 | 
					          *ProcessorTopologyStructureType,
 | 
				
			||||||
          *ProcessorTopologyStructureLength
 | 
					          *ProcessorTopologyStructureLength
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ProcessorTopologyStructurePtr += *ProcessorTopologyStructureLength;
 | 
					    ProcessorTopologyStructurePtr += *ProcessorTopologyStructureLength;
 | 
				
			||||||
    Offset += *ProcessorTopologyStructureLength;
 | 
					    Offset                        += *ProcessorTopologyStructureLength;
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,22 +16,22 @@
 | 
				
			|||||||
/// Cache parameters allowed by the architecture with
 | 
					/// Cache parameters allowed by the architecture with
 | 
				
			||||||
/// ARMv8.3-CCIDX (Cache extended number of sets)
 | 
					/// ARMv8.3-CCIDX (Cache extended number of sets)
 | 
				
			||||||
/// Derived from CCSIDR_EL1 when ID_AA64MMFR2_EL1.CCIDX==0001
 | 
					/// Derived from CCSIDR_EL1 when ID_AA64MMFR2_EL1.CCIDX==0001
 | 
				
			||||||
#define PPTT_ARM_CCIDX_CACHE_NUMBER_OF_SETS_MAX       (1 << 24)
 | 
					#define PPTT_ARM_CCIDX_CACHE_NUMBER_OF_SETS_MAX  (1 << 24)
 | 
				
			||||||
#define PPTT_ARM_CCIDX_CACHE_ASSOCIATIVITY_MAX        (1 << 21)
 | 
					#define PPTT_ARM_CCIDX_CACHE_ASSOCIATIVITY_MAX   (1 << 21)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Cache parameters allowed by the architecture without
 | 
					/// Cache parameters allowed by the architecture without
 | 
				
			||||||
/// ARMv8.3-CCIDX (Cache extended number of sets)
 | 
					/// ARMv8.3-CCIDX (Cache extended number of sets)
 | 
				
			||||||
/// Derived from CCSIDR_EL1 when ID_AA64MMFR2_EL1.CCIDX==0000
 | 
					/// Derived from CCSIDR_EL1 when ID_AA64MMFR2_EL1.CCIDX==0000
 | 
				
			||||||
#define PPTT_ARM_CACHE_NUMBER_OF_SETS_MAX             (1 << 15)
 | 
					#define PPTT_ARM_CACHE_NUMBER_OF_SETS_MAX  (1 << 15)
 | 
				
			||||||
#define PPTT_ARM_CACHE_ASSOCIATIVITY_MAX              (1 << 10)
 | 
					#define PPTT_ARM_CACHE_ASSOCIATIVITY_MAX   (1 << 10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Common cache parameters
 | 
					/// Common cache parameters
 | 
				
			||||||
/// Derived from CCSIDR_EL1
 | 
					/// Derived from CCSIDR_EL1
 | 
				
			||||||
/// The LineSize is represented by bits 2:0
 | 
					/// The LineSize is represented by bits 2:0
 | 
				
			||||||
/// (Log2(Number of bytes in cache line)) - 4 is used to represent
 | 
					/// (Log2(Number of bytes in cache line)) - 4 is used to represent
 | 
				
			||||||
/// the LineSize bits.
 | 
					/// the LineSize bits.
 | 
				
			||||||
#define PPTT_ARM_CACHE_LINE_SIZE_MAX                  (1 << 11)
 | 
					#define PPTT_ARM_CACHE_LINE_SIZE_MAX  (1 << 11)
 | 
				
			||||||
#define PPTT_ARM_CACHE_LINE_SIZE_MIN                  (1 << 4)
 | 
					#define PPTT_ARM_CACHE_LINE_SIZE_MIN  (1 << 4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					#endif // if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@
 | 
				
			|||||||
#include "AcpiTableParser.h"
 | 
					#include "AcpiTableParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local Variables
 | 
					// Local Variables
 | 
				
			||||||
STATIC CONST UINT64* XsdtAddress;
 | 
					STATIC CONST UINT64  *XsdtAddress;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the RSDT Address.
 | 
					  This function validates the RSDT Address.
 | 
				
			||||||
@@ -26,19 +26,19 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateRsdtAddress (
 | 
					ValidateRsdtAddress (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  // Reference: Server Base Boot Requirements System Software on ARM Platforms
 | 
					  // Reference: Server Base Boot Requirements System Software on ARM Platforms
 | 
				
			||||||
  // Section: 4.2.1.1 RSDP
 | 
					  // Section: 4.2.1.1 RSDP
 | 
				
			||||||
  // Root System Description Pointer (RSDP), ACPI ? 5.2.5.
 | 
					  // Root System Description Pointer (RSDP), ACPI ? 5.2.5.
 | 
				
			||||||
  //   - Within the RSDP, the RsdtAddress field must be null (zero) and the
 | 
					  //   - Within the RSDP, the RsdtAddress field must be null (zero) and the
 | 
				
			||||||
  //     XsdtAddresss MUST be a valid, non-null, 64-bit value.
 | 
					  //     XsdtAddresss MUST be a valid, non-null, 64-bit value.
 | 
				
			||||||
  UINT32 RsdtAddr;
 | 
					  UINT32  RsdtAddr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RsdtAddr = *(UINT32*)Ptr;
 | 
					  RsdtAddr = *(UINT32 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (RsdtAddr != 0) {
 | 
					  if (RsdtAddr != 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -47,7 +47,8 @@ ValidateRsdtAddress (
 | 
				
			|||||||
      RsdtAddr
 | 
					      RsdtAddr
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -61,19 +62,19 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateXsdtAddress (
 | 
					ValidateXsdtAddress (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  // Reference: Server Base Boot Requirements System Software on ARM Platforms
 | 
					  // Reference: Server Base Boot Requirements System Software on ARM Platforms
 | 
				
			||||||
  // Section: 4.2.1.1 RSDP
 | 
					  // Section: 4.2.1.1 RSDP
 | 
				
			||||||
  // Root System Description Pointer (RSDP), ACPI ? 5.2.5.
 | 
					  // Root System Description Pointer (RSDP), ACPI ? 5.2.5.
 | 
				
			||||||
  //   - Within the RSDP, the RsdtAddress field must be null (zero) and the
 | 
					  //   - Within the RSDP, the RsdtAddress field must be null (zero) and the
 | 
				
			||||||
  //     XsdtAddresss MUST be a valid, non-null, 64-bit value.
 | 
					  //     XsdtAddresss MUST be a valid, non-null, 64-bit value.
 | 
				
			||||||
  UINT64 XsdtAddr;
 | 
					  UINT64  XsdtAddr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  XsdtAddr = *(UINT64*)Ptr;
 | 
					  XsdtAddr = *(UINT64 *)Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (XsdtAddr == 0) {
 | 
					  if (XsdtAddr == 0) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -82,23 +83,24 @@ ValidateXsdtAddress (
 | 
				
			|||||||
      XsdtAddr
 | 
					      XsdtAddr
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An array describing the ACPI RSDP Table.
 | 
					  An array describing the ACPI RSDP Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER RsdpParser[] = {
 | 
					STATIC CONST ACPI_PARSER  RsdpParser[] = {
 | 
				
			||||||
  {L"Signature", 8, 0, NULL, Dump8Chars, NULL, NULL, NULL},
 | 
					  { L"Signature",         8, 0,  NULL,        Dump8Chars, NULL,                  NULL,                NULL },
 | 
				
			||||||
  {L"Checksum", 1, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Checksum",          1, 8,  L"0x%x",     NULL,       NULL,                  NULL,                NULL },
 | 
				
			||||||
  {L"Oem ID", 6, 9, NULL, Dump6Chars, NULL, NULL, NULL},
 | 
					  { L"Oem ID",            6, 9,  NULL,        Dump6Chars, NULL,                  NULL,                NULL },
 | 
				
			||||||
  {L"Revision", 1, 15, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Revision",          1, 15, L"%d",       NULL,       NULL,                  NULL,                NULL },
 | 
				
			||||||
  {L"RSDT Address", 4, 16, L"0x%x", NULL, NULL, ValidateRsdtAddress, NULL},
 | 
					  { L"RSDT Address",      4, 16, L"0x%x",     NULL,       NULL,                  ValidateRsdtAddress, NULL },
 | 
				
			||||||
  {L"Length", 4, 20, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",            4, 20, L"%d",       NULL,       NULL,                  NULL,                NULL },
 | 
				
			||||||
  {L"XSDT Address", 8, 24, L"0x%lx", NULL, (VOID**)&XsdtAddress,
 | 
					  { L"XSDT Address",      8, 24, L"0x%lx",    NULL,       (VOID **)&XsdtAddress,
 | 
				
			||||||
   ValidateXsdtAddress, NULL},
 | 
					    ValidateXsdtAddress, NULL },
 | 
				
			||||||
  {L"Extended Checksum", 1, 32, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Extended Checksum", 1, 32, L"0x%x",     NULL,       NULL,                  NULL,                NULL },
 | 
				
			||||||
  {L"Reserved", 3, 33, L"%x %x %x", Dump3Chars, NULL, NULL, NULL}
 | 
					  { L"Reserved",          3, 33, L"%x %x %x", Dump3Chars, NULL,                  NULL,                NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -118,10 +120,10 @@ STATIC CONST ACPI_PARSER RsdpParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiRsdp (
 | 
					ParseAcpiRsdp (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (Trace) {
 | 
					  if (Trace) {
 | 
				
			||||||
@@ -144,7 +146,7 @@ ParseAcpiRsdp (
 | 
				
			|||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Insufficient table length. AcpiTableLength = %d." \
 | 
					      L"ERROR: Insufficient table length. AcpiTableLength = %d." \
 | 
				
			||||||
        L"RSDP parsing aborted.\n",
 | 
					      L"RSDP parsing aborted.\n",
 | 
				
			||||||
      AcpiTableLength
 | 
					      AcpiTableLength
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -160,5 +162,5 @@ ParseAcpiRsdp (
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ProcessAcpiTable ((UINT8*)(UINTN)(*XsdtAddress));
 | 
					  ProcessAcpiTable ((UINT8 *)(UINTN)(*XsdtAddress));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,22 +15,22 @@
 | 
				
			|||||||
#include "AcpiTableParser.h"
 | 
					#include "AcpiTableParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local Variables
 | 
					// Local Variables
 | 
				
			||||||
STATIC CONST UINT64* SlitSystemLocalityCount;
 | 
					STATIC CONST UINT64                  *SlitSystemLocalityCount;
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI SLIT table.
 | 
					  An ACPI_PARSER array describing the ACPI SLIT table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SlitParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SlitParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Number of System Localities", 8, 36, L"0x%lx", NULL,
 | 
					  { L"Number of System Localities",   8,     36, L"0x%lx", NULL,
 | 
				
			||||||
   (VOID**)&SlitSystemLocalityCount, NULL, NULL}
 | 
					    (VOID **)&SlitSystemLocalityCount,NULL,  NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Macro to get the value of a System Locality
 | 
					  Macro to get the value of a System Locality
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
#define SLIT_ELEMENT(Ptr, i, j) *(Ptr + (i * LocalityCount) + j)
 | 
					#define SLIT_ELEMENT(Ptr, i, j)  *(Ptr + (i * LocalityCount) + j)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function parses the ACPI SLIT table.
 | 
					  This function parses the ACPI SLIT table.
 | 
				
			||||||
@@ -50,18 +50,18 @@ STATIC CONST ACPI_PARSER SlitParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSlit (
 | 
					ParseAcpiSlit (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32 Count;
 | 
					  UINT32  Count;
 | 
				
			||||||
  UINT32 Index;
 | 
					  UINT32  Index;
 | 
				
			||||||
  UINT32 LocalityCount;
 | 
					  UINT32  LocalityCount;
 | 
				
			||||||
  UINT8* LocalityPtr;
 | 
					  UINT8   *LocalityPtr;
 | 
				
			||||||
  CHAR16 Buffer[80];  // Used for AsciiName param of ParseAcpi
 | 
					  CHAR16  Buffer[80]; // Used for AsciiName param of ParseAcpi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -103,8 +103,8 @@ ParseAcpiSlit (
 | 
				
			|||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: The Number of System Localities provided can't be represented " \
 | 
					      L"ERROR: The Number of System Localities provided can't be represented " \
 | 
				
			||||||
        L"in the SLIT table. SlitSystemLocalityCount = %ld. " \
 | 
					      L"in the SLIT table. SlitSystemLocalityCount = %ld. " \
 | 
				
			||||||
        L"MaxLocalityCountAllowed = %d.\n",
 | 
					      L"MaxLocalityCountAllowed = %d.\n",
 | 
				
			||||||
      *SlitSystemLocalityCount,
 | 
					      *SlitSystemLocalityCount,
 | 
				
			||||||
      MAX_UINT16
 | 
					      MAX_UINT16
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -118,7 +118,7 @@ ParseAcpiSlit (
 | 
				
			|||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"ERROR: Invalid Number of System Localities. " \
 | 
					      L"ERROR: Invalid Number of System Localities. " \
 | 
				
			||||||
        L"SlitSystemLocalityCount = %ld. AcpiTableLength = %d.\n",
 | 
					      L"SlitSystemLocalityCount = %ld. AcpiTableLength = %d.\n",
 | 
				
			||||||
      *SlitSystemLocalityCount,
 | 
					      *SlitSystemLocalityCount,
 | 
				
			||||||
      AcpiTableLength
 | 
					      AcpiTableLength
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -144,12 +144,14 @@ ParseAcpiSlit (
 | 
				
			|||||||
    for (Index = 0; Index < LocalityCount; Index++) {
 | 
					    for (Index = 0; Index < LocalityCount; Index++) {
 | 
				
			||||||
      Print (L" (%3d) ", Index);
 | 
					      Print (L" (%3d) ", Index);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Print (L"\n");
 | 
					    Print (L"\n");
 | 
				
			||||||
    for (Count = 0; Count< LocalityCount; Count++) {
 | 
					    for (Count = 0; Count < LocalityCount; Count++) {
 | 
				
			||||||
      Print (L" (%3d) ", Count);
 | 
					      Print (L" (%3d) ", Count);
 | 
				
			||||||
      for (Index = 0; Index < LocalityCount; Index++) {
 | 
					      for (Index = 0; Index < LocalityCount; Index++) {
 | 
				
			||||||
        Print (L"  %3d  ", SLIT_ELEMENT (LocalityPtr, Count, Index));
 | 
					        Print (L"  %3d  ", SLIT_ELEMENT (LocalityPtr, Count, Index));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Print (L"\n");
 | 
					      Print (L"\n");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -158,23 +160,25 @@ ParseAcpiSlit (
 | 
				
			|||||||
  for (Count = 0; Count < LocalityCount; Count++) {
 | 
					  for (Count = 0; Count < LocalityCount; Count++) {
 | 
				
			||||||
    for (Index = 0; Index < LocalityCount; Index++) {
 | 
					    for (Index = 0; Index < LocalityCount; Index++) {
 | 
				
			||||||
      // Element[x][x] must be equal to 10
 | 
					      // Element[x][x] must be equal to 10
 | 
				
			||||||
      if ((Count == Index) && (SLIT_ELEMENT (LocalityPtr, Count,Index) != 10)) {
 | 
					      if ((Count == Index) && (SLIT_ELEMENT (LocalityPtr, Count, Index) != 10)) {
 | 
				
			||||||
        IncrementErrorCount ();
 | 
					        IncrementErrorCount ();
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L"ERROR: Diagonal Element[0x%lx][0x%lx] (%3d)."
 | 
					          L"ERROR: Diagonal Element[0x%lx][0x%lx] (%3d)."
 | 
				
			||||||
            L" Normalized Value is not 10\n",
 | 
					          L" Normalized Value is not 10\n",
 | 
				
			||||||
          Count,
 | 
					          Count,
 | 
				
			||||||
          Index,
 | 
					          Index,
 | 
				
			||||||
          SLIT_ELEMENT (LocalityPtr, Count, Index)
 | 
					          SLIT_ELEMENT (LocalityPtr, Count, Index)
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Element[i][j] must be equal to Element[j][i]
 | 
					      // Element[i][j] must be equal to Element[j][i]
 | 
				
			||||||
      if (SLIT_ELEMENT (LocalityPtr, Count, Index) !=
 | 
					      if (SLIT_ELEMENT (LocalityPtr, Count, Index) !=
 | 
				
			||||||
          SLIT_ELEMENT (LocalityPtr, Index, Count)) {
 | 
					          SLIT_ELEMENT (LocalityPtr, Index, Count))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        IncrementErrorCount ();
 | 
					        IncrementErrorCount ();
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L"ERROR: Relative distances for Element[0x%lx][0x%lx] (%3d) and \n"
 | 
					          L"ERROR: Relative distances for Element[0x%lx][0x%lx] (%3d) and \n"
 | 
				
			||||||
           L"Element[0x%lx][0x%lx] (%3d) do not match.\n",
 | 
					          L"Element[0x%lx][0x%lx] (%3d) do not match.\n",
 | 
				
			||||||
          Count,
 | 
					          Count,
 | 
				
			||||||
          Index,
 | 
					          Index,
 | 
				
			||||||
          SLIT_ELEMENT (LocalityPtr, Count, Index),
 | 
					          SLIT_ELEMENT (LocalityPtr, Count, Index),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@
 | 
				
			|||||||
#include "AcpiTableParser.h"
 | 
					#include "AcpiTableParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the Interrupt Type.
 | 
					  This function validates the Interrupt Type.
 | 
				
			||||||
@@ -29,24 +29,26 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateInterruptType (
 | 
					ValidateInterruptType (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  UINT8 InterruptType;
 | 
					  UINT8  InterruptType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  InterruptType = *Ptr;
 | 
					  InterruptType = *Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (InterruptType !=
 | 
					  if (InterruptType !=
 | 
				
			||||||
        EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC) {
 | 
					      EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (
 | 
					    Print (
 | 
				
			||||||
      L"\nERROR: InterruptType = %d. This must be 8 on ARM Platforms",
 | 
					      L"\nERROR: InterruptType = %d. This must be 8 on ARM Platforms",
 | 
				
			||||||
      InterruptType
 | 
					      InterruptType
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -60,12 +62,12 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateIrq (
 | 
					ValidateIrq (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
					 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
				
			||||||
  UINT8 Irq;
 | 
					  UINT8  Irq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Irq = *Ptr;
 | 
					  Irq = *Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,35 +78,36 @@ ValidateIrq (
 | 
				
			|||||||
      Irq
 | 
					      Irq
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the ACPI SPCR Table.
 | 
					  An ACPI_PARSER array describing the ACPI SPCR Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SpcrParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SpcrParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Interface Type", 1, 36, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Interface Type",             1,   36, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Reserved", 3, 37, L"%x %x %x", Dump3Chars, NULL, NULL, NULL},
 | 
					  { L"Reserved",                   3,   37, L"%x %x %x", Dump3Chars, NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Base Address", 12, 40, NULL, DumpGas, NULL, NULL, NULL},
 | 
					  { L"Base Address",               12,  40, NULL,        DumpGas,    NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Interrupt Type", 1, 52, L"%d", NULL, NULL, ValidateInterruptType, NULL},
 | 
					  { L"Interrupt Type",             1,   52, L"%d",       NULL,       NULL, ValidateInterruptType, NULL },
 | 
				
			||||||
  {L"IRQ", 1, 53, L"%d", NULL, NULL, ValidateIrq, NULL},
 | 
					  { L"IRQ",                        1,   53, L"%d",       NULL,       NULL, ValidateIrq,           NULL },
 | 
				
			||||||
  {L"Global System Interrupt", 4, 54, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Global System Interrupt",    4,   54, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Baud Rate", 1, 58, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Baud Rate",                  1,   58, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Parity", 1, 59, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Parity",                     1,   59, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Stop Bits", 1, 60, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Stop Bits",                  1,   60, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Flow Control", 1, 61, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flow Control",               1,   61, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Terminal Type", 1, 62, L"%d", NULL, NULL, NULL, NULL},
 | 
					  { L"Terminal Type",              1,   62, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Reserved", 1, 63, L"%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",                   1,   63, L"%x",       NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"PCI Device ID", 2, 64, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Device ID",              2,   64, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"PCI Vendor ID", 2, 66, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Vendor ID",              2,   66, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"PCI Bus Number", 1, 68, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Bus Number",             1,   68, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"PCI Device Number", 1, 69, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Device Number",          1,   69, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"PCI Function Number", 1, 70, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Function Number",        1,   70, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"PCI Flags", 4, 71, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Flags",                  4,   71, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"PCI Segment", 1, 75, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Segment",                1,   75, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
				
			||||||
  {L"Reserved", 4, 76, L"%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",                   4,   76, L"%x",       NULL,       NULL, NULL,                  NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -122,10 +125,10 @@ STATIC CONST ACPI_PARSER SpcrParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSpcr (
 | 
					ParseAcpiSpcr (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,10 +16,10 @@
 | 
				
			|||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local Variables
 | 
					// Local Variables
 | 
				
			||||||
STATIC CONST UINT8* SratRAType;
 | 
					STATIC CONST UINT8                   *SratRAType;
 | 
				
			||||||
STATIC CONST UINT8* SratRALength;
 | 
					STATIC CONST UINT8                   *SratRALength;
 | 
				
			||||||
STATIC CONST UINT8* SratDeviceHandleType;
 | 
					STATIC CONST UINT8                   *SratDeviceHandleType;
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  This function validates the Reserved field in the SRAT table header.
 | 
					  This function validates the Reserved field in the SRAT table header.
 | 
				
			||||||
@@ -32,11 +32,11 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateSratReserved (
 | 
					ValidateSratReserved (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (*(UINT32*)Ptr != 1) {
 | 
					  if (*(UINT32 *)Ptr != 1) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
    Print (L"\nERROR: Reserved should be 1 for backward compatibility.\n");
 | 
					    Print (L"\nERROR: Reserved should be 1 for backward compatibility.\n");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -54,11 +54,11 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ValidateSratDeviceHandleType (
 | 
					ValidateSratDeviceHandleType (
 | 
				
			||||||
  IN UINT8* Ptr,
 | 
					  IN UINT8  *Ptr,
 | 
				
			||||||
  IN VOID*  Context
 | 
					  IN VOID   *Context
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT8   DeviceHandleType;
 | 
					  UINT8  DeviceHandleType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  DeviceHandleType = *Ptr;
 | 
					  DeviceHandleType = *Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -82,11 +82,11 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpSratPciBdfNumber (
 | 
					DumpSratPciBdfNumber (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CHAR16 Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
					  CHAR16  Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Print (L"\n");
 | 
					  Print (L"\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -143,20 +143,20 @@ DumpSratPciBdfNumber (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Device Handle - ACPI
 | 
					  An ACPI_PARSER array describing the Device Handle - ACPI
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratDeviceHandleAcpiParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratDeviceHandleAcpiParser[] = {
 | 
				
			||||||
  {L"ACPI_HID", 8, 0, L"0x%lx", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI_HID", 8, 0,  L"0x%lx", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"ACPI_UID", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI_UID", 4, 8,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved", 4, 12, L"0x%x",  NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Device Handle - PCI
 | 
					  An ACPI_PARSER array describing the Device Handle - PCI
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratDeviceHandlePciParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratDeviceHandlePciParser[] = {
 | 
				
			||||||
  {L"PCI Segment", 2, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"PCI Segment",    2,  0, L"0x%x",                                    NULL,                 NULL, NULL, NULL },
 | 
				
			||||||
  {L"PCI BDF Number", 2, 2, NULL, DumpSratPciBdfNumber, NULL, NULL, NULL},
 | 
					  { L"PCI BDF Number", 2,  2, NULL,                                       DumpSratPciBdfNumber, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 12, 4, L"%x %x %x %x - %x %x %x %x - %x %x %x %x", Dump12Chars,
 | 
					  { L"Reserved",       12, 4, L"%x %x %x %x - %x %x %x %x - %x %x %x %x", Dump12Chars,
 | 
				
			||||||
   NULL, NULL, NULL}
 | 
					    NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -170,9 +170,9 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpSratDeviceHandle (
 | 
					DumpSratDeviceHandle (
 | 
				
			||||||
  IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
  IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
 )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (SratDeviceHandleType == NULL) {
 | 
					  if (SratDeviceHandleType == NULL) {
 | 
				
			||||||
    IncrementErrorCount ();
 | 
					    IncrementErrorCount ();
 | 
				
			||||||
@@ -213,11 +213,11 @@ STATIC
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DumpSratApicProximity (
 | 
					DumpSratApicProximity (
 | 
				
			||||||
 IN CONST CHAR16* Format,
 | 
					  IN CONST CHAR16  *Format,
 | 
				
			||||||
 IN UINT8*        Ptr
 | 
					  IN UINT8         *Ptr
 | 
				
			||||||
 )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 ProximityDomain;
 | 
					  UINT32  ProximityDomain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ProximityDomain = Ptr[0] | (Ptr[1] << 8) | (Ptr[2] << 16);
 | 
					  ProximityDomain = Ptr[0] | (Ptr[1] << 8) | (Ptr[2] << 16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -227,108 +227,108 @@ DumpSratApicProximity (
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the SRAT Table.
 | 
					  An ACPI_PARSER array describing the SRAT Table.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
				
			||||||
  {L"Reserved", 4, 36, L"0x%x", NULL, NULL, ValidateSratReserved, NULL},
 | 
					  { L"Reserved",                   4,  36, L"0x%x",  NULL, NULL, ValidateSratReserved, NULL },
 | 
				
			||||||
  {L"Reserved", 8, 40, L"0x%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",                   8,  40, L"0x%lx", NULL, NULL, NULL,                 NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Resource Allocation structure header.
 | 
					  An ACPI_PARSER array describing the Resource Allocation structure header.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratResourceAllocationParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratResourceAllocationParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, NULL, NULL, (VOID**)&SratRAType, NULL, NULL},
 | 
					  { L"Type",   1, 0, NULL, NULL, (VOID **)&SratRAType,   NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, NULL, NULL, (VOID**)&SratRALength, NULL, NULL}
 | 
					  { L"Length", 1, 1, NULL, NULL, (VOID **)&SratRALength, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GICC Affinity structure.
 | 
					  An ACPI_PARSER array describing the GICC Affinity structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratGicCAffinityParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratGicCAffinityParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",               1, 0,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",             1, 1,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Proximity Domain", 4, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Domain",   4, 2,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"ACPI Processor UID", 4, 6, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ACPI Processor UID", 4, 6,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 10, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",              4, 10, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Clock Domain", 4, 14, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Clock Domain",       4, 14, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the GIC ITS Affinity structure.
 | 
					  An ACPI_PARSER array describing the GIC ITS Affinity structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratGicITSAffinityParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratGicITSAffinityParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",             1, 0, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",           1, 1, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Proximity Domain", 4, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Domain", 4, 2, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 6, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",         2, 6, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"ITS Id", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"ITS Id",           4, 8, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Generic Initiator Affinity Structure
 | 
					  An ACPI_PARSER array describing the Generic Initiator Affinity Structure
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratGenericInitiatorAffinityParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratGenericInitiatorAffinityParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",               1,  0,  L"0x%x", NULL,                 NULL,                           NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",             1,  1,  L"0x%x", NULL,                 NULL,                           NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Reserved", 1, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",           1,  2,  L"0x%x", NULL,                 NULL,                           NULL, NULL },
 | 
				
			||||||
  {L"Device Handle Type", 1, 3, L"%d", NULL, (VOID**)&SratDeviceHandleType,
 | 
					  { L"Device Handle Type", 1,  3,  L"%d",   NULL,                 (VOID **)&SratDeviceHandleType,
 | 
				
			||||||
   ValidateSratDeviceHandleType, NULL},
 | 
					    ValidateSratDeviceHandleType, NULL },
 | 
				
			||||||
  {L"Proximity Domain", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Domain",   4,  4,  L"0x%x", NULL,                 NULL,                           NULL, NULL },
 | 
				
			||||||
  {L"Device Handle", 16, 8, L"%s", DumpSratDeviceHandle, NULL, NULL, NULL},
 | 
					  { L"Device Handle",      16, 8,  L"%s",   DumpSratDeviceHandle, NULL,                           NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 24, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",              4,  24, L"0x%x", NULL,                 NULL,                           NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 28, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",           4,  28, L"0x%x", NULL,                 NULL,                           NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Memory Affinity structure.
 | 
					  An ACPI_PARSER array describing the Memory Affinity structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratMemAffinityParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratMemAffinityParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",              1, 0,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",            1, 1,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Proximity Domain", 4, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Domain",  4, 2,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 2, 6, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",          2, 6,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Base Address Low", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address Low",  4, 8,  L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Base Address High", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Base Address High", 4, 12, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length Low", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length Low",        4, 16, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length High", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length High",       4, 20, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 24, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",          4, 24, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 28, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",             4, 28, L"0x%x",  NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 8, 32, L"0x%lx", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",          8, 32, L"0x%lx", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the APIC/SAPIC Affinity structure.
 | 
					  An ACPI_PARSER array describing the APIC/SAPIC Affinity structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratApciSapicAffinityParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratApciSapicAffinityParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",                    1, 0,  L"0x%x", NULL,                  NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",                  1, 1,  L"0x%x", NULL,                  NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Proximity Domain [7:0]", 1, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Domain [7:0]",  1, 2,  L"0x%x", NULL,                  NULL, NULL, NULL },
 | 
				
			||||||
  {L"APIC ID", 1, 3, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"APIC ID",                 1, 3,  L"0x%x", NULL,                  NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",                   4, 4,  L"0x%x", NULL,                  NULL, NULL, NULL },
 | 
				
			||||||
  {L"Local SAPIC EID", 1, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Local SAPIC EID",         1, 8,  L"0x%x", NULL,                  NULL, NULL, NULL },
 | 
				
			||||||
  {L"Proximity Domain [31:8]", 3, 9, L"0x%x", DumpSratApicProximity,
 | 
					  { L"Proximity Domain [31:8]", 3, 9,  L"0x%x", DumpSratApicProximity,
 | 
				
			||||||
   NULL, NULL, NULL},
 | 
					    NULL, NULL, NULL },
 | 
				
			||||||
  {L"Clock Domain", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Clock Domain",            4, 12, L"0x%x", NULL,                  NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An ACPI_PARSER array describing the Processor Local x2APIC Affinity structure.
 | 
					  An ACPI_PARSER array describing the Processor Local x2APIC Affinity structure.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST ACPI_PARSER SratX2ApciAffinityParser[] = {
 | 
					STATIC CONST ACPI_PARSER  SratX2ApciAffinityParser[] = {
 | 
				
			||||||
  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Type",             1, 0,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Length", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Length",           1, 1,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Reserved",         2, 2,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Proximity Domain", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Proximity Domain", 4, 4,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"X2APIC ID", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"X2APIC ID",        4, 8,  L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Flags", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Flags",            4, 12, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Clock Domain", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
 | 
					  { L"Clock Domain",     4, 16, L"0x%x", NULL, NULL, NULL, NULL },
 | 
				
			||||||
  {L"Reserved", 4, 20, L"0x%x", NULL, NULL, NULL, NULL}
 | 
					  { L"Reserved",         4, 20, L"0x%x", NULL, NULL, NULL, NULL }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -352,28 +352,28 @@ STATIC CONST ACPI_PARSER SratX2ApciAffinityParser[] = {
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSrat (
 | 
					ParseAcpiSrat (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32 Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT8* ResourcePtr;
 | 
					  UINT8   *ResourcePtr;
 | 
				
			||||||
  UINT32 GicCAffinityIndex;
 | 
					  UINT32  GicCAffinityIndex;
 | 
				
			||||||
  UINT32 GicITSAffinityIndex;
 | 
					  UINT32  GicITSAffinityIndex;
 | 
				
			||||||
  UINT32 GenericInitiatorAffinityIndex;
 | 
					  UINT32  GenericInitiatorAffinityIndex;
 | 
				
			||||||
  UINT32 MemoryAffinityIndex;
 | 
					  UINT32  MemoryAffinityIndex;
 | 
				
			||||||
  UINT32 ApicSapicAffinityIndex;
 | 
					  UINT32  ApicSapicAffinityIndex;
 | 
				
			||||||
  UINT32 X2ApicAffinityIndex;
 | 
					  UINT32  X2ApicAffinityIndex;
 | 
				
			||||||
  CHAR8  Buffer[80];  // Used for AsciiName param of ParseAcpi
 | 
					  CHAR8   Buffer[80]; // Used for AsciiName param of ParseAcpi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GicCAffinityIndex = 0;
 | 
					  GicCAffinityIndex             = 0;
 | 
				
			||||||
  GicITSAffinityIndex = 0;
 | 
					  GicITSAffinityIndex           = 0;
 | 
				
			||||||
  GenericInitiatorAffinityIndex = 0;
 | 
					  GenericInitiatorAffinityIndex = 0;
 | 
				
			||||||
  MemoryAffinityIndex = 0;
 | 
					  MemoryAffinityIndex           = 0;
 | 
				
			||||||
  ApicSapicAffinityIndex = 0;
 | 
					  ApicSapicAffinityIndex        = 0;
 | 
				
			||||||
  X2ApicAffinityIndex = 0;
 | 
					  X2ApicAffinityIndex           = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -403,11 +403,12 @@ ParseAcpiSrat (
 | 
				
			|||||||
    // Check if the values used to control the parsing logic have been
 | 
					    // Check if the values used to control the parsing logic have been
 | 
				
			||||||
    // successfully read.
 | 
					    // successfully read.
 | 
				
			||||||
    if ((SratRAType == NULL) ||
 | 
					    if ((SratRAType == NULL) ||
 | 
				
			||||||
        (SratRALength == NULL)) {
 | 
					        (SratRALength == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
					        L"ERROR: Insufficient remaining table buffer length to read the " \
 | 
				
			||||||
          L"Static Resource Allocation structure header. Length = %d.\n",
 | 
					        L"Static Resource Allocation structure header. Length = %d.\n",
 | 
				
			||||||
        AcpiTableLength - Offset
 | 
					        AcpiTableLength - Offset
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -415,11 +416,12 @@ ParseAcpiSrat (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Validate Static Resource Allocation Structure length
 | 
					    // Validate Static Resource Allocation Structure length
 | 
				
			||||||
    if ((*SratRALength == 0) ||
 | 
					    if ((*SratRALength == 0) ||
 | 
				
			||||||
        ((Offset + (*SratRALength)) > AcpiTableLength)) {
 | 
					        ((Offset + (*SratRALength)) > AcpiTableLength))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      IncrementErrorCount ();
 | 
					      IncrementErrorCount ();
 | 
				
			||||||
      Print (
 | 
					      Print (
 | 
				
			||||||
        L"ERROR: Invalid Static Resource Allocation Structure length. " \
 | 
					        L"ERROR: Invalid Static Resource Allocation Structure length. " \
 | 
				
			||||||
          L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
					        L"Length = %d. Offset = %d. AcpiTableLength = %d.\n",
 | 
				
			||||||
        *SratRALength,
 | 
					        *SratRALength,
 | 
				
			||||||
        Offset,
 | 
					        Offset,
 | 
				
			||||||
        AcpiTableLength
 | 
					        AcpiTableLength
 | 
				
			||||||
@@ -451,7 +453,7 @@ ParseAcpiSrat (
 | 
				
			|||||||
          sizeof (Buffer),
 | 
					          sizeof (Buffer),
 | 
				
			||||||
          "GIC ITS Affinity Structure [%d]",
 | 
					          "GIC ITS Affinity Structure [%d]",
 | 
				
			||||||
          GicITSAffinityIndex++
 | 
					          GicITSAffinityIndex++
 | 
				
			||||||
        );
 | 
					          );
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -468,7 +470,7 @@ ParseAcpiSrat (
 | 
				
			|||||||
          sizeof (Buffer),
 | 
					          sizeof (Buffer),
 | 
				
			||||||
          "Generic Initiator Affinity Structure [%d]",
 | 
					          "Generic Initiator Affinity Structure [%d]",
 | 
				
			||||||
          GenericInitiatorAffinityIndex++
 | 
					          GenericInitiatorAffinityIndex++
 | 
				
			||||||
        );
 | 
					          );
 | 
				
			||||||
        ParseAcpi (
 | 
					        ParseAcpi (
 | 
				
			||||||
          TRUE,
 | 
					          TRUE,
 | 
				
			||||||
          2,
 | 
					          2,
 | 
				
			||||||
@@ -476,7 +478,7 @@ ParseAcpiSrat (
 | 
				
			|||||||
          ResourcePtr,
 | 
					          ResourcePtr,
 | 
				
			||||||
          *SratRALength,
 | 
					          *SratRALength,
 | 
				
			||||||
          PARSER_PARAMS (SratGenericInitiatorAffinityParser)
 | 
					          PARSER_PARAMS (SratGenericInitiatorAffinityParser)
 | 
				
			||||||
        );
 | 
					          );
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case EFI_ACPI_6_3_MEMORY_AFFINITY:
 | 
					      case EFI_ACPI_6_3_MEMORY_AFFINITY:
 | 
				
			||||||
@@ -537,6 +539,6 @@ ParseAcpiSrat (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ResourcePtr += (*SratRALength);
 | 
					    ResourcePtr += (*SratRALength);
 | 
				
			||||||
    Offset += (*SratRALength);
 | 
					    Offset      += (*SratRALength);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,10 +28,10 @@
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiSsdt (
 | 
					ParseAcpiSsdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (!Trace) {
 | 
					  if (!Trace) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,11 +15,11 @@
 | 
				
			|||||||
#include "AcpiTableParser.h"
 | 
					#include "AcpiTableParser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Local variables
 | 
					// Local variables
 | 
				
			||||||
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
 | 
					STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** An ACPI_PARSER array describing the ACPI XSDT table.
 | 
					/** An ACPI_PARSER array describing the ACPI XSDT table.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC CONST ACPI_PARSER XsdtParser[] = {
 | 
					STATIC CONST ACPI_PARSER  XsdtParser[] = {
 | 
				
			||||||
  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
					  PARSE_ACPI_HEADER (&AcpiHdrInfo)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -30,7 +30,7 @@ CONST ACPI_DESCRIPTION_HEADER_INFO *
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
GetAcpiXsdtHeaderInfo (
 | 
					GetAcpiXsdtHeaderInfo (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
)
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return &AcpiHdrInfo;
 | 
					  return &AcpiHdrInfo;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -48,17 +48,17 @@ GetAcpiXsdtHeaderInfo (
 | 
				
			|||||||
VOID
 | 
					VOID
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ParseAcpiXsdt (
 | 
					ParseAcpiXsdt (
 | 
				
			||||||
  IN BOOLEAN Trace,
 | 
					  IN BOOLEAN  Trace,
 | 
				
			||||||
  IN UINT8*  Ptr,
 | 
					  IN UINT8    *Ptr,
 | 
				
			||||||
  IN UINT32  AcpiTableLength,
 | 
					  IN UINT32   AcpiTableLength,
 | 
				
			||||||
  IN UINT8   AcpiTableRevision
 | 
					  IN UINT8    AcpiTableRevision
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32        Offset;
 | 
					  UINT32  Offset;
 | 
				
			||||||
  UINT32        TableOffset;
 | 
					  UINT32  TableOffset;
 | 
				
			||||||
  UINT64*       TablePointer;
 | 
					  UINT64  *TablePointer;
 | 
				
			||||||
  UINTN         EntryIndex;
 | 
					  UINTN   EntryIndex;
 | 
				
			||||||
  CHAR16        Buffer[32];
 | 
					  CHAR16  Buffer[32];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Offset = ParseAcpi (
 | 
					  Offset = ParseAcpi (
 | 
				
			||||||
             Trace,
 | 
					             Trace,
 | 
				
			||||||
@@ -72,24 +72,24 @@ ParseAcpiXsdt (
 | 
				
			|||||||
  TableOffset = Offset;
 | 
					  TableOffset = Offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Trace) {
 | 
					  if (Trace) {
 | 
				
			||||||
    EntryIndex = 0;
 | 
					    EntryIndex   = 0;
 | 
				
			||||||
    TablePointer = (UINT64*)(Ptr + TableOffset);
 | 
					    TablePointer = (UINT64 *)(Ptr + TableOffset);
 | 
				
			||||||
    while (Offset < AcpiTableLength) {
 | 
					    while (Offset < AcpiTableLength) {
 | 
				
			||||||
      CONST UINT32* Signature;
 | 
					      CONST UINT32  *Signature;
 | 
				
			||||||
      CONST UINT32* Length;
 | 
					      CONST UINT32  *Length;
 | 
				
			||||||
      CONST UINT8*  Revision;
 | 
					      CONST UINT8   *Revision;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ((UINT64*)(UINTN)(*TablePointer) != NULL) {
 | 
					      if ((UINT64 *)(UINTN)(*TablePointer) != NULL) {
 | 
				
			||||||
        UINT8*      SignaturePtr;
 | 
					        UINT8  *SignaturePtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ParseAcpiHeader (
 | 
					        ParseAcpiHeader (
 | 
				
			||||||
          (UINT8*)(UINTN)(*TablePointer),
 | 
					          (UINT8 *)(UINTN)(*TablePointer),
 | 
				
			||||||
          &Signature,
 | 
					          &Signature,
 | 
				
			||||||
          &Length,
 | 
					          &Length,
 | 
				
			||||||
          &Revision
 | 
					          &Revision
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SignaturePtr = (UINT8*)Signature;
 | 
					        SignaturePtr = (UINT8 *)Signature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        UnicodeSPrint (
 | 
					        UnicodeSPrint (
 | 
				
			||||||
          Buffer,
 | 
					          Buffer,
 | 
				
			||||||
@@ -114,7 +114,7 @@ ParseAcpiXsdt (
 | 
				
			|||||||
      Print (L"0x%lx\n", *TablePointer);
 | 
					      Print (L"0x%lx\n", *TablePointer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Validate the table pointers are not NULL
 | 
					      // Validate the table pointers are not NULL
 | 
				
			||||||
      if ((UINT64*)(UINTN)(*TablePointer) == NULL) {
 | 
					      if ((UINT64 *)(UINTN)(*TablePointer) == NULL) {
 | 
				
			||||||
        IncrementErrorCount ();
 | 
					        IncrementErrorCount ();
 | 
				
			||||||
        Print (
 | 
					        Print (
 | 
				
			||||||
          L"ERROR: Invalid table entry at 0x%lx, table address is 0x%lx\n",
 | 
					          L"ERROR: Invalid table entry at 0x%lx, table address is 0x%lx\n",
 | 
				
			||||||
@@ -122,18 +122,20 @@ ParseAcpiXsdt (
 | 
				
			|||||||
          *TablePointer
 | 
					          *TablePointer
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Offset += sizeof (UINT64);
 | 
					      Offset += sizeof (UINT64);
 | 
				
			||||||
      TablePointer++;
 | 
					      TablePointer++;
 | 
				
			||||||
    } // while
 | 
					    } // while
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Process the tables
 | 
					  // Process the tables
 | 
				
			||||||
  Offset = TableOffset;
 | 
					  Offset       = TableOffset;
 | 
				
			||||||
  TablePointer = (UINT64*)(Ptr + TableOffset);
 | 
					  TablePointer = (UINT64 *)(Ptr + TableOffset);
 | 
				
			||||||
  while (Offset < AcpiTableLength) {
 | 
					  while (Offset < AcpiTableLength) {
 | 
				
			||||||
    if ((UINT64*)(UINTN)(*TablePointer) != NULL) {
 | 
					    if ((UINT64 *)(UINTN)(*TablePointer) != NULL) {
 | 
				
			||||||
      ProcessAcpiTable ((UINT8*)(UINTN)(*TablePointer));
 | 
					      ProcessAcpiTable ((UINT8 *)(UINTN)(*TablePointer));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Offset += sizeof (UINT64);
 | 
					    Offset += sizeof (UINT64);
 | 
				
			||||||
    TablePointer++;
 | 
					    TablePointer++;
 | 
				
			||||||
  } // while
 | 
					  } // while
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,20 +25,20 @@
 | 
				
			|||||||
#include "AcpiView.h"
 | 
					#include "AcpiView.h"
 | 
				
			||||||
#include "AcpiViewConfig.h"
 | 
					#include "AcpiViewConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CONST CHAR16 gShellAcpiViewFileName[] = L"ShellCommand";
 | 
					CONST CHAR16    gShellAcpiViewFileName[] = L"ShellCommand";
 | 
				
			||||||
EFI_HII_HANDLE gShellAcpiViewHiiHandle = NULL;
 | 
					EFI_HII_HANDLE  gShellAcpiViewHiiHandle  = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  An array of acpiview command line parameters.
 | 
					  An array of acpiview command line parameters.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
 | 
					STATIC CONST SHELL_PARAM_ITEM  ParamList[] = {
 | 
				
			||||||
  {L"-q", TypeFlag},
 | 
					  { L"-q", TypeFlag  },
 | 
				
			||||||
  {L"-d", TypeFlag},
 | 
					  { L"-d", TypeFlag  },
 | 
				
			||||||
  {L"-h", TypeFlag},
 | 
					  { L"-h", TypeFlag  },
 | 
				
			||||||
  {L"-l", TypeFlag},
 | 
					  { L"-l", TypeFlag  },
 | 
				
			||||||
  {L"-s", TypeValue},
 | 
					  { L"-s", TypeValue },
 | 
				
			||||||
  {L"-r", TypeValue},
 | 
					  { L"-r", TypeValue },
 | 
				
			||||||
  {NULL, TypeMax}
 | 
					  { NULL,  TypeMax   }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -46,30 +46,30 @@ STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
CONST
 | 
					CONST
 | 
				
			||||||
ACPI_TABLE_PARSER ParserList[] = {
 | 
					ACPI_TABLE_PARSER  ParserList[] = {
 | 
				
			||||||
  {EFI_ACPI_6_3_ARM_ERROR_SOURCE_TABLE_SIGNATURE, ParseAcpiAest},
 | 
					  { EFI_ACPI_6_3_ARM_ERROR_SOURCE_TABLE_SIGNATURE,                                                       ParseAcpiAest },
 | 
				
			||||||
  {EFI_ACPI_6_2_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE, ParseAcpiBgrt},
 | 
					  { EFI_ACPI_6_2_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE,                                                 ParseAcpiBgrt },
 | 
				
			||||||
  {EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, ParseAcpiDbg2},
 | 
					  { EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE,                                                           ParseAcpiDbg2 },
 | 
				
			||||||
  {EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  { EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
   ParseAcpiDsdt},
 | 
					    ParseAcpiDsdt },
 | 
				
			||||||
  {EFI_ACPI_6_3_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE, ParseAcpiFacs},
 | 
					  { EFI_ACPI_6_3_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE,                                              ParseAcpiFacs },
 | 
				
			||||||
  {EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, ParseAcpiFadt},
 | 
					  { EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,                                                 ParseAcpiFadt },
 | 
				
			||||||
  {EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, ParseAcpiGtdt},
 | 
					  { EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,                                              ParseAcpiGtdt },
 | 
				
			||||||
  {EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_SIGNATURE, ParseAcpiHmat},
 | 
					  { EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_SIGNATURE,                                         ParseAcpiHmat },
 | 
				
			||||||
  {EFI_ACPI_6_2_IO_REMAPPING_TABLE_SIGNATURE, ParseAcpiIort},
 | 
					  { EFI_ACPI_6_2_IO_REMAPPING_TABLE_SIGNATURE,                                                           ParseAcpiIort },
 | 
				
			||||||
  {EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, ParseAcpiMadt},
 | 
					  { EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,                                              ParseAcpiMadt },
 | 
				
			||||||
  {EFI_ACPI_6_2_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
 | 
					  { EFI_ACPI_6_2_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
 | 
				
			||||||
   ParseAcpiMcfg},
 | 
					    ParseAcpiMcfg },
 | 
				
			||||||
  {EFI_ACPI_6_4_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE,
 | 
					  { EFI_ACPI_6_4_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE,
 | 
				
			||||||
   ParseAcpiPcct},
 | 
					    ParseAcpiPcct },
 | 
				
			||||||
  {EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE,
 | 
					  { EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE,
 | 
				
			||||||
   ParseAcpiPptt},
 | 
					    ParseAcpiPptt },
 | 
				
			||||||
  {RSDP_TABLE_INFO, ParseAcpiRsdp},
 | 
					  { RSDP_TABLE_INFO,                                                                                     ParseAcpiRsdp },
 | 
				
			||||||
  {EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE, ParseAcpiSlit},
 | 
					  { EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE,                                            ParseAcpiSlit },
 | 
				
			||||||
  {EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, ParseAcpiSpcr},
 | 
					  { EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,                                        ParseAcpiSpcr },
 | 
				
			||||||
  {EFI_ACPI_6_2_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE, ParseAcpiSrat},
 | 
					  { EFI_ACPI_6_2_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE,                                               ParseAcpiSrat },
 | 
				
			||||||
  {EFI_ACPI_6_2_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, ParseAcpiSsdt},
 | 
					  { EFI_ACPI_6_2_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,                                           ParseAcpiSsdt },
 | 
				
			||||||
  {EFI_ACPI_6_2_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, ParseAcpiXsdt}
 | 
					  { EFI_ACPI_6_2_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,                                            ParseAcpiXsdt }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -86,11 +86,11 @@ EFI_STATUS
 | 
				
			|||||||
RegisterAllParsers (
 | 
					RegisterAllParsers (
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
  UINTN Count;
 | 
					  UINTN       Count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = EFI_SUCCESS;
 | 
					  Status = EFI_SUCCESS;
 | 
				
			||||||
  Count = sizeof (ParserList) / sizeof (ParserList[0]);
 | 
					  Count  = sizeof (ParserList) / sizeof (ParserList[0]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (Count-- != 0) {
 | 
					  while (Count-- != 0) {
 | 
				
			||||||
    Status = RegisterParser (
 | 
					    Status = RegisterParser (
 | 
				
			||||||
@@ -101,6 +101,7 @@ RegisterAllParsers (
 | 
				
			|||||||
      return Status;
 | 
					      return Status;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return Status;
 | 
					  return Status;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -116,14 +117,14 @@ RegisterAllParsers (
 | 
				
			|||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellDumpBufferToFile (
 | 
					ShellDumpBufferToFile (
 | 
				
			||||||
  IN CONST CHAR16* FileNameBuffer,
 | 
					  IN CONST CHAR16  *FileNameBuffer,
 | 
				
			||||||
  IN CONST VOID*   Buffer,
 | 
					  IN CONST VOID    *Buffer,
 | 
				
			||||||
  IN CONST UINTN   BufferSize
 | 
					  IN CONST UINTN   BufferSize
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS          Status;
 | 
					  EFI_STATUS         Status;
 | 
				
			||||||
  SHELL_FILE_HANDLE   DumpFileHandle;
 | 
					  SHELL_FILE_HANDLE  DumpFileHandle;
 | 
				
			||||||
  UINTN               TransferBytes;
 | 
					  UINTN              TransferBytes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = ShellOpenFileByName (
 | 
					  Status = ShellOpenFileByName (
 | 
				
			||||||
             FileNameBuffer,
 | 
					             FileNameBuffer,
 | 
				
			||||||
@@ -145,11 +146,11 @@ ShellDumpBufferToFile (
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TransferBytes = BufferSize;
 | 
					  TransferBytes = BufferSize;
 | 
				
			||||||
  Status = ShellWriteFile (
 | 
					  Status        = ShellWriteFile (
 | 
				
			||||||
             DumpFileHandle,
 | 
					                    DumpFileHandle,
 | 
				
			||||||
             &TransferBytes,
 | 
					                    &TransferBytes,
 | 
				
			||||||
             (VOID *) Buffer
 | 
					                    (VOID *)Buffer
 | 
				
			||||||
             );
 | 
					                    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    Print (L"ERROR: Failed to write binary file.\n");
 | 
					    Print (L"ERROR: Failed to write binary file.\n");
 | 
				
			||||||
@@ -167,7 +168,7 @@ ShellDumpBufferToFile (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return The string pointer to the file name.
 | 
					  @return The string pointer to the file name.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CONST CHAR16*
 | 
					CONST CHAR16 *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandGetManFileNameAcpiView (
 | 
					ShellCommandGetManFileNameAcpiView (
 | 
				
			||||||
  VOID
 | 
					  VOID
 | 
				
			||||||
@@ -190,27 +191,27 @@ SHELL_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
ShellCommandRunAcpiView (
 | 
					ShellCommandRunAcpiView (
 | 
				
			||||||
  IN EFI_HANDLE        ImageHandle,
 | 
					  IN EFI_HANDLE        ImageHandle,
 | 
				
			||||||
  IN EFI_SYSTEM_TABLE* SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS         Status;
 | 
					  EFI_STATUS         Status;
 | 
				
			||||||
  SHELL_STATUS       ShellStatus;
 | 
					  SHELL_STATUS       ShellStatus;
 | 
				
			||||||
  LIST_ENTRY*        Package;
 | 
					  LIST_ENTRY         *Package;
 | 
				
			||||||
  CHAR16*            ProblemParam;
 | 
					  CHAR16             *ProblemParam;
 | 
				
			||||||
  SHELL_FILE_HANDLE  TmpDumpFileHandle;
 | 
					  SHELL_FILE_HANDLE  TmpDumpFileHandle;
 | 
				
			||||||
  CONST CHAR16*      MandatoryTableSpecStr;
 | 
					  CONST CHAR16       *MandatoryTableSpecStr;
 | 
				
			||||||
  CONST CHAR16*      SelectedTableName;
 | 
					  CONST CHAR16       *SelectedTableName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Set configuration defaults
 | 
					  // Set configuration defaults
 | 
				
			||||||
  AcpiConfigSetDefaults ();
 | 
					  AcpiConfigSetDefaults ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellStatus = SHELL_SUCCESS;
 | 
					  ShellStatus       = SHELL_SUCCESS;
 | 
				
			||||||
  Package = NULL;
 | 
					  Package           = NULL;
 | 
				
			||||||
  TmpDumpFileHandle = NULL;
 | 
					  TmpDumpFileHandle = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
					  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
 | 
					    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
@@ -224,6 +225,7 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      Print (L"acpiview: Error processing input parameter(s)\n");
 | 
					      Print (L"acpiview: Error processing input parameter(s)\n");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					    ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (ShellCommandLineGetCount (Package) > 1) {
 | 
					    if (ShellCommandLineGetCount (Package) > 1) {
 | 
				
			||||||
@@ -246,7 +248,8 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
        L"acpiview"
 | 
					        L"acpiview"
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    } else if (ShellCommandLineGetFlag (Package, L"-s") &&
 | 
					    } else if (ShellCommandLineGetFlag (Package, L"-s") &&
 | 
				
			||||||
               ShellCommandLineGetValue (Package, L"-s") == NULL) {
 | 
					               (ShellCommandLineGetValue (Package, L"-s") == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
@@ -258,7 +261,8 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if (ShellCommandLineGetFlag (Package, L"-r") &&
 | 
					    } else if (ShellCommandLineGetFlag (Package, L"-r") &&
 | 
				
			||||||
               ShellCommandLineGetValue (Package, L"-r") == NULL) {
 | 
					               (ShellCommandLineGetValue (Package, L"-r") == NULL))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
@@ -270,7 +274,8 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if ((ShellCommandLineGetFlag (Package, L"-s") &&
 | 
					    } else if ((ShellCommandLineGetFlag (Package, L"-s") &&
 | 
				
			||||||
                ShellCommandLineGetFlag (Package, L"-l"))) {
 | 
					                ShellCommandLineGetFlag (Package, L"-l")))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
        -1,
 | 
					        -1,
 | 
				
			||||||
@@ -281,18 +286,19 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if (ShellCommandLineGetFlag (Package, L"-d") &&
 | 
					    } else if (ShellCommandLineGetFlag (Package, L"-d") &&
 | 
				
			||||||
               !ShellCommandLineGetFlag (Package, L"-s")) {
 | 
					               !ShellCommandLineGetFlag (Package, L"-s"))
 | 
				
			||||||
        ShellPrintHiiEx (
 | 
					    {
 | 
				
			||||||
          -1,
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
          -1,
 | 
					        -1,
 | 
				
			||||||
          NULL,
 | 
					        -1,
 | 
				
			||||||
          STRING_TOKEN (STR_GEN_MISSING_OPTION),
 | 
					        NULL,
 | 
				
			||||||
          gShellAcpiViewHiiHandle,
 | 
					        STRING_TOKEN (STR_GEN_MISSING_OPTION),
 | 
				
			||||||
          L"acpiview",
 | 
					        gShellAcpiViewHiiHandle,
 | 
				
			||||||
          L"-s",
 | 
					        L"acpiview",
 | 
				
			||||||
          L"-d"
 | 
					        L"-s",
 | 
				
			||||||
          );
 | 
					        L"-d"
 | 
				
			||||||
        ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					        );
 | 
				
			||||||
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      // Turn on colour highlighting if requested
 | 
					      // Turn on colour highlighting if requested
 | 
				
			||||||
      SetColourHighlighting (ShellCommandLineGetFlag (Package, L"-h"));
 | 
					      SetColourHighlighting (ShellCommandLineGetFlag (Package, L"-h"));
 | 
				
			||||||
@@ -316,9 +322,9 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
          SelectAcpiTable (SelectedTableName);
 | 
					          SelectAcpiTable (SelectedTableName);
 | 
				
			||||||
          SetReportOption (ReportSelected);
 | 
					          SetReportOption (ReportSelected);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (ShellCommandLineGetFlag (Package, L"-d"))  {
 | 
					          if (ShellCommandLineGetFlag (Package, L"-d")) {
 | 
				
			||||||
            // Create a temporary file to check if the media is writable.
 | 
					            // Create a temporary file to check if the media is writable.
 | 
				
			||||||
            CHAR16 FileNameBuffer[MAX_FILE_NAME_LEN];
 | 
					            CHAR16  FileNameBuffer[MAX_FILE_NAME_LEN];
 | 
				
			||||||
            SetReportOption (ReportDumpBinFile);
 | 
					            SetReportOption (ReportDumpBinFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            UnicodeSPrint (
 | 
					            UnicodeSPrint (
 | 
				
			||||||
@@ -337,7 +343,7 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
                       );
 | 
					                       );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (EFI_ERROR (Status)) {
 | 
					            if (EFI_ERROR (Status)) {
 | 
				
			||||||
              ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					              ShellStatus       = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
              TmpDumpFileHandle = NULL;
 | 
					              TmpDumpFileHandle = NULL;
 | 
				
			||||||
              ShellPrintHiiEx (
 | 
					              ShellPrintHiiEx (
 | 
				
			||||||
                -1,
 | 
					                -1,
 | 
				
			||||||
@@ -349,6 +355,7 @@ ShellCommandRunAcpiView (
 | 
				
			|||||||
                );
 | 
					                );
 | 
				
			||||||
              goto Done;
 | 
					              goto Done;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Delete Temporary file.
 | 
					            // Delete Temporary file.
 | 
				
			||||||
            ShellDeleteFile (&TmpDumpFileHandle);
 | 
					            ShellDeleteFile (&TmpDumpFileHandle);
 | 
				
			||||||
          } // -d
 | 
					          } // -d
 | 
				
			||||||
@@ -367,6 +374,7 @@ Done:
 | 
				
			|||||||
  if (Package != NULL) {
 | 
					  if (Package != NULL) {
 | 
				
			||||||
    ShellCommandLineFreeVarList (Package);
 | 
					    ShellCommandLineFreeVarList (Package);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return ShellStatus;
 | 
					  return ShellStatus;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -389,7 +397,8 @@ UefiShellAcpiViewCommandLibConstructor (
 | 
				
			|||||||
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  gShellAcpiViewHiiHandle = NULL;
 | 
					  gShellAcpiViewHiiHandle = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Check Shell Profile Debug1 bit of the profiles mask
 | 
					  // Check Shell Profile Debug1 bit of the profiles mask
 | 
				
			||||||
@@ -412,6 +421,7 @@ UefiShellAcpiViewCommandLibConstructor (
 | 
				
			|||||||
  if (gShellAcpiViewHiiHandle == NULL) {
 | 
					  if (gShellAcpiViewHiiHandle == NULL) {
 | 
				
			||||||
    return EFI_DEVICE_ERROR;
 | 
					    return EFI_DEVICE_ERROR;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Install our Shell command handler
 | 
					  // Install our Shell command handler
 | 
				
			||||||
  ShellCommandRegisterCommandName (
 | 
					  ShellCommandRegisterCommandName (
 | 
				
			||||||
    L"acpiview",
 | 
					    L"acpiview",
 | 
				
			||||||
@@ -443,5 +453,6 @@ UefiShellAcpiViewCommandLibDestructor (
 | 
				
			|||||||
  if (gShellAcpiViewHiiHandle != NULL) {
 | 
					  if (gShellAcpiViewHiiHandle != NULL) {
 | 
				
			||||||
    HiiRemovePackages (gShellAcpiViewHiiHandle);
 | 
					    HiiRemovePackages (gShellAcpiViewHiiHandle);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -43,51 +43,54 @@ ShellCEntryLib (
 | 
				
			|||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  INTN                           ReturnFromMain;
 | 
					  INTN                           ReturnFromMain;
 | 
				
			||||||
  EFI_SHELL_PARAMETERS_PROTOCOL *EfiShellParametersProtocol;
 | 
					  EFI_SHELL_PARAMETERS_PROTOCOL  *EfiShellParametersProtocol;
 | 
				
			||||||
  EFI_SHELL_INTERFACE           *EfiShellInterface;
 | 
					  EFI_SHELL_INTERFACE            *EfiShellInterface;
 | 
				
			||||||
  EFI_STATUS                    Status;
 | 
					  EFI_STATUS                     Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ReturnFromMain = -1;
 | 
					  ReturnFromMain             = -1;
 | 
				
			||||||
  EfiShellParametersProtocol = NULL;
 | 
					  EfiShellParametersProtocol = NULL;
 | 
				
			||||||
  EfiShellInterface = NULL;
 | 
					  EfiShellInterface          = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = SystemTable->BootServices->OpenProtocol(ImageHandle,
 | 
					  Status = SystemTable->BootServices->OpenProtocol (
 | 
				
			||||||
                             &gEfiShellParametersProtocolGuid,
 | 
					                                        ImageHandle,
 | 
				
			||||||
                             (VOID **)&EfiShellParametersProtocol,
 | 
					                                        &gEfiShellParametersProtocolGuid,
 | 
				
			||||||
                             ImageHandle,
 | 
					                                        (VOID **)&EfiShellParametersProtocol,
 | 
				
			||||||
                             NULL,
 | 
					                                        ImageHandle,
 | 
				
			||||||
                             EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
					                                        NULL,
 | 
				
			||||||
                            );
 | 
					                                        EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
				
			||||||
  if (!EFI_ERROR(Status)) {
 | 
					                                        );
 | 
				
			||||||
 | 
					  if (!EFI_ERROR (Status)) {
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // use shell 2.0 interface
 | 
					    // use shell 2.0 interface
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    ReturnFromMain = ShellAppMain (
 | 
					    ReturnFromMain = ShellAppMain (
 | 
				
			||||||
                       EfiShellParametersProtocol->Argc,
 | 
					                       EfiShellParametersProtocol->Argc,
 | 
				
			||||||
                       EfiShellParametersProtocol->Argv
 | 
					                       EfiShellParametersProtocol->Argv
 | 
				
			||||||
                      );
 | 
					                       );
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // try to get shell 1.0 interface instead.
 | 
					    // try to get shell 1.0 interface instead.
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    Status = SystemTable->BootServices->OpenProtocol(ImageHandle,
 | 
					    Status = SystemTable->BootServices->OpenProtocol (
 | 
				
			||||||
                               &gEfiShellInterfaceGuid,
 | 
					                                          ImageHandle,
 | 
				
			||||||
                               (VOID **)&EfiShellInterface,
 | 
					                                          &gEfiShellInterfaceGuid,
 | 
				
			||||||
                               ImageHandle,
 | 
					                                          (VOID **)&EfiShellInterface,
 | 
				
			||||||
                               NULL,
 | 
					                                          ImageHandle,
 | 
				
			||||||
                               EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
					                                          NULL,
 | 
				
			||||||
                              );
 | 
					                                          EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
				
			||||||
    if (!EFI_ERROR(Status)) {
 | 
					                                          );
 | 
				
			||||||
 | 
					    if (!EFI_ERROR (Status)) {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // use shell 1.0 interface
 | 
					      // use shell 1.0 interface
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      ReturnFromMain = ShellAppMain (
 | 
					      ReturnFromMain = ShellAppMain (
 | 
				
			||||||
                         EfiShellInterface->Argc,
 | 
					                         EfiShellInterface->Argc,
 | 
				
			||||||
                         EfiShellInterface->Argv
 | 
					                         EfiShellInterface->Argv
 | 
				
			||||||
                        );
 | 
					                         );
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ASSERT(FALSE);
 | 
					      ASSERT (FALSE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return ReturnFromMain;
 | 
					  return ReturnFromMain;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -41,24 +41,24 @@
 | 
				
			|||||||
#include <Library/UefiLib.h>
 | 
					#include <Library/UefiLib.h>
 | 
				
			||||||
#include <Library/OrderedCollectionLib.h>
 | 
					#include <Library/OrderedCollectionLib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct{
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY                  Link;
 | 
					  LIST_ENTRY                Link;
 | 
				
			||||||
  CHAR16                      *CommandString;
 | 
					  CHAR16                    *CommandString;
 | 
				
			||||||
  SHELL_GET_MAN_FILENAME      GetManFileName;
 | 
					  SHELL_GET_MAN_FILENAME    GetManFileName;
 | 
				
			||||||
  SHELL_RUN_COMMAND           CommandHandler;
 | 
					  SHELL_RUN_COMMAND         CommandHandler;
 | 
				
			||||||
  BOOLEAN                     LastError;
 | 
					  BOOLEAN                   LastError;
 | 
				
			||||||
  EFI_HII_HANDLE              HiiHandle;
 | 
					  EFI_HII_HANDLE            HiiHandle;
 | 
				
			||||||
  EFI_STRING_ID               ManFormatHelp;
 | 
					  EFI_STRING_ID             ManFormatHelp;
 | 
				
			||||||
} SHELL_COMMAND_INTERNAL_LIST_ENTRY;
 | 
					} SHELL_COMMAND_INTERNAL_LIST_ENTRY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  LIST_ENTRY Link;
 | 
					  LIST_ENTRY     Link;
 | 
				
			||||||
  SCRIPT_FILE *Data;
 | 
					  SCRIPT_FILE    *Data;
 | 
				
			||||||
} SCRIPT_FILE_LIST;
 | 
					} SCRIPT_FILE_LIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  EFI_FILE_PROTOCOL *FileHandle;
 | 
					  EFI_FILE_PROTOCOL    *FileHandle;
 | 
				
			||||||
  CHAR16            *Path;
 | 
					  CHAR16               *Path;
 | 
				
			||||||
} SHELL_COMMAND_FILE_HANDLE;
 | 
					} SHELL_COMMAND_FILE_HANDLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -72,13 +72,12 @@ typedef struct {
 | 
				
			|||||||
  // instead, it *aliases* the FileName or FullName field of the
 | 
					  // instead, it *aliases* the FileName or FullName field of the
 | 
				
			||||||
  // EFI_SHELL_FILE_INFO object that was first encountered with this name.
 | 
					  // EFI_SHELL_FILE_INFO object that was first encountered with this name.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  CONST CHAR16 *Alias;
 | 
					  CONST CHAR16    *Alias;
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // A list of EFI_SHELL_FILE_INFO objects whose FileName or FullName fields
 | 
					  // A list of EFI_SHELL_FILE_INFO objects whose FileName or FullName fields
 | 
				
			||||||
  // compare equal to Alias, according to gUnicodeCollation->StriColl().
 | 
					  // compare equal to Alias, according to gUnicodeCollation->StriColl().
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  LIST_ENTRY SameNameList;
 | 
					  LIST_ENTRY      SameNameList;
 | 
				
			||||||
} SHELL_SORT_UNIQUE_NAME;
 | 
					} SHELL_SORT_UNIQUE_NAME;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //_UEFI_COMMAND_LIB_INTERNAL_HEADER_
 | 
					#endif //_UEFI_COMMAND_LIB_INTERNAL_HEADER_
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,11 +9,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "UefiShellDebug1CommandsLib.h"
 | 
					#include "UefiShellDebug1CommandsLib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
 | 
					STATIC CONST SHELL_PARAM_ITEM  ParamList[] = {
 | 
				
			||||||
  {L"-n", TypeValue},
 | 
					  { L"-n", TypeValue },
 | 
				
			||||||
  {L"-s", TypeValue},
 | 
					  { L"-s", TypeValue },
 | 
				
			||||||
  {NULL,  TypeMax}
 | 
					  { NULL,  TypeMax   }
 | 
				
			||||||
  };
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum {
 | 
					typedef enum {
 | 
				
			||||||
  OutOfDiffPoint,
 | 
					  OutOfDiffPoint,
 | 
				
			||||||
@@ -25,10 +25,10 @@ typedef enum {
 | 
				
			|||||||
// Buffer type, for reading both file operands in chunks.
 | 
					// Buffer type, for reading both file operands in chunks.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINT8 *Data;     // dynamically allocated buffer
 | 
					  UINT8    *Data;     // dynamically allocated buffer
 | 
				
			||||||
  UINTN Allocated; // the allocated size of Data
 | 
					  UINTN    Allocated; // the allocated size of Data
 | 
				
			||||||
  UINTN Next;      // next position in Data to fetch a byte at
 | 
					  UINTN    Next;      // next position in Data to fetch a byte at
 | 
				
			||||||
  UINTN Left;      // number of bytes left in Data for fetching at Next
 | 
					  UINTN    Left;      // number of bytes left in Data for fetching at Next
 | 
				
			||||||
} FILE_BUFFER;
 | 
					} FILE_BUFFER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -43,7 +43,7 @@ typedef struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
PrintDifferentPoint(
 | 
					PrintDifferentPoint (
 | 
				
			||||||
  CONST CHAR16  *FileName,
 | 
					  CONST CHAR16  *FileName,
 | 
				
			||||||
  CHAR16        *FileTag,
 | 
					  CHAR16        *FileTag,
 | 
				
			||||||
  UINT8         *Buffer,
 | 
					  UINT8         *Buffer,
 | 
				
			||||||
@@ -52,7 +52,7 @@ PrintDifferentPoint(
 | 
				
			|||||||
  UINT64        DifferentBytes
 | 
					  UINT64        DifferentBytes
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN Index;
 | 
					  UINTN  Index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellPrintEx (-1, -1, L"%s: %s\r\n  %08x:", FileTag, FileName, Address);
 | 
					  ShellPrintEx (-1, -1, L"%s: %s\r\n  %08x:", FileTag, FileName, Address);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -73,7 +73,7 @@ PrintDifferentPoint(
 | 
				
			|||||||
  // Print data in char-format.
 | 
					  // Print data in char-format.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  for (Index = 0; Index < BufferSize; Index++) {
 | 
					  for (Index = 0; Index < BufferSize; Index++) {
 | 
				
			||||||
    if (Buffer[Index] >= 0x20 && Buffer[Index] <= 0x7E) {
 | 
					    if ((Buffer[Index] >= 0x20) && (Buffer[Index] <= 0x7E)) {
 | 
				
			||||||
      ShellPrintEx (-1, -1, L"%c", Buffer[Index]);
 | 
					      ShellPrintEx (-1, -1, L"%c", Buffer[Index]);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
@@ -97,7 +97,7 @@ PrintDifferentPoint(
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
FileBufferInit (
 | 
					FileBufferInit (
 | 
				
			||||||
  OUT FILE_BUFFER *FileBuffer
 | 
					  OUT FILE_BUFFER  *FileBuffer
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  FileBuffer->Allocated = PcdGet32 (PcdShellFileOperationSize);
 | 
					  FileBuffer->Allocated = PcdGet32 (PcdShellFileOperationSize);
 | 
				
			||||||
@@ -116,7 +116,7 @@ FileBufferInit (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
FileBufferUninit (
 | 
					FileBufferUninit (
 | 
				
			||||||
  IN OUT FILE_BUFFER *FileBuffer
 | 
					  IN OUT FILE_BUFFER  *FileBuffer
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  SHELL_FREE_NON_NULL (FileBuffer->Data);
 | 
					  SHELL_FREE_NON_NULL (FileBuffer->Data);
 | 
				
			||||||
@@ -154,26 +154,31 @@ FileBufferUninit (
 | 
				
			|||||||
STATIC
 | 
					STATIC
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
FileBufferReadByte (
 | 
					FileBufferReadByte (
 | 
				
			||||||
  IN     SHELL_FILE_HANDLE FileHandle,
 | 
					  IN     SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  IN OUT FILE_BUFFER       *FileBuffer,
 | 
					  IN OUT FILE_BUFFER        *FileBuffer,
 | 
				
			||||||
     OUT UINTN             *BytesRead,
 | 
					  OUT UINTN                 *BytesRead,
 | 
				
			||||||
     OUT UINT8             *Byte
 | 
					  OUT UINT8                 *Byte
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN      ReadSize;
 | 
					  UINTN       ReadSize;
 | 
				
			||||||
  EFI_STATUS Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (FileBuffer->Left == 0) {
 | 
					  if (FileBuffer->Left == 0) {
 | 
				
			||||||
    ReadSize = FileBuffer->Allocated;
 | 
					    ReadSize = FileBuffer->Allocated;
 | 
				
			||||||
    Status = gEfiShellProtocol->ReadFile (FileHandle, &ReadSize,
 | 
					    Status   = gEfiShellProtocol->ReadFile (
 | 
				
			||||||
                                  FileBuffer->Data);
 | 
					                                    FileHandle,
 | 
				
			||||||
 | 
					                                    &ReadSize,
 | 
				
			||||||
 | 
					                                    FileBuffer->Data
 | 
				
			||||||
 | 
					                                    );
 | 
				
			||||||
    if (EFI_ERROR (Status)) {
 | 
					    if (EFI_ERROR (Status)) {
 | 
				
			||||||
      return Status;
 | 
					      return Status;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (ReadSize == 0) {
 | 
					    if (ReadSize == 0) {
 | 
				
			||||||
      *BytesRead = 0;
 | 
					      *BytesRead = 0;
 | 
				
			||||||
      return EFI_SUCCESS;
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    FileBuffer->Next = 0;
 | 
					    FileBuffer->Next = 0;
 | 
				
			||||||
    FileBuffer->Left = ReadSize;
 | 
					    FileBuffer->Left = ReadSize;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -199,112 +204,114 @@ ShellCommandRunComp (
 | 
				
			|||||||
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS          Status;
 | 
					  EFI_STATUS         Status;
 | 
				
			||||||
  LIST_ENTRY          *Package;
 | 
					  LIST_ENTRY         *Package;
 | 
				
			||||||
  CHAR16              *ProblemParam;
 | 
					  CHAR16             *ProblemParam;
 | 
				
			||||||
  CHAR16              *FileName1;
 | 
					  CHAR16             *FileName1;
 | 
				
			||||||
  CHAR16              *FileName2;
 | 
					  CHAR16             *FileName2;
 | 
				
			||||||
  CONST CHAR16        *TempParam;
 | 
					  CONST CHAR16       *TempParam;
 | 
				
			||||||
  SHELL_STATUS        ShellStatus;
 | 
					  SHELL_STATUS       ShellStatus;
 | 
				
			||||||
  SHELL_FILE_HANDLE   FileHandle1;
 | 
					  SHELL_FILE_HANDLE  FileHandle1;
 | 
				
			||||||
  SHELL_FILE_HANDLE   FileHandle2;
 | 
					  SHELL_FILE_HANDLE  FileHandle2;
 | 
				
			||||||
  UINT64              Size1;
 | 
					  UINT64             Size1;
 | 
				
			||||||
  UINT64              Size2;
 | 
					  UINT64             Size2;
 | 
				
			||||||
  UINT64              DifferentBytes;
 | 
					  UINT64             DifferentBytes;
 | 
				
			||||||
  UINT64              DifferentCount;
 | 
					  UINT64             DifferentCount;
 | 
				
			||||||
  UINT8               DiffPointNumber;
 | 
					  UINT8              DiffPointNumber;
 | 
				
			||||||
  UINT8               OneByteFromFile1;
 | 
					  UINT8              OneByteFromFile1;
 | 
				
			||||||
  UINT8               OneByteFromFile2;
 | 
					  UINT8              OneByteFromFile2;
 | 
				
			||||||
  UINT8               *DataFromFile1;
 | 
					  UINT8              *DataFromFile1;
 | 
				
			||||||
  UINT8               *DataFromFile2;
 | 
					  UINT8              *DataFromFile2;
 | 
				
			||||||
  FILE_BUFFER         FileBuffer1;
 | 
					  FILE_BUFFER        FileBuffer1;
 | 
				
			||||||
  FILE_BUFFER         FileBuffer2;
 | 
					  FILE_BUFFER        FileBuffer2;
 | 
				
			||||||
  UINTN               InsertPosition1;
 | 
					  UINTN              InsertPosition1;
 | 
				
			||||||
  UINTN               InsertPosition2;
 | 
					  UINTN              InsertPosition2;
 | 
				
			||||||
  UINTN               DataSizeFromFile1;
 | 
					  UINTN              DataSizeFromFile1;
 | 
				
			||||||
  UINTN               DataSizeFromFile2;
 | 
					  UINTN              DataSizeFromFile2;
 | 
				
			||||||
  UINTN               TempAddress;
 | 
					  UINTN              TempAddress;
 | 
				
			||||||
  UINTN               Index;
 | 
					  UINTN              Index;
 | 
				
			||||||
  UINTN               DiffPointAddress;
 | 
					  UINTN              DiffPointAddress;
 | 
				
			||||||
  READ_STATUS         ReadStatus;
 | 
					  READ_STATUS        ReadStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellStatus         = SHELL_SUCCESS;
 | 
					  ShellStatus      = SHELL_SUCCESS;
 | 
				
			||||||
  Status              = EFI_SUCCESS;
 | 
					  Status           = EFI_SUCCESS;
 | 
				
			||||||
  FileName1           = NULL;
 | 
					  FileName1        = NULL;
 | 
				
			||||||
  FileName2           = NULL;
 | 
					  FileName2        = NULL;
 | 
				
			||||||
  FileHandle1         = NULL;
 | 
					  FileHandle1      = NULL;
 | 
				
			||||||
  FileHandle2         = NULL;
 | 
					  FileHandle2      = NULL;
 | 
				
			||||||
  DataFromFile1       = NULL;
 | 
					  DataFromFile1    = NULL;
 | 
				
			||||||
  DataFromFile2       = NULL;
 | 
					  DataFromFile2    = NULL;
 | 
				
			||||||
  ReadStatus          = OutOfDiffPoint;
 | 
					  ReadStatus       = OutOfDiffPoint;
 | 
				
			||||||
  DifferentCount      = 10;
 | 
					  DifferentCount   = 10;
 | 
				
			||||||
  DifferentBytes      = 4;
 | 
					  DifferentBytes   = 4;
 | 
				
			||||||
  DiffPointNumber     = 0;
 | 
					  DiffPointNumber  = 0;
 | 
				
			||||||
  InsertPosition1     = 0;
 | 
					  InsertPosition1  = 0;
 | 
				
			||||||
  InsertPosition2     = 0;
 | 
					  InsertPosition2  = 0;
 | 
				
			||||||
  TempAddress         = 0;
 | 
					  TempAddress      = 0;
 | 
				
			||||||
  DiffPointAddress    = 0;
 | 
					  DiffPointAddress = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // initialize the shell lib (we must be in non-auto-init...)
 | 
					  // initialize the shell lib (we must be in non-auto-init...)
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellInitialize();
 | 
					  Status = ShellInitialize ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = CommandInit();
 | 
					  Status = CommandInit ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // parse the command line
 | 
					  // parse the command line
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
					  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
 | 
					    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"comp", ProblemParam);
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"comp", ProblemParam);
 | 
				
			||||||
      FreePool(ProblemParam);
 | 
					      FreePool (ProblemParam);
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ASSERT(FALSE);
 | 
					      ASSERT (FALSE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (ShellCommandLineGetCount(Package) > 3) {
 | 
					    if (ShellCommandLineGetCount (Package) > 3) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"comp");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"comp");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if (ShellCommandLineGetCount(Package) < 3) {
 | 
					    } else if (ShellCommandLineGetCount (Package) < 3) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"comp");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"comp");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      TempParam = ShellCommandLineGetRawValue(Package, 1);
 | 
					      TempParam = ShellCommandLineGetRawValue (Package, 1);
 | 
				
			||||||
      ASSERT(TempParam != NULL);
 | 
					      ASSERT (TempParam != NULL);
 | 
				
			||||||
      FileName1 = ShellFindFilePath(TempParam);
 | 
					      FileName1 = ShellFindFilePath (TempParam);
 | 
				
			||||||
      if (FileName1 == NULL) {
 | 
					      if (FileName1 == NULL) {
 | 
				
			||||||
        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
				
			||||||
        ShellStatus = SHELL_NOT_FOUND;
 | 
					        ShellStatus = SHELL_NOT_FOUND;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        Status = ShellOpenFileByName(FileName1, &FileHandle1, EFI_FILE_MODE_READ, 0);
 | 
					        Status = ShellOpenFileByName (FileName1, &FileHandle1, EFI_FILE_MODE_READ, 0);
 | 
				
			||||||
        if (EFI_ERROR(Status)) {
 | 
					        if (EFI_ERROR (Status)) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
				
			||||||
          ShellStatus = SHELL_NOT_FOUND;
 | 
					          ShellStatus = SHELL_NOT_FOUND;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      TempParam = ShellCommandLineGetRawValue(Package, 2);
 | 
					
 | 
				
			||||||
      ASSERT(TempParam != NULL);
 | 
					      TempParam = ShellCommandLineGetRawValue (Package, 2);
 | 
				
			||||||
      FileName2 = ShellFindFilePath(TempParam);
 | 
					      ASSERT (TempParam != NULL);
 | 
				
			||||||
 | 
					      FileName2 = ShellFindFilePath (TempParam);
 | 
				
			||||||
      if (FileName2 == NULL) {
 | 
					      if (FileName2 == NULL) {
 | 
				
			||||||
        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
				
			||||||
        ShellStatus = SHELL_NOT_FOUND;
 | 
					        ShellStatus = SHELL_NOT_FOUND;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        Status = ShellOpenFileByName(FileName2, &FileHandle2, EFI_FILE_MODE_READ, 0);
 | 
					        Status = ShellOpenFileByName (FileName2, &FileHandle2, EFI_FILE_MODE_READ, 0);
 | 
				
			||||||
        if (EFI_ERROR(Status)) {
 | 
					        if (EFI_ERROR (Status)) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
 | 
				
			||||||
          ShellStatus = SHELL_NOT_FOUND;
 | 
					          ShellStatus = SHELL_NOT_FOUND;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (ShellStatus == SHELL_SUCCESS) {
 | 
					      if (ShellStatus == SHELL_SUCCESS) {
 | 
				
			||||||
        Status = gEfiShellProtocol->GetFileSize(FileHandle1, &Size1);
 | 
					        Status = gEfiShellProtocol->GetFileSize (FileHandle1, &Size1);
 | 
				
			||||||
        ASSERT_EFI_ERROR(Status);
 | 
					        ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
        Status = gEfiShellProtocol->GetFileSize(FileHandle2, &Size2);
 | 
					        Status = gEfiShellProtocol->GetFileSize (FileHandle2, &Size2);
 | 
				
			||||||
        ASSERT_EFI_ERROR(Status);
 | 
					        ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (ShellCommandLineGetFlag (Package, L"-n")) {
 | 
					        if (ShellCommandLineGetFlag (Package, L"-n")) {
 | 
				
			||||||
          TempParam = ShellCommandLineGetValue (Package, L"-n");
 | 
					          TempParam = ShellCommandLineGetValue (Package, L"-n");
 | 
				
			||||||
@@ -316,7 +323,7 @@ ShellCommandRunComp (
 | 
				
			|||||||
              DifferentCount = MAX_UINTN;
 | 
					              DifferentCount = MAX_UINTN;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
              Status = ShellConvertStringToUint64 (TempParam, &DifferentCount, FALSE, TRUE);
 | 
					              Status = ShellConvertStringToUint64 (TempParam, &DifferentCount, FALSE, TRUE);
 | 
				
			||||||
              if (EFI_ERROR(Status) || DifferentCount == 0) {
 | 
					              if (EFI_ERROR (Status) || (DifferentCount == 0)) {
 | 
				
			||||||
                ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-n");
 | 
					                ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-n");
 | 
				
			||||||
                ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					                ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
@@ -331,7 +338,7 @@ ShellCommandRunComp (
 | 
				
			|||||||
            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            Status = ShellConvertStringToUint64 (TempParam, &DifferentBytes, FALSE, TRUE);
 | 
					            Status = ShellConvertStringToUint64 (TempParam, &DifferentBytes, FALSE, TRUE);
 | 
				
			||||||
            if (EFI_ERROR(Status) || DifferentBytes == 0) {
 | 
					            if (EFI_ERROR (Status) || (DifferentBytes == 0)) {
 | 
				
			||||||
              ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-s");
 | 
					              ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-s");
 | 
				
			||||||
              ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					              ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
@@ -348,8 +355,9 @@ ShellCommandRunComp (
 | 
				
			|||||||
        DataFromFile2 = AllocateZeroPool ((UINTN)DifferentBytes);
 | 
					        DataFromFile2 = AllocateZeroPool ((UINTN)DifferentBytes);
 | 
				
			||||||
        FileBufferInit (&FileBuffer1);
 | 
					        FileBufferInit (&FileBuffer1);
 | 
				
			||||||
        FileBufferInit (&FileBuffer2);
 | 
					        FileBufferInit (&FileBuffer2);
 | 
				
			||||||
        if (DataFromFile1 == NULL || DataFromFile2 == NULL ||
 | 
					        if ((DataFromFile1 == NULL) || (DataFromFile2 == NULL) ||
 | 
				
			||||||
            FileBuffer1.Data == NULL || FileBuffer2.Data == NULL) {
 | 
					            (FileBuffer1.Data == NULL) || (FileBuffer2.Data == NULL))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
          ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
					          ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
				
			||||||
          SHELL_FREE_NON_NULL (DataFromFile1);
 | 
					          SHELL_FREE_NON_NULL (DataFromFile1);
 | 
				
			||||||
          SHELL_FREE_NON_NULL (DataFromFile2);
 | 
					          SHELL_FREE_NON_NULL (DataFromFile2);
 | 
				
			||||||
@@ -362,13 +370,21 @@ ShellCommandRunComp (
 | 
				
			|||||||
        while (DiffPointNumber < DifferentCount) {
 | 
					        while (DiffPointNumber < DifferentCount) {
 | 
				
			||||||
          DataSizeFromFile1 = 1;
 | 
					          DataSizeFromFile1 = 1;
 | 
				
			||||||
          DataSizeFromFile2 = 1;
 | 
					          DataSizeFromFile2 = 1;
 | 
				
			||||||
          OneByteFromFile1 = 0;
 | 
					          OneByteFromFile1  = 0;
 | 
				
			||||||
          OneByteFromFile2 = 0;
 | 
					          OneByteFromFile2  = 0;
 | 
				
			||||||
          Status = FileBufferReadByte (FileHandle1, &FileBuffer1,
 | 
					          Status            = FileBufferReadByte (
 | 
				
			||||||
                     &DataSizeFromFile1, &OneByteFromFile1);
 | 
					                                FileHandle1,
 | 
				
			||||||
 | 
					                                &FileBuffer1,
 | 
				
			||||||
 | 
					                                &DataSizeFromFile1,
 | 
				
			||||||
 | 
					                                &OneByteFromFile1
 | 
				
			||||||
 | 
					                                );
 | 
				
			||||||
          ASSERT_EFI_ERROR (Status);
 | 
					          ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
          Status = FileBufferReadByte (FileHandle2, &FileBuffer2,
 | 
					          Status = FileBufferReadByte (
 | 
				
			||||||
                     &DataSizeFromFile2, &OneByteFromFile2);
 | 
					                     FileHandle2,
 | 
				
			||||||
 | 
					                     &FileBuffer2,
 | 
				
			||||||
 | 
					                     &DataSizeFromFile2,
 | 
				
			||||||
 | 
					                     &OneByteFromFile2
 | 
				
			||||||
 | 
					                     );
 | 
				
			||||||
          ASSERT_EFI_ERROR (Status);
 | 
					          ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          TempAddress++;
 | 
					          TempAddress++;
 | 
				
			||||||
@@ -378,19 +394,21 @@ ShellCommandRunComp (
 | 
				
			|||||||
          // 2.If no more char in File1 or File2, The ReadStatus is InPrevDiffPoint forever.
 | 
					          // 2.If no more char in File1 or File2, The ReadStatus is InPrevDiffPoint forever.
 | 
				
			||||||
          //   So the previous different point is the last one, then break the while block.
 | 
					          //   So the previous different point is the last one, then break the while block.
 | 
				
			||||||
          //
 | 
					          //
 | 
				
			||||||
          if ( (DataSizeFromFile1 == 0 && InsertPosition1 == 0 && DataSizeFromFile2 == 0 && InsertPosition2 == 0) ||
 | 
					          if (((DataSizeFromFile1 == 0) && (InsertPosition1 == 0) && (DataSizeFromFile2 == 0) && (InsertPosition2 == 0)) ||
 | 
				
			||||||
               (ReadStatus == InPrevDiffPoint && (DataSizeFromFile1 == 0 || DataSizeFromFile2 == 0))
 | 
					              ((ReadStatus == InPrevDiffPoint) && ((DataSizeFromFile1 == 0) || (DataSizeFromFile2 == 0)))
 | 
				
			||||||
             ) {
 | 
					              )
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (ReadStatus == OutOfDiffPoint) {
 | 
					          if (ReadStatus == OutOfDiffPoint) {
 | 
				
			||||||
            if (OneByteFromFile1 != OneByteFromFile2) {
 | 
					            if (OneByteFromFile1 != OneByteFromFile2) {
 | 
				
			||||||
              ReadStatus = InDiffPoint;
 | 
					              ReadStatus       = InDiffPoint;
 | 
				
			||||||
              DiffPointAddress = TempAddress;
 | 
					              DiffPointAddress = TempAddress;
 | 
				
			||||||
              if (DataSizeFromFile1 == 1) {
 | 
					              if (DataSizeFromFile1 == 1) {
 | 
				
			||||||
                DataFromFile1[InsertPosition1++] = OneByteFromFile1;
 | 
					                DataFromFile1[InsertPosition1++] = OneByteFromFile1;
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              if (DataSizeFromFile2 == 1) {
 | 
					              if (DataSizeFromFile2 == 1) {
 | 
				
			||||||
                DataFromFile2[InsertPosition2++] = OneByteFromFile2;
 | 
					                DataFromFile2[InsertPosition2++] = OneByteFromFile2;
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
@@ -399,6 +417,7 @@ ShellCommandRunComp (
 | 
				
			|||||||
            if (DataSizeFromFile1 == 1) {
 | 
					            if (DataSizeFromFile1 == 1) {
 | 
				
			||||||
              DataFromFile1[InsertPosition1++] = OneByteFromFile1;
 | 
					              DataFromFile1[InsertPosition1++] = OneByteFromFile1;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (DataSizeFromFile2 == 1) {
 | 
					            if (DataSizeFromFile2 == 1) {
 | 
				
			||||||
              DataFromFile2[InsertPosition2++] = OneByteFromFile2;
 | 
					              DataFromFile2[InsertPosition2++] = OneByteFromFile2;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -411,11 +430,11 @@ ShellCommandRunComp (
 | 
				
			|||||||
          //
 | 
					          //
 | 
				
			||||||
          // ReadStatus should be always equal InDiffPoint.
 | 
					          // ReadStatus should be always equal InDiffPoint.
 | 
				
			||||||
          //
 | 
					          //
 | 
				
			||||||
          if ( InsertPosition1 == DifferentBytes ||
 | 
					          if ((InsertPosition1 == DifferentBytes) ||
 | 
				
			||||||
               InsertPosition2 == DifferentBytes ||
 | 
					              (InsertPosition2 == DifferentBytes) ||
 | 
				
			||||||
               (DataSizeFromFile1 == 0 && DataSizeFromFile2 == 0)
 | 
					              ((DataSizeFromFile1 == 0) && (DataSizeFromFile2 == 0))
 | 
				
			||||||
             ) {
 | 
					              )
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_DIFFERENCE_POINT), gShellDebug1HiiHandle, ++DiffPointNumber);
 | 
					            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_DIFFERENCE_POINT), gShellDebug1HiiHandle, ++DiffPointNumber);
 | 
				
			||||||
            PrintDifferentPoint (FileName1, L"File1", DataFromFile1, InsertPosition1, DiffPointAddress, DifferentBytes);
 | 
					            PrintDifferentPoint (FileName1, L"File1", DataFromFile1, InsertPosition1, DiffPointAddress, DifferentBytes);
 | 
				
			||||||
            PrintDifferentPoint (FileName2, L"File2", DataFromFile2, InsertPosition2, DiffPointAddress, DifferentBytes);
 | 
					            PrintDifferentPoint (FileName2, L"File2", DataFromFile2, InsertPosition2, DiffPointAddress, DifferentBytes);
 | 
				
			||||||
@@ -423,7 +442,7 @@ ShellCommandRunComp (
 | 
				
			|||||||
            //
 | 
					            //
 | 
				
			||||||
            // One of two buffuers is empty, it means this is the last different point.
 | 
					            // One of two buffuers is empty, it means this is the last different point.
 | 
				
			||||||
            //
 | 
					            //
 | 
				
			||||||
            if (InsertPosition1 == 0 || InsertPosition2 == 0) {
 | 
					            if ((InsertPosition1 == 0) || (InsertPosition2 == 0)) {
 | 
				
			||||||
              break;
 | 
					              break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -438,9 +457,9 @@ ShellCommandRunComp (
 | 
				
			|||||||
              //
 | 
					              //
 | 
				
			||||||
              // Try to find a new different point in the rest of DataFromFile.
 | 
					              // Try to find a new different point in the rest of DataFromFile.
 | 
				
			||||||
              //
 | 
					              //
 | 
				
			||||||
              for (; Index < MAX (InsertPosition1,InsertPosition2); Index++) {
 | 
					              for ( ; Index < MAX (InsertPosition1, InsertPosition2); Index++) {
 | 
				
			||||||
                if (DataFromFile1[Index] != DataFromFile2[Index]) {
 | 
					                if (DataFromFile1[Index] != DataFromFile2[Index]) {
 | 
				
			||||||
                  ReadStatus = InDiffPoint;
 | 
					                  ReadStatus        = InDiffPoint;
 | 
				
			||||||
                  DiffPointAddress += Index;
 | 
					                  DiffPointAddress += Index;
 | 
				
			||||||
                  break;
 | 
					                  break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -469,24 +488,26 @@ ShellCommandRunComp (
 | 
				
			|||||||
        FileBufferUninit (&FileBuffer2);
 | 
					        FileBufferUninit (&FileBuffer2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (DiffPointNumber == 0) {
 | 
					        if (DiffPointNumber == 0) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_PASS), gShellDebug1HiiHandle);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_PASS), gShellDebug1HiiHandle);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          ShellStatus = SHELL_NOT_EQUAL;
 | 
					          ShellStatus = SHELL_NOT_EQUAL;
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_FAIL), gShellDebug1HiiHandle);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_FAIL), gShellDebug1HiiHandle);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ShellCommandLineFreeVarList (Package);
 | 
					    ShellCommandLineFreeVarList (Package);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  SHELL_FREE_NON_NULL(FileName1);
 | 
					
 | 
				
			||||||
  SHELL_FREE_NON_NULL(FileName2);
 | 
					  SHELL_FREE_NON_NULL (FileName1);
 | 
				
			||||||
 | 
					  SHELL_FREE_NON_NULL (FileName2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (FileHandle1 != NULL) {
 | 
					  if (FileHandle1 != NULL) {
 | 
				
			||||||
    gEfiShellProtocol->CloseFile(FileHandle1);
 | 
					    gEfiShellProtocol->CloseFile (FileHandle1);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (FileHandle2 != NULL) {
 | 
					  if (FileHandle2 != NULL) {
 | 
				
			||||||
    gEfiShellProtocol->CloseFile(FileHandle2);
 | 
					    gEfiShellProtocol->CloseFile (FileHandle2);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (ShellStatus);
 | 
					  return (ShellStatus);
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -30,4 +30,3 @@ Compress (
 | 
				
			|||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,49 +20,49 @@
 | 
				
			|||||||
  @retval SHELL_SUCCESS   The display was successful.
 | 
					  @retval SHELL_SUCCESS   The display was successful.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
DisplayTheBlocks(
 | 
					DisplayTheBlocks (
 | 
				
			||||||
  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevPath,
 | 
					  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevPath,
 | 
				
			||||||
  IN CONST UINT64                   Lba,
 | 
					  IN CONST UINT64                    Lba,
 | 
				
			||||||
  IN CONST UINT8                    BlockCount
 | 
					  IN CONST UINT8                     BlockCount
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_BLOCK_IO_PROTOCOL     *BlockIo;
 | 
					  EFI_BLOCK_IO_PROTOCOL  *BlockIo;
 | 
				
			||||||
  EFI_HANDLE                BlockIoHandle;
 | 
					  EFI_HANDLE             BlockIoHandle;
 | 
				
			||||||
  EFI_STATUS                Status;
 | 
					  EFI_STATUS             Status;
 | 
				
			||||||
  SHELL_STATUS              ShellStatus;
 | 
					  SHELL_STATUS           ShellStatus;
 | 
				
			||||||
  UINT8                     *Buffer;
 | 
					  UINT8                  *Buffer;
 | 
				
			||||||
  UINT8                     *OriginalBuffer;
 | 
					  UINT8                  *OriginalBuffer;
 | 
				
			||||||
  UINTN                     BufferSize;
 | 
					  UINTN                  BufferSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellStatus = SHELL_SUCCESS;
 | 
					  ShellStatus = SHELL_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->LocateDevicePath(&gEfiBlockIoProtocolGuid, (EFI_DEVICE_PATH_PROTOCOL **)&DevPath, &BlockIoHandle);
 | 
					  Status = gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, (EFI_DEVICE_PATH_PROTOCOL **)&DevPath, &BlockIoHandle);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return (SHELL_NOT_FOUND);
 | 
					    return (SHELL_NOT_FOUND);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->OpenProtocol(BlockIoHandle, &gEfiBlockIoProtocolGuid, (VOID**)&BlockIo, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
 | 
					  Status = gBS->OpenProtocol (BlockIoHandle, &gEfiBlockIoProtocolGuid, (VOID **)&BlockIo, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    return (SHELL_NOT_FOUND);
 | 
					    return (SHELL_NOT_FOUND);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  BufferSize = BlockIo->Media->BlockSize * BlockCount;
 | 
					  BufferSize = BlockIo->Media->BlockSize * BlockCount;
 | 
				
			||||||
  if(BlockIo->Media->IoAlign == 0) {
 | 
					  if (BlockIo->Media->IoAlign == 0) {
 | 
				
			||||||
    BlockIo->Media->IoAlign = 1;
 | 
					    BlockIo->Media->IoAlign = 1;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (BufferSize > 0) {
 | 
					  if (BufferSize > 0) {
 | 
				
			||||||
    OriginalBuffer = AllocateZeroPool(BufferSize + BlockIo->Media->IoAlign);
 | 
					    OriginalBuffer = AllocateZeroPool (BufferSize + BlockIo->Media->IoAlign);
 | 
				
			||||||
    Buffer         = ALIGN_POINTER (OriginalBuffer,BlockIo->Media->IoAlign);
 | 
					    Buffer         = ALIGN_POINTER (OriginalBuffer, BlockIo->Media->IoAlign);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    ShellPrintEx(-1,-1,L"  BlockSize: 0x%08x, BlockCount: 0x%08x\r\n", BlockIo->Media->BlockSize, BlockCount);
 | 
					    ShellPrintEx (-1, -1, L"  BlockSize: 0x%08x, BlockCount: 0x%08x\r\n", BlockIo->Media->BlockSize, BlockCount);
 | 
				
			||||||
    OriginalBuffer = NULL;
 | 
					    OriginalBuffer = NULL;
 | 
				
			||||||
    Buffer         = NULL;
 | 
					    Buffer         = NULL;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = BlockIo->ReadBlocks(BlockIo, BlockIo->Media->MediaId, Lba, BufferSize, Buffer);
 | 
					  Status = BlockIo->ReadBlocks (BlockIo, BlockIo->Media->MediaId, Lba, BufferSize, Buffer);
 | 
				
			||||||
  if (!EFI_ERROR(Status) && Buffer != NULL) {
 | 
					  if (!EFI_ERROR (Status) && (Buffer != NULL)) {
 | 
				
			||||||
    ShellPrintHiiEx(
 | 
					    ShellPrintHiiEx (
 | 
				
			||||||
      -1,
 | 
					      -1,
 | 
				
			||||||
      -1,
 | 
					      -1,
 | 
				
			||||||
      NULL,
 | 
					      NULL,
 | 
				
			||||||
@@ -73,9 +73,9 @@ DisplayTheBlocks(
 | 
				
			|||||||
      BlockIo
 | 
					      BlockIo
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DumpHex(2,0,BufferSize,Buffer);
 | 
					    DumpHex (2, 0, BufferSize, Buffer);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_READ_FAIL), gShellDebug1HiiHandle, L"dblk", L"BlockIo");
 | 
					    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_READ_FAIL), gShellDebug1HiiHandle, L"dblk", L"BlockIo");
 | 
				
			||||||
    ShellStatus = SHELL_DEVICE_ERROR;
 | 
					    ShellStatus = SHELL_DEVICE_ERROR;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -83,7 +83,7 @@ DisplayTheBlocks(
 | 
				
			|||||||
    FreePool (OriginalBuffer);
 | 
					    FreePool (OriginalBuffer);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  gBS->CloseProtocol(BlockIoHandle, &gEfiBlockIoProtocolGuid, gImageHandle, NULL);
 | 
					  gBS->CloseProtocol (BlockIoHandle, &gEfiBlockIoProtocolGuid, gImageHandle, NULL);
 | 
				
			||||||
  return (ShellStatus);
 | 
					  return (ShellStatus);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -111,67 +111,69 @@ ShellCommandRunDblk (
 | 
				
			|||||||
  UINT64                    BlockCount;
 | 
					  UINT64                    BlockCount;
 | 
				
			||||||
  EFI_DEVICE_PATH_PROTOCOL  *DevPath;
 | 
					  EFI_DEVICE_PATH_PROTOCOL  *DevPath;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellStatus         = SHELL_SUCCESS;
 | 
					  ShellStatus = SHELL_SUCCESS;
 | 
				
			||||||
  Status              = EFI_SUCCESS;
 | 
					  Status      = EFI_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // initialize the shell lib (we must be in non-auto-init...)
 | 
					  // initialize the shell lib (we must be in non-auto-init...)
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellInitialize();
 | 
					  Status = ShellInitialize ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = CommandInit();
 | 
					  Status = CommandInit ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // parse the command line
 | 
					  // parse the command line
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);
 | 
					  Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
 | 
					    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"dblk", ProblemParam);
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"dblk", ProblemParam);
 | 
				
			||||||
      FreePool(ProblemParam);
 | 
					      FreePool (ProblemParam);
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ASSERT(FALSE);
 | 
					      ASSERT (FALSE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (ShellCommandLineGetCount(Package) > 4) {
 | 
					    if (ShellCommandLineGetCount (Package) > 4) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dblk");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dblk");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if (ShellCommandLineGetCount(Package) < 2) {
 | 
					    } else if (ShellCommandLineGetCount (Package) < 2) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"dblk");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"dblk");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // Parse the params
 | 
					      // Parse the params
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      BlockName         = ShellCommandLineGetRawValue(Package, 1);
 | 
					      BlockName        = ShellCommandLineGetRawValue (Package, 1);
 | 
				
			||||||
      LbaString         = ShellCommandLineGetRawValue(Package, 2);
 | 
					      LbaString        = ShellCommandLineGetRawValue (Package, 2);
 | 
				
			||||||
      BlockCountString  = ShellCommandLineGetRawValue(Package, 3);
 | 
					      BlockCountString = ShellCommandLineGetRawValue (Package, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (LbaString == NULL) {
 | 
					      if (LbaString == NULL) {
 | 
				
			||||||
        Lba = 0;
 | 
					        Lba = 0;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        if (!ShellIsHexOrDecimalNumber(LbaString, TRUE, FALSE)) {
 | 
					        if (!ShellIsHexOrDecimalNumber (LbaString, TRUE, FALSE)) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", LbaString);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", LbaString);
 | 
				
			||||||
          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        ShellConvertStringToUint64(LbaString, &Lba, TRUE, FALSE);
 | 
					
 | 
				
			||||||
 | 
					        ShellConvertStringToUint64 (LbaString, &Lba, TRUE, FALSE);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (BlockCountString == NULL) {
 | 
					      if (BlockCountString == NULL) {
 | 
				
			||||||
        BlockCount = 1;
 | 
					        BlockCount = 1;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        if (!ShellIsHexOrDecimalNumber(BlockCountString, TRUE, FALSE)) {
 | 
					        if (!ShellIsHexOrDecimalNumber (BlockCountString, TRUE, FALSE)) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockCountString);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockCountString);
 | 
				
			||||||
          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        ShellConvertStringToUint64(BlockCountString, &BlockCount, TRUE, FALSE);
 | 
					
 | 
				
			||||||
 | 
					        ShellConvertStringToUint64 (BlockCountString, &BlockCount, TRUE, FALSE);
 | 
				
			||||||
        if (BlockCount > 0x10) {
 | 
					        if (BlockCount > 0x10) {
 | 
				
			||||||
          BlockCount = 0x10;
 | 
					          BlockCount = 0x10;
 | 
				
			||||||
        } else if (BlockCount == 0) {
 | 
					        } else if (BlockCount == 0) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockCountString);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockCountString);
 | 
				
			||||||
          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -180,16 +182,16 @@ ShellCommandRunDblk (
 | 
				
			|||||||
        //
 | 
					        //
 | 
				
			||||||
        // do the work if we have a valid block identifier
 | 
					        // do the work if we have a valid block identifier
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        if (gEfiShellProtocol->GetDevicePathFromMap(BlockName) == NULL) {
 | 
					        if (gEfiShellProtocol->GetDevicePathFromMap (BlockName) == NULL) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockName);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockName);
 | 
				
			||||||
          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          DevPath = (EFI_DEVICE_PATH_PROTOCOL*)gEfiShellProtocol->GetDevicePathFromMap(BlockName);
 | 
					          DevPath = (EFI_DEVICE_PATH_PROTOCOL *)gEfiShellProtocol->GetDevicePathFromMap (BlockName);
 | 
				
			||||||
          if (gBS->LocateDevicePath(&gEfiBlockIoProtocolGuid, &DevPath, NULL) == EFI_NOT_FOUND) {
 | 
					          if (gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, &DevPath, NULL) == EFI_NOT_FOUND) {
 | 
				
			||||||
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_MAP_PROTOCOL), gShellDebug1HiiHandle, L"dblk", BlockName, L"BlockIo");
 | 
					            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_MAP_PROTOCOL), gShellDebug1HiiHandle, L"dblk", BlockName, L"BlockIo");
 | 
				
			||||||
            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            ShellStatus = DisplayTheBlocks(gEfiShellProtocol->GetDevicePathFromMap(BlockName), Lba, (UINT8)BlockCount);
 | 
					            ShellStatus = DisplayTheBlocks (gEfiShellProtocol->GetDevicePathFromMap (BlockName), Lba, (UINT8)BlockCount);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -197,5 +199,6 @@ ShellCommandRunDblk (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ShellCommandLineFreeVarList (Package);
 | 
					    ShellCommandLineFreeVarList (Package);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (ShellStatus);
 | 
					  return (ShellStatus);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,13 +24,14 @@
 | 
				
			|||||||
  @return A printable character representing Char.
 | 
					  @return A printable character representing Char.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16
 | 
					CHAR16
 | 
				
			||||||
MakePrintable(
 | 
					MakePrintable (
 | 
				
			||||||
  IN CONST CHAR16 Char
 | 
					  IN CONST CHAR16  Char
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if ((Char < 0x20 && Char > 0)||(Char > 126)) {
 | 
					  if (((Char < 0x20) && (Char > 0)) || (Char > 126)) {
 | 
				
			||||||
    return (L'?');
 | 
					    return (L'?');
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (Char);
 | 
					  return (Char);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,45 +42,46 @@ MakePrintable(
 | 
				
			|||||||
  @param[in] Size       The length of memory to display.
 | 
					  @param[in] Size       The length of memory to display.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
DisplayMmioMemory(
 | 
					DisplayMmioMemory (
 | 
				
			||||||
  IN CONST VOID   *Address,
 | 
					  IN CONST VOID   *Address,
 | 
				
			||||||
  IN CONST UINTN  Size
 | 
					  IN CONST UINTN  Size
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRbIo;
 | 
					  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *PciRbIo;
 | 
				
			||||||
  EFI_STATUS                      Status;
 | 
					  EFI_STATUS                       Status;
 | 
				
			||||||
  VOID                            *Buffer;
 | 
					  VOID                             *Buffer;
 | 
				
			||||||
  SHELL_STATUS                    ShellStatus;
 | 
					  SHELL_STATUS                     ShellStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellStatus = SHELL_SUCCESS;
 | 
					  ShellStatus = SHELL_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gBS->LocateProtocol(&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRbIo);
 | 
					  Status = gBS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID **)&PciRbIo);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PCIRBIO_NF), gShellDebug1HiiHandle, L"dmem");
 | 
					    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PCIRBIO_NF), gShellDebug1HiiHandle, L"dmem");
 | 
				
			||||||
    return (SHELL_NOT_FOUND);
 | 
					    return (SHELL_NOT_FOUND);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  Buffer = AllocateZeroPool(Size);
 | 
					
 | 
				
			||||||
 | 
					  Buffer = AllocateZeroPool (Size);
 | 
				
			||||||
  if (Buffer == NULL) {
 | 
					  if (Buffer == NULL) {
 | 
				
			||||||
    return SHELL_OUT_OF_RESOURCES;
 | 
					    return SHELL_OUT_OF_RESOURCES;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = PciRbIo->Mem.Read(PciRbIo, EfiPciWidthUint8, (UINT64)(UINTN)Address, Size, Buffer);
 | 
					  Status = PciRbIo->Mem.Read (PciRbIo, EfiPciWidthUint8, (UINT64)(UINTN)Address, Size, Buffer);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PCIRBIO_ER), gShellDebug1HiiHandle, L"dmem");
 | 
					    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PCIRBIO_ER), gShellDebug1HiiHandle, L"dmem");
 | 
				
			||||||
    ShellStatus = SHELL_NOT_FOUND;
 | 
					    ShellStatus = SHELL_NOT_FOUND;
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMEM_MMIO_HEADER_ROW), gShellDebug1HiiHandle, (UINT64)(UINTN)Address, Size);
 | 
					    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_MMIO_HEADER_ROW), gShellDebug1HiiHandle, (UINT64)(UINTN)Address, Size);
 | 
				
			||||||
    DumpHex(2, (UINTN)Address, Size, Buffer);
 | 
					    DumpHex (2, (UINTN)Address, Size, Buffer);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FreePool(Buffer);
 | 
					  FreePool (Buffer);
 | 
				
			||||||
  return (ShellStatus);
 | 
					  return (ShellStatus);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
 | 
					STATIC CONST SHELL_PARAM_ITEM  ParamList[] = {
 | 
				
			||||||
  {L"-mmio", TypeFlag},
 | 
					  { L"-mmio", TypeFlag },
 | 
				
			||||||
  {NULL, TypeMax}
 | 
					  { NULL,     TypeMax  }
 | 
				
			||||||
  };
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Function for 'dmem' command.
 | 
					  Function for 'dmem' command.
 | 
				
			||||||
@@ -94,66 +96,67 @@ ShellCommandRunDmem (
 | 
				
			|||||||
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS          Status;
 | 
					  EFI_STATUS    Status;
 | 
				
			||||||
  LIST_ENTRY          *Package;
 | 
					  LIST_ENTRY    *Package;
 | 
				
			||||||
  CHAR16              *ProblemParam;
 | 
					  CHAR16        *ProblemParam;
 | 
				
			||||||
  SHELL_STATUS        ShellStatus;
 | 
					  SHELL_STATUS  ShellStatus;
 | 
				
			||||||
  VOID                *Address;
 | 
					  VOID          *Address;
 | 
				
			||||||
  UINT64              Size;
 | 
					  UINT64        Size;
 | 
				
			||||||
  CONST CHAR16        *Temp1;
 | 
					  CONST CHAR16  *Temp1;
 | 
				
			||||||
  UINT64              AcpiTableAddress;
 | 
					  UINT64        AcpiTableAddress;
 | 
				
			||||||
  UINT64              Acpi20TableAddress;
 | 
					  UINT64        Acpi20TableAddress;
 | 
				
			||||||
  UINT64              SalTableAddress;
 | 
					  UINT64        SalTableAddress;
 | 
				
			||||||
  UINT64              SmbiosTableAddress;
 | 
					  UINT64        SmbiosTableAddress;
 | 
				
			||||||
  UINT64              MpsTableAddress;
 | 
					  UINT64        MpsTableAddress;
 | 
				
			||||||
  UINTN               TableWalker;
 | 
					  UINTN         TableWalker;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellStatus         = SHELL_SUCCESS;
 | 
					  ShellStatus = SHELL_SUCCESS;
 | 
				
			||||||
  Status              = EFI_SUCCESS;
 | 
					  Status      = EFI_SUCCESS;
 | 
				
			||||||
  Address             = NULL;
 | 
					  Address     = NULL;
 | 
				
			||||||
  Size                = 0;
 | 
					  Size        = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // initialize the shell lib (we must be in non-auto-init...)
 | 
					  // initialize the shell lib (we must be in non-auto-init...)
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellInitialize();
 | 
					  Status = ShellInitialize ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = CommandInit();
 | 
					  Status = CommandInit ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // parse the command line
 | 
					  // parse the command line
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
					  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
 | 
					    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"dmem", ProblemParam);
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"dmem", ProblemParam);
 | 
				
			||||||
      FreePool(ProblemParam);
 | 
					      FreePool (ProblemParam);
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ASSERT(FALSE);
 | 
					      ASSERT (FALSE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (ShellCommandLineGetCount(Package) > 3) {
 | 
					    if (ShellCommandLineGetCount (Package) > 3) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dmem");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dmem");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      Temp1 = ShellCommandLineGetRawValue(Package, 1);
 | 
					      Temp1 = ShellCommandLineGetRawValue (Package, 1);
 | 
				
			||||||
      if (Temp1 == NULL) {
 | 
					      if (Temp1 == NULL) {
 | 
				
			||||||
        Address = gST;
 | 
					        Address = gST;
 | 
				
			||||||
        Size    = sizeof (*gST);
 | 
					        Size    = sizeof (*gST);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        if (!ShellIsHexOrDecimalNumber(Temp1, TRUE, FALSE) || EFI_ERROR(ShellConvertStringToUint64(Temp1, (UINT64*)&Address, TRUE, FALSE))) {
 | 
					        if (!ShellIsHexOrDecimalNumber (Temp1, TRUE, FALSE) || EFI_ERROR (ShellConvertStringToUint64 (Temp1, (UINT64 *)&Address, TRUE, FALSE))) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmem", Temp1);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmem", Temp1);
 | 
				
			||||||
          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					          ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Temp1 = ShellCommandLineGetRawValue(Package, 2);
 | 
					
 | 
				
			||||||
 | 
					        Temp1 = ShellCommandLineGetRawValue (Package, 2);
 | 
				
			||||||
        if (Temp1 == NULL) {
 | 
					        if (Temp1 == NULL) {
 | 
				
			||||||
          Size = 512;
 | 
					          Size = 512;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          if (!ShellIsHexOrDecimalNumber(Temp1, FALSE, FALSE) || EFI_ERROR(ShellConvertStringToUint64(Temp1, &Size, TRUE, FALSE))) {
 | 
					          if (!ShellIsHexOrDecimalNumber (Temp1, FALSE, FALSE) || EFI_ERROR (ShellConvertStringToUint64 (Temp1, &Size, TRUE, FALSE))) {
 | 
				
			||||||
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmem", Temp1);
 | 
					            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmem", Temp1);
 | 
				
			||||||
            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -161,39 +164,48 @@ ShellCommandRunDmem (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (ShellStatus == SHELL_SUCCESS) {
 | 
					    if (ShellStatus == SHELL_SUCCESS) {
 | 
				
			||||||
      if (!ShellCommandLineGetFlag(Package, L"-mmio")) {
 | 
					      if (!ShellCommandLineGetFlag (Package, L"-mmio")) {
 | 
				
			||||||
        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMEM_HEADER_ROW), gShellDebug1HiiHandle, (UINT64)(UINTN)Address, Size);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_HEADER_ROW), gShellDebug1HiiHandle, (UINT64)(UINTN)Address, Size);
 | 
				
			||||||
        DumpHex(2, (UINTN)Address, (UINTN)Size, Address);
 | 
					        DumpHex (2, (UINTN)Address, (UINTN)Size, Address);
 | 
				
			||||||
        if (Address == (VOID*)gST) {
 | 
					        if (Address == (VOID *)gST) {
 | 
				
			||||||
          Acpi20TableAddress  = 0;
 | 
					          Acpi20TableAddress = 0;
 | 
				
			||||||
          AcpiTableAddress    = 0;
 | 
					          AcpiTableAddress   = 0;
 | 
				
			||||||
          SalTableAddress     = 0;
 | 
					          SalTableAddress    = 0;
 | 
				
			||||||
          SmbiosTableAddress  = 0;
 | 
					          SmbiosTableAddress = 0;
 | 
				
			||||||
          MpsTableAddress     = 0;
 | 
					          MpsTableAddress    = 0;
 | 
				
			||||||
          for (TableWalker = 0 ; TableWalker < gST->NumberOfTableEntries ; TableWalker++) {
 | 
					          for (TableWalker = 0; TableWalker < gST->NumberOfTableEntries; TableWalker++) {
 | 
				
			||||||
            if (CompareGuid(&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiAcpi20TableGuid)) {
 | 
					            if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiAcpi20TableGuid)) {
 | 
				
			||||||
              Acpi20TableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
					              Acpi20TableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
				
			||||||
              continue;
 | 
					              continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (CompareGuid(&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiAcpi10TableGuid)) {
 | 
					
 | 
				
			||||||
 | 
					            if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiAcpi10TableGuid)) {
 | 
				
			||||||
              AcpiTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
					              AcpiTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
				
			||||||
              continue;
 | 
					              continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (CompareGuid(&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiSmbiosTableGuid)) {
 | 
					
 | 
				
			||||||
 | 
					            if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiSmbiosTableGuid)) {
 | 
				
			||||||
              SmbiosTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
					              SmbiosTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
				
			||||||
              continue;
 | 
					              continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiSmbios3TableGuid)) {
 | 
					            if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiSmbios3TableGuid)) {
 | 
				
			||||||
              SmbiosTableAddress = (UINT64) (UINTN) gST->ConfigurationTable[TableWalker].VendorTable;
 | 
					              SmbiosTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
				
			||||||
              continue;
 | 
					              continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (CompareGuid(&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiMpsTableGuid)) {
 | 
					
 | 
				
			||||||
 | 
					            if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiMpsTableGuid)) {
 | 
				
			||||||
              MpsTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
					              MpsTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable;
 | 
				
			||||||
              continue;
 | 
					              continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMEM_SYSTEM_TABLE), gShellDebug1HiiHandle,
 | 
					          ShellPrintHiiEx (
 | 
				
			||||||
 | 
					            -1,
 | 
				
			||||||
 | 
					            -1,
 | 
				
			||||||
 | 
					            NULL,
 | 
				
			||||||
 | 
					            STRING_TOKEN (STR_DMEM_SYSTEM_TABLE),
 | 
				
			||||||
 | 
					            gShellDebug1HiiHandle,
 | 
				
			||||||
            (UINT64)(UINTN)Address,
 | 
					            (UINT64)(UINTN)Address,
 | 
				
			||||||
            gST->Hdr.HeaderSize,
 | 
					            gST->Hdr.HeaderSize,
 | 
				
			||||||
            gST->Hdr.Revision,
 | 
					            gST->Hdr.Revision,
 | 
				
			||||||
@@ -210,11 +222,10 @@ ShellCommandRunDmem (
 | 
				
			|||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ShellStatus = DisplayMmioMemory(Address, (UINTN)Size);
 | 
					        ShellStatus = DisplayMmioMemory (Address, (UINTN)Size);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    ShellCommandLineFreeVarList (Package);
 | 
					    ShellCommandLineFreeVarList (Package);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,13 +17,13 @@ typedef enum {
 | 
				
			|||||||
} DMP_STORE_TYPE;
 | 
					} DMP_STORE_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  UINT32     Signature;
 | 
					  UINT32        Signature;
 | 
				
			||||||
  CHAR16     *Name;
 | 
					  CHAR16        *Name;
 | 
				
			||||||
  EFI_GUID   Guid;
 | 
					  EFI_GUID      Guid;
 | 
				
			||||||
  UINT32     Attributes;
 | 
					  UINT32        Attributes;
 | 
				
			||||||
  UINT32     DataSize;
 | 
					  UINT32        DataSize;
 | 
				
			||||||
  UINT8      *Data;
 | 
					  UINT8         *Data;
 | 
				
			||||||
  LIST_ENTRY Link;
 | 
					  LIST_ENTRY    Link;
 | 
				
			||||||
} DMP_STORE_VARIABLE;
 | 
					} DMP_STORE_VARIABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DMP_STORE_VARIABLE_SIGNATURE  SIGNATURE_32 ('_', 'd', 's', 's')
 | 
					#define DMP_STORE_VARIABLE_SIGNATURE  SIGNATURE_32 ('_', 'd', 's', 's')
 | 
				
			||||||
@@ -37,39 +37,43 @@ typedef struct {
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16 *
 | 
					CHAR16 *
 | 
				
			||||||
GetAttrType (
 | 
					GetAttrType (
 | 
				
			||||||
  IN CONST UINT32 Atts
 | 
					  IN CONST UINT32  Atts
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN  BufLen;
 | 
					  UINTN   BufLen;
 | 
				
			||||||
  CHAR16 *RetString;
 | 
					  CHAR16  *RetString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  BufLen      = 0;
 | 
					  BufLen    = 0;
 | 
				
			||||||
  RetString   = NULL;
 | 
					  RetString = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((Atts & EFI_VARIABLE_NON_VOLATILE) != 0) {
 | 
					  if ((Atts & EFI_VARIABLE_NON_VOLATILE) != 0) {
 | 
				
			||||||
    StrnCatGrow (&RetString, &BufLen, L"+NV", 0);
 | 
					    StrnCatGrow (&RetString, &BufLen, L"+NV", 0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((Atts & EFI_VARIABLE_RUNTIME_ACCESS) != 0) {
 | 
					  if ((Atts & EFI_VARIABLE_RUNTIME_ACCESS) != 0) {
 | 
				
			||||||
    StrnCatGrow (&RetString, &BufLen, L"+RT+BS", 0);
 | 
					    StrnCatGrow (&RetString, &BufLen, L"+RT+BS", 0);
 | 
				
			||||||
  } else if ((Atts & EFI_VARIABLE_BOOTSERVICE_ACCESS) != 0) {
 | 
					  } else if ((Atts & EFI_VARIABLE_BOOTSERVICE_ACCESS) != 0) {
 | 
				
			||||||
    StrnCatGrow (&RetString, &BufLen, L"+BS", 0);
 | 
					    StrnCatGrow (&RetString, &BufLen, L"+BS", 0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((Atts & EFI_VARIABLE_HARDWARE_ERROR_RECORD) != 0) {
 | 
					  if ((Atts & EFI_VARIABLE_HARDWARE_ERROR_RECORD) != 0) {
 | 
				
			||||||
    StrnCatGrow (&RetString, &BufLen, L"+HR", 0);
 | 
					    StrnCatGrow (&RetString, &BufLen, L"+HR", 0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((Atts & EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) != 0) {
 | 
					  if ((Atts & EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) != 0) {
 | 
				
			||||||
    StrnCatGrow (&RetString, &BufLen, L"+AW", 0);
 | 
					    StrnCatGrow (&RetString, &BufLen, L"+AW", 0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((Atts & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) {
 | 
					  if ((Atts & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) {
 | 
				
			||||||
    StrnCatGrow (&RetString, &BufLen, L"+AT", 0);
 | 
					    StrnCatGrow (&RetString, &BufLen, L"+AT", 0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (RetString == NULL) {
 | 
					  if (RetString == NULL) {
 | 
				
			||||||
    RetString = StrnCatGrow(&RetString, &BufLen, L"Invalid", 0);
 | 
					    RetString = StrnCatGrow (&RetString, &BufLen, L"Invalid", 0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((RetString != NULL) && (RetString[0] == L'+')) {
 | 
					  if ((RetString != NULL) && (RetString[0] == L'+')) {
 | 
				
			||||||
    CopyMem(RetString, RetString + 1, StrSize(RetString + 1));
 | 
					    CopyMem (RetString, RetString + 1, StrSize (RetString + 1));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return RetString;
 | 
					  return RetString;
 | 
				
			||||||
@@ -85,7 +89,7 @@ GetAttrType (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @return The hex format string.
 | 
					  @return The hex format string.
 | 
				
			||||||
**/
 | 
					**/
 | 
				
			||||||
CHAR16*
 | 
					CHAR16 *
 | 
				
			||||||
BinaryToHexString (
 | 
					BinaryToHexString (
 | 
				
			||||||
  IN     VOID    *Buffer,
 | 
					  IN     VOID    *Buffer,
 | 
				
			||||||
  IN     UINTN   BufferSize,
 | 
					  IN     UINTN   BufferSize,
 | 
				
			||||||
@@ -93,8 +97,8 @@ BinaryToHexString (
 | 
				
			|||||||
  IN     UINTN   HexStringSize
 | 
					  IN     UINTN   HexStringSize
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINTN Index;
 | 
					  UINTN  Index;
 | 
				
			||||||
  UINTN StringIndex;
 | 
					  UINTN  StringIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ASSERT (Buffer != NULL);
 | 
					  ASSERT (Buffer != NULL);
 | 
				
			||||||
  ASSERT ((BufferSize * 2 + 1) * sizeof (CHAR16) <= HexStringSize);
 | 
					  ASSERT ((BufferSize * 2 + 1) * sizeof (CHAR16) <= HexStringSize);
 | 
				
			||||||
@@ -105,9 +109,10 @@ BinaryToHexString (
 | 
				
			|||||||
        &HexString[StringIndex],
 | 
					        &HexString[StringIndex],
 | 
				
			||||||
        HexStringSize - StringIndex * sizeof (CHAR16),
 | 
					        HexStringSize - StringIndex * sizeof (CHAR16),
 | 
				
			||||||
        L"%02x",
 | 
					        L"%02x",
 | 
				
			||||||
        ((UINT8 *) Buffer)[Index]
 | 
					        ((UINT8 *)Buffer)[Index]
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return HexString;
 | 
					  return HexString;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -126,26 +131,26 @@ BinaryToHexString (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
LoadVariablesFromFile (
 | 
					LoadVariablesFromFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE FileHandle,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  IN CONST CHAR16      *Name,
 | 
					  IN CONST CHAR16       *Name,
 | 
				
			||||||
  IN CONST EFI_GUID    *Guid,
 | 
					  IN CONST EFI_GUID     *Guid,
 | 
				
			||||||
  OUT BOOLEAN          *Found
 | 
					  OUT BOOLEAN           *Found
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS           Status;
 | 
					  EFI_STATUS          Status;
 | 
				
			||||||
  SHELL_STATUS         ShellStatus;
 | 
					  SHELL_STATUS        ShellStatus;
 | 
				
			||||||
  UINT32               NameSize;
 | 
					  UINT32              NameSize;
 | 
				
			||||||
  UINT32               DataSize;
 | 
					  UINT32              DataSize;
 | 
				
			||||||
  UINTN                BufferSize;
 | 
					  UINTN               BufferSize;
 | 
				
			||||||
  UINTN                RemainingSize;
 | 
					  UINTN               RemainingSize;
 | 
				
			||||||
  UINT64               Position;
 | 
					  UINT64              Position;
 | 
				
			||||||
  UINT64               FileSize;
 | 
					  UINT64              FileSize;
 | 
				
			||||||
  LIST_ENTRY           List;
 | 
					  LIST_ENTRY          List;
 | 
				
			||||||
  DMP_STORE_VARIABLE   *Variable;
 | 
					  DMP_STORE_VARIABLE  *Variable;
 | 
				
			||||||
  LIST_ENTRY           *Link;
 | 
					  LIST_ENTRY          *Link;
 | 
				
			||||||
  CHAR16               *Attributes;
 | 
					  CHAR16              *Attributes;
 | 
				
			||||||
  UINT8                *Buffer;
 | 
					  UINT8               *Buffer;
 | 
				
			||||||
  UINT32               Crc32;
 | 
					  UINT32              Crc32;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = ShellGetFileSize (FileHandle, &FileSize);
 | 
					  Status = ShellGetFileSize (FileHandle, &FileSize);
 | 
				
			||||||
  if (EFI_ERROR (Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
@@ -162,7 +167,7 @@ LoadVariablesFromFile (
 | 
				
			|||||||
    // NameSize
 | 
					    // NameSize
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    BufferSize = sizeof (NameSize);
 | 
					    BufferSize = sizeof (NameSize);
 | 
				
			||||||
    Status = ShellReadFile (FileHandle, &BufferSize, &NameSize);
 | 
					    Status     = ShellReadFile (FileHandle, &BufferSize, &NameSize);
 | 
				
			||||||
    if (EFI_ERROR (Status) || (BufferSize != sizeof (NameSize))) {
 | 
					    if (EFI_ERROR (Status) || (BufferSize != sizeof (NameSize))) {
 | 
				
			||||||
      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
					      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@@ -172,7 +177,7 @@ LoadVariablesFromFile (
 | 
				
			|||||||
    // DataSize
 | 
					    // DataSize
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    BufferSize = sizeof (DataSize);
 | 
					    BufferSize = sizeof (DataSize);
 | 
				
			||||||
    Status = ShellReadFile (FileHandle, &BufferSize, &DataSize);
 | 
					    Status     = ShellReadFile (FileHandle, &BufferSize, &DataSize);
 | 
				
			||||||
    if (EFI_ERROR (Status) || (BufferSize != sizeof (DataSize))) {
 | 
					    if (EFI_ERROR (Status) || (BufferSize != sizeof (DataSize))) {
 | 
				
			||||||
      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
					      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@@ -188,8 +193,9 @@ LoadVariablesFromFile (
 | 
				
			|||||||
      ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
					      ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    BufferSize    = RemainingSize;
 | 
					
 | 
				
			||||||
    Status = ShellReadFile (FileHandle, &BufferSize, (UINT32 *) Buffer + 2);
 | 
					    BufferSize = RemainingSize;
 | 
				
			||||||
 | 
					    Status     = ShellReadFile (FileHandle, &BufferSize, (UINT32 *)Buffer + 2);
 | 
				
			||||||
    if (EFI_ERROR (Status) || (BufferSize != RemainingSize)) {
 | 
					    if (EFI_ERROR (Status) || (BufferSize != RemainingSize)) {
 | 
				
			||||||
      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
					      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
				
			||||||
      FreePool (Buffer);
 | 
					      FreePool (Buffer);
 | 
				
			||||||
@@ -199,15 +205,15 @@ LoadVariablesFromFile (
 | 
				
			|||||||
    //
 | 
					    //
 | 
				
			||||||
    // Check Crc32
 | 
					    // Check Crc32
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    * (UINT32 *) Buffer       = NameSize;
 | 
					    *(UINT32 *)Buffer       = NameSize;
 | 
				
			||||||
    * ((UINT32 *) Buffer + 1) = DataSize;
 | 
					    *((UINT32 *)Buffer + 1) = DataSize;
 | 
				
			||||||
    BufferSize = RemainingSize + sizeof (NameSize) + sizeof (DataSize) - sizeof (Crc32);
 | 
					    BufferSize              = RemainingSize + sizeof (NameSize) + sizeof (DataSize) - sizeof (Crc32);
 | 
				
			||||||
    gBS->CalculateCrc32 (
 | 
					    gBS->CalculateCrc32 (
 | 
				
			||||||
           Buffer,
 | 
					           Buffer,
 | 
				
			||||||
           BufferSize,
 | 
					           BufferSize,
 | 
				
			||||||
           &Crc32
 | 
					           &Crc32
 | 
				
			||||||
           );
 | 
					           );
 | 
				
			||||||
    if (Crc32 != * (UINT32 *) (Buffer + BufferSize)) {
 | 
					    if (Crc32 != *(UINT32 *)(Buffer + BufferSize)) {
 | 
				
			||||||
      FreePool (Buffer);
 | 
					      FreePool (Buffer);
 | 
				
			||||||
      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
					      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@@ -221,41 +227,51 @@ LoadVariablesFromFile (
 | 
				
			|||||||
      ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
					      ShellStatus = SHELL_OUT_OF_RESOURCES;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Variable->Signature = DMP_STORE_VARIABLE_SIGNATURE;
 | 
					    Variable->Signature = DMP_STORE_VARIABLE_SIGNATURE;
 | 
				
			||||||
    Variable->Name      = (CHAR16 *) (Variable + 1);
 | 
					    Variable->Name      = (CHAR16 *)(Variable + 1);
 | 
				
			||||||
    Variable->DataSize  = DataSize;
 | 
					    Variable->DataSize  = DataSize;
 | 
				
			||||||
    Variable->Data      = (UINT8 *) Variable->Name + NameSize;
 | 
					    Variable->Data      = (UINT8 *)Variable->Name + NameSize;
 | 
				
			||||||
    CopyMem (Variable->Name,        Buffer + sizeof (NameSize) + sizeof (DataSize),                                                  NameSize);
 | 
					    CopyMem (Variable->Name, Buffer + sizeof (NameSize) + sizeof (DataSize), NameSize);
 | 
				
			||||||
    CopyMem (&Variable->Guid,       Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize,                                       sizeof (EFI_GUID));
 | 
					    CopyMem (&Variable->Guid, Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize, sizeof (EFI_GUID));
 | 
				
			||||||
    CopyMem (&Variable->Attributes, Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize + sizeof (EFI_GUID),                   sizeof (UINT32));
 | 
					    CopyMem (&Variable->Attributes, Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize + sizeof (EFI_GUID), sizeof (UINT32));
 | 
				
			||||||
    CopyMem (Variable->Data,        Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize + sizeof (EFI_GUID) + sizeof (UINT32), DataSize);
 | 
					    CopyMem (Variable->Data, Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize + sizeof (EFI_GUID) + sizeof (UINT32), DataSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    InsertTailList (&List, &Variable->Link);
 | 
					    InsertTailList (&List, &Variable->Link);
 | 
				
			||||||
    FreePool (Buffer);
 | 
					    FreePool (Buffer);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((Position != FileSize) || (ShellStatus != SHELL_SUCCESS)) {
 | 
					  if ((Position != FileSize) || (ShellStatus != SHELL_SUCCESS)) {
 | 
				
			||||||
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_BAD_FILE), gShellDebug1HiiHandle, L"dmpstore");
 | 
					    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_BAD_FILE), gShellDebug1HiiHandle, L"dmpstore");
 | 
				
			||||||
    if (Position != FileSize) {
 | 
					    if (Position != FileSize) {
 | 
				
			||||||
      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
					      ShellStatus = SHELL_VOLUME_CORRUPTED;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for ( Link = GetFirstNode (&List)
 | 
					  for ( Link = GetFirstNode (&List)
 | 
				
			||||||
      ; !IsNull (&List, Link) && (ShellStatus == SHELL_SUCCESS)
 | 
					        ; !IsNull (&List, Link) && (ShellStatus == SHELL_SUCCESS)
 | 
				
			||||||
      ; Link = GetNextNode (&List, Link)
 | 
					        ; Link = GetNextNode (&List, Link)
 | 
				
			||||||
      ) {
 | 
					        )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    Variable = CR (Link, DMP_STORE_VARIABLE, Link, DMP_STORE_VARIABLE_SIGNATURE);
 | 
					    Variable = CR (Link, DMP_STORE_VARIABLE, Link, DMP_STORE_VARIABLE_SIGNATURE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (((Name == NULL) || gUnicodeCollation->MetaiMatch (gUnicodeCollation, Variable->Name, (CHAR16 *) Name)) &&
 | 
					    if (((Name == NULL) || gUnicodeCollation->MetaiMatch (gUnicodeCollation, Variable->Name, (CHAR16 *)Name)) &&
 | 
				
			||||||
        ((Guid == NULL) || CompareGuid (&Variable->Guid, Guid))
 | 
					        ((Guid == NULL) || CompareGuid (&Variable->Guid, Guid))
 | 
				
			||||||
       ) {
 | 
					        )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      Attributes = GetAttrType (Variable->Attributes);
 | 
					      Attributes = GetAttrType (Variable->Attributes);
 | 
				
			||||||
      ShellPrintHiiEx (
 | 
					      ShellPrintHiiEx (
 | 
				
			||||||
        -1, -1, NULL, STRING_TOKEN(STR_DMPSTORE_HEADER_LINE), gShellDebug1HiiHandle,
 | 
					        -1,
 | 
				
			||||||
        Attributes, &Variable->Guid, Variable->Name, Variable->DataSize
 | 
					        -1,
 | 
				
			||||||
 | 
					        NULL,
 | 
				
			||||||
 | 
					        STRING_TOKEN (STR_DMPSTORE_HEADER_LINE),
 | 
				
			||||||
 | 
					        gShellDebug1HiiHandle,
 | 
				
			||||||
 | 
					        Attributes,
 | 
				
			||||||
 | 
					        &Variable->Guid,
 | 
				
			||||||
 | 
					        Variable->Name,
 | 
				
			||||||
 | 
					        Variable->DataSize
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      SHELL_FREE_NON_NULL(Attributes);
 | 
					      SHELL_FREE_NON_NULL (Attributes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      *Found = TRUE;
 | 
					      *Found = TRUE;
 | 
				
			||||||
      Status = gRT->SetVariable (
 | 
					      Status = gRT->SetVariable (
 | 
				
			||||||
@@ -266,14 +282,14 @@ LoadVariablesFromFile (
 | 
				
			|||||||
                      Variable->Data
 | 
					                      Variable->Data
 | 
				
			||||||
                      );
 | 
					                      );
 | 
				
			||||||
      if (EFI_ERROR (Status)) {
 | 
					      if (EFI_ERROR (Status)) {
 | 
				
			||||||
        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_GEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", Variable->Name, Status);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_GEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", Variable->Name, Status);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (Link = GetFirstNode (&List); !IsNull (&List, Link); ) {
 | 
					  for (Link = GetFirstNode (&List); !IsNull (&List, Link); ) {
 | 
				
			||||||
    Variable = CR (Link, DMP_STORE_VARIABLE, Link, DMP_STORE_VARIABLE_SIGNATURE);
 | 
					    Variable = CR (Link, DMP_STORE_VARIABLE, Link, DMP_STORE_VARIABLE_SIGNATURE);
 | 
				
			||||||
    Link = RemoveEntryList (&Variable->Link);
 | 
					    Link     = RemoveEntryList (&Variable->Link);
 | 
				
			||||||
    FreePool (Variable);
 | 
					    FreePool (Variable);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -296,26 +312,26 @@ LoadVariablesFromFile (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
AppendSingleVariableToFile (
 | 
					AppendSingleVariableToFile (
 | 
				
			||||||
  IN SHELL_FILE_HANDLE FileHandle,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle,
 | 
				
			||||||
  IN CONST CHAR16      *Name,
 | 
					  IN CONST CHAR16       *Name,
 | 
				
			||||||
  IN CONST EFI_GUID    *Guid,
 | 
					  IN CONST EFI_GUID     *Guid,
 | 
				
			||||||
  IN UINT32            Attributes,
 | 
					  IN UINT32             Attributes,
 | 
				
			||||||
  IN UINT32            DataSize,
 | 
					  IN UINT32             DataSize,
 | 
				
			||||||
  IN CONST UINT8       *Data
 | 
					  IN CONST UINT8        *Data
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT32              NameSize;
 | 
					  UINT32      NameSize;
 | 
				
			||||||
  UINT8               *Buffer;
 | 
					  UINT8       *Buffer;
 | 
				
			||||||
  UINT8               *Ptr;
 | 
					  UINT8       *Ptr;
 | 
				
			||||||
  UINTN               BufferSize;
 | 
					  UINTN       BufferSize;
 | 
				
			||||||
  EFI_STATUS          Status;
 | 
					  EFI_STATUS  Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  NameSize   = (UINT32) StrSize (Name);
 | 
					  NameSize   = (UINT32)StrSize (Name);
 | 
				
			||||||
  BufferSize = sizeof (NameSize) + sizeof (DataSize)
 | 
					  BufferSize = sizeof (NameSize) + sizeof (DataSize)
 | 
				
			||||||
             + sizeof (*Guid)
 | 
					               + sizeof (*Guid)
 | 
				
			||||||
             + sizeof (Attributes)
 | 
					               + sizeof (Attributes)
 | 
				
			||||||
             + NameSize + DataSize
 | 
					               + NameSize + DataSize
 | 
				
			||||||
             + sizeof (UINT32);
 | 
					               + sizeof (UINT32);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Buffer = AllocatePool (BufferSize);
 | 
					  Buffer = AllocatePool (BufferSize);
 | 
				
			||||||
  if (Buffer == NULL) {
 | 
					  if (Buffer == NULL) {
 | 
				
			||||||
@@ -326,10 +342,10 @@ AppendSingleVariableToFile (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // NameSize and DataSize
 | 
					  // NameSize and DataSize
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  * (UINT32 *) Ptr = NameSize;
 | 
					  *(UINT32 *)Ptr = NameSize;
 | 
				
			||||||
  Ptr += sizeof (NameSize);
 | 
					  Ptr           += sizeof (NameSize);
 | 
				
			||||||
  *(UINT32 *) Ptr = DataSize;
 | 
					  *(UINT32 *)Ptr = DataSize;
 | 
				
			||||||
  Ptr += sizeof (DataSize);
 | 
					  Ptr           += sizeof (DataSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Name
 | 
					  // Name
 | 
				
			||||||
@@ -346,8 +362,8 @@ AppendSingleVariableToFile (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // Attributes
 | 
					  // Attributes
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  * (UINT32 *) Ptr = Attributes;
 | 
					  *(UINT32 *)Ptr = Attributes;
 | 
				
			||||||
  Ptr += sizeof (Attributes);
 | 
					  Ptr           += sizeof (Attributes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Data
 | 
					  // Data
 | 
				
			||||||
@@ -358,14 +374,15 @@ AppendSingleVariableToFile (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // Crc32
 | 
					  // Crc32
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  gBS->CalculateCrc32 (Buffer, (UINTN) Ptr - (UINTN) Buffer, (UINT32 *) Ptr);
 | 
					  gBS->CalculateCrc32 (Buffer, (UINTN)Ptr - (UINTN)Buffer, (UINT32 *)Ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = ShellWriteFile (FileHandle, &BufferSize, Buffer);
 | 
					  Status = ShellWriteFile (FileHandle, &BufferSize, Buffer);
 | 
				
			||||||
  FreePool (Buffer);
 | 
					  FreePool (Buffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!EFI_ERROR (Status) &&
 | 
					  if (!EFI_ERROR (Status) &&
 | 
				
			||||||
      (BufferSize != sizeof (NameSize) + sizeof (DataSize) + sizeof (*Guid) + sizeof (Attributes) + NameSize + DataSize + sizeof (UINT32))
 | 
					      (BufferSize != sizeof (NameSize) + sizeof (DataSize) + sizeof (*Guid) + sizeof (Attributes) + NameSize + DataSize + sizeof (UINT32))
 | 
				
			||||||
    ) {
 | 
					      )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    Status = EFI_DEVICE_ERROR;
 | 
					    Status = EFI_DEVICE_ERROR;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -398,49 +415,49 @@ AppendSingleVariableToFile (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
CascadeProcessVariables (
 | 
					CascadeProcessVariables (
 | 
				
			||||||
  IN CONST CHAR16      *Name        OPTIONAL,
 | 
					  IN CONST CHAR16              *Name        OPTIONAL,
 | 
				
			||||||
  IN CONST EFI_GUID    *Guid        OPTIONAL,
 | 
					  IN CONST EFI_GUID            *Guid        OPTIONAL,
 | 
				
			||||||
  IN DMP_STORE_TYPE    Type,
 | 
					  IN DMP_STORE_TYPE            Type,
 | 
				
			||||||
  IN EFI_FILE_PROTOCOL *FileHandle  OPTIONAL,
 | 
					  IN EFI_FILE_PROTOCOL         *FileHandle  OPTIONAL,
 | 
				
			||||||
  IN CONST CHAR16      * CONST PrevName,
 | 
					  IN CONST CHAR16      *CONST  PrevName,
 | 
				
			||||||
  IN EFI_GUID          FoundVarGuid,
 | 
					  IN EFI_GUID                  FoundVarGuid,
 | 
				
			||||||
  IN BOOLEAN           *FoundOne,
 | 
					  IN BOOLEAN                   *FoundOne,
 | 
				
			||||||
  IN BOOLEAN           StandardFormatOutput
 | 
					  IN BOOLEAN                   StandardFormatOutput
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS                Status;
 | 
					  EFI_STATUS    Status;
 | 
				
			||||||
  CHAR16                    *FoundVarName;
 | 
					  CHAR16        *FoundVarName;
 | 
				
			||||||
  UINT8                     *DataBuffer;
 | 
					  UINT8         *DataBuffer;
 | 
				
			||||||
  UINTN                     DataSize;
 | 
					  UINTN         DataSize;
 | 
				
			||||||
  UINT32                    Atts;
 | 
					  UINT32        Atts;
 | 
				
			||||||
  SHELL_STATUS              ShellStatus;
 | 
					  SHELL_STATUS  ShellStatus;
 | 
				
			||||||
  UINTN                     NameSize;
 | 
					  UINTN         NameSize;
 | 
				
			||||||
  CHAR16                    *AttrString;
 | 
					  CHAR16        *AttrString;
 | 
				
			||||||
  CHAR16                    *HexString;
 | 
					  CHAR16        *HexString;
 | 
				
			||||||
  EFI_STATUS                SetStatus;
 | 
					  EFI_STATUS    SetStatus;
 | 
				
			||||||
  CONST CHAR16              *GuidName;
 | 
					  CONST CHAR16  *GuidName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ShellGetExecutionBreakFlag()) {
 | 
					  if (ShellGetExecutionBreakFlag ()) {
 | 
				
			||||||
    return (SHELL_ABORTED);
 | 
					    return (SHELL_ABORTED);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  NameSize      = 0;
 | 
					  NameSize     = 0;
 | 
				
			||||||
  FoundVarName  = NULL;
 | 
					  FoundVarName = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (PrevName!=NULL) {
 | 
					  if (PrevName != NULL) {
 | 
				
			||||||
    StrnCatGrow(&FoundVarName, &NameSize, PrevName, 0);
 | 
					    StrnCatGrow (&FoundVarName, &NameSize, PrevName, 0);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    FoundVarName = AllocateZeroPool(sizeof(CHAR16));
 | 
					    FoundVarName = AllocateZeroPool (sizeof (CHAR16));
 | 
				
			||||||
    NameSize = sizeof(CHAR16);
 | 
					    NameSize     = sizeof (CHAR16);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = gRT->GetNextVariableName (&NameSize, FoundVarName, &FoundVarGuid);
 | 
					  Status = gRT->GetNextVariableName (&NameSize, FoundVarName, &FoundVarGuid);
 | 
				
			||||||
  if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
					  if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
				
			||||||
    SHELL_FREE_NON_NULL(FoundVarName);
 | 
					    SHELL_FREE_NON_NULL (FoundVarName);
 | 
				
			||||||
    FoundVarName = AllocateZeroPool (NameSize);
 | 
					    FoundVarName = AllocateZeroPool (NameSize);
 | 
				
			||||||
    if (FoundVarName != NULL) {
 | 
					    if (FoundVarName != NULL) {
 | 
				
			||||||
      if (PrevName != NULL) {
 | 
					      if (PrevName != NULL) {
 | 
				
			||||||
        StrnCpyS(FoundVarName, NameSize/sizeof(CHAR16), PrevName, NameSize/sizeof(CHAR16) - 1);
 | 
					        StrnCpyS (FoundVarName, NameSize/sizeof (CHAR16), PrevName, NameSize/sizeof (CHAR16) - 1);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Status = gRT->GetNextVariableName (&NameSize, FoundVarName, &FoundVarGuid);
 | 
					      Status = gRT->GetNextVariableName (&NameSize, FoundVarName, &FoundVarGuid);
 | 
				
			||||||
@@ -453,10 +470,10 @@ CascadeProcessVariables (
 | 
				
			|||||||
  // No more is fine.
 | 
					  // No more is fine.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  if (Status == EFI_NOT_FOUND) {
 | 
					  if (Status == EFI_NOT_FOUND) {
 | 
				
			||||||
    SHELL_FREE_NON_NULL(FoundVarName);
 | 
					    SHELL_FREE_NON_NULL (FoundVarName);
 | 
				
			||||||
    return (SHELL_SUCCESS);
 | 
					    return (SHELL_SUCCESS);
 | 
				
			||||||
  } else if (EFI_ERROR(Status)) {
 | 
					  } else if (EFI_ERROR (Status)) {
 | 
				
			||||||
    SHELL_FREE_NON_NULL(FoundVarName);
 | 
					    SHELL_FREE_NON_NULL (FoundVarName);
 | 
				
			||||||
    return (SHELL_DEVICE_ERROR);
 | 
					    return (SHELL_DEVICE_ERROR);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -465,8 +482,8 @@ CascadeProcessVariables (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  ShellStatus = CascadeProcessVariables (Name, Guid, Type, FileHandle, FoundVarName, FoundVarGuid, FoundOne, StandardFormatOutput);
 | 
					  ShellStatus = CascadeProcessVariables (Name, Guid, Type, FileHandle, FoundVarName, FoundVarGuid, FoundOne, StandardFormatOutput);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ShellGetExecutionBreakFlag() || (ShellStatus == SHELL_ABORTED)) {
 | 
					  if (ShellGetExecutionBreakFlag () || (ShellStatus == SHELL_ABORTED)) {
 | 
				
			||||||
    SHELL_FREE_NON_NULL(FoundVarName);
 | 
					    SHELL_FREE_NON_NULL (FoundVarName);
 | 
				
			||||||
    return (SHELL_ABORTED);
 | 
					    return (SHELL_ABORTED);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -474,18 +491,19 @@ CascadeProcessVariables (
 | 
				
			|||||||
  // No matter what happened we process our own variable
 | 
					  // No matter what happened we process our own variable
 | 
				
			||||||
  // Only continue if Guid and VariableName are each either NULL or a match
 | 
					  // Only continue if Guid and VariableName are each either NULL or a match
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  if ( ( Name == NULL
 | 
					  if (  (  (Name == NULL)
 | 
				
			||||||
      || gUnicodeCollation->MetaiMatch(gUnicodeCollation, FoundVarName, (CHAR16*) Name) )
 | 
					        || gUnicodeCollation->MetaiMatch (gUnicodeCollation, FoundVarName, (CHAR16 *)Name))
 | 
				
			||||||
     && ( Guid == NULL
 | 
					     && (  (Guid == NULL)
 | 
				
			||||||
      || CompareGuid(&FoundVarGuid, Guid) )
 | 
					        || CompareGuid (&FoundVarGuid, Guid))
 | 
				
			||||||
      ) {
 | 
					        )
 | 
				
			||||||
    DataSize      = 0;
 | 
					  {
 | 
				
			||||||
    DataBuffer    = NULL;
 | 
					    DataSize   = 0;
 | 
				
			||||||
 | 
					    DataBuffer = NULL;
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // do the print or delete
 | 
					    // do the print or delete
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    *FoundOne = TRUE;
 | 
					    *FoundOne = TRUE;
 | 
				
			||||||
    Status = gRT->GetVariable (FoundVarName, &FoundVarGuid, &Atts, &DataSize, DataBuffer);
 | 
					    Status    = gRT->GetVariable (FoundVarName, &FoundVarGuid, &Atts, &DataSize, DataBuffer);
 | 
				
			||||||
    if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
					    if (Status == EFI_BUFFER_TOO_SMALL) {
 | 
				
			||||||
      SHELL_FREE_NON_NULL (DataBuffer);
 | 
					      SHELL_FREE_NON_NULL (DataBuffer);
 | 
				
			||||||
      DataBuffer = AllocatePool (DataSize);
 | 
					      DataBuffer = AllocatePool (DataSize);
 | 
				
			||||||
@@ -495,20 +513,31 @@ CascadeProcessVariables (
 | 
				
			|||||||
        Status = gRT->GetVariable (FoundVarName, &FoundVarGuid, &Atts, &DataSize, DataBuffer);
 | 
					        Status = gRT->GetVariable (FoundVarName, &FoundVarGuid, &Atts, &DataSize, DataBuffer);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
      //
 | 
					
 | 
				
			||||||
      // Last error check then print this variable out.
 | 
					    //
 | 
				
			||||||
      //
 | 
					    // Last error check then print this variable out.
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
    if (Type == DmpStoreDisplay) {
 | 
					    if (Type == DmpStoreDisplay) {
 | 
				
			||||||
      if (!EFI_ERROR(Status) && (DataBuffer != NULL) && (FoundVarName != NULL)) {
 | 
					      if (!EFI_ERROR (Status) && (DataBuffer != NULL) && (FoundVarName != NULL)) {
 | 
				
			||||||
        AttrString = GetAttrType(Atts);
 | 
					        AttrString = GetAttrType (Atts);
 | 
				
			||||||
        if (StandardFormatOutput) {
 | 
					        if (StandardFormatOutput) {
 | 
				
			||||||
          HexString = AllocatePool ((DataSize * 2 + 1) * sizeof (CHAR16));
 | 
					          HexString = AllocatePool ((DataSize * 2 + 1) * sizeof (CHAR16));
 | 
				
			||||||
          if (HexString != NULL) {
 | 
					          if (HexString != NULL) {
 | 
				
			||||||
            ShellPrintHiiEx (
 | 
					            ShellPrintHiiEx (
 | 
				
			||||||
              -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_VAR_SFO), gShellDebug1HiiHandle,
 | 
					              -1,
 | 
				
			||||||
              FoundVarName, &FoundVarGuid, Atts, DataSize,
 | 
					              -1,
 | 
				
			||||||
 | 
					              NULL,
 | 
				
			||||||
 | 
					              STRING_TOKEN (STR_DMPSTORE_VAR_SFO),
 | 
				
			||||||
 | 
					              gShellDebug1HiiHandle,
 | 
				
			||||||
 | 
					              FoundVarName,
 | 
				
			||||||
 | 
					              &FoundVarGuid,
 | 
				
			||||||
 | 
					              Atts,
 | 
				
			||||||
 | 
					              DataSize,
 | 
				
			||||||
              BinaryToHexString (
 | 
					              BinaryToHexString (
 | 
				
			||||||
                DataBuffer, DataSize, HexString, (DataSize * 2 + 1) * sizeof (CHAR16)
 | 
					                DataBuffer,
 | 
				
			||||||
 | 
					                DataSize,
 | 
				
			||||||
 | 
					                HexString,
 | 
				
			||||||
 | 
					                (DataSize * 2 + 1) * sizeof (CHAR16)
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
              );
 | 
					              );
 | 
				
			||||||
            FreePool (HexString);
 | 
					            FreePool (HexString);
 | 
				
			||||||
@@ -516,35 +545,58 @@ CascadeProcessVariables (
 | 
				
			|||||||
            Status = EFI_OUT_OF_RESOURCES;
 | 
					            Status = EFI_OUT_OF_RESOURCES;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          Status = gEfiShellProtocol->GetGuidName(&FoundVarGuid, &GuidName);
 | 
					          Status = gEfiShellProtocol->GetGuidName (&FoundVarGuid, &GuidName);
 | 
				
			||||||
          if (EFI_ERROR (Status)) {
 | 
					          if (EFI_ERROR (Status)) {
 | 
				
			||||||
            ShellPrintHiiEx (
 | 
					            ShellPrintHiiEx (
 | 
				
			||||||
              -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE), gShellDebug1HiiHandle,
 | 
					              -1,
 | 
				
			||||||
              AttrString, &FoundVarGuid, FoundVarName, DataSize
 | 
					              -1,
 | 
				
			||||||
 | 
					              NULL,
 | 
				
			||||||
 | 
					              STRING_TOKEN (STR_DMPSTORE_HEADER_LINE),
 | 
				
			||||||
 | 
					              gShellDebug1HiiHandle,
 | 
				
			||||||
 | 
					              AttrString,
 | 
				
			||||||
 | 
					              &FoundVarGuid,
 | 
				
			||||||
 | 
					              FoundVarName,
 | 
				
			||||||
 | 
					              DataSize
 | 
				
			||||||
              );
 | 
					              );
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            ShellPrintHiiEx (
 | 
					            ShellPrintHiiEx (
 | 
				
			||||||
              -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE2), gShellDebug1HiiHandle,
 | 
					              -1,
 | 
				
			||||||
              AttrString, GuidName, FoundVarName, DataSize
 | 
					              -1,
 | 
				
			||||||
 | 
					              NULL,
 | 
				
			||||||
 | 
					              STRING_TOKEN (STR_DMPSTORE_HEADER_LINE2),
 | 
				
			||||||
 | 
					              gShellDebug1HiiHandle,
 | 
				
			||||||
 | 
					              AttrString,
 | 
				
			||||||
 | 
					              GuidName,
 | 
				
			||||||
 | 
					              FoundVarName,
 | 
				
			||||||
 | 
					              DataSize
 | 
				
			||||||
              );
 | 
					              );
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          DumpHex (2, 0, DataSize, DataBuffer);
 | 
					          DumpHex (2, 0, DataSize, DataBuffer);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SHELL_FREE_NON_NULL (AttrString);
 | 
					        SHELL_FREE_NON_NULL (AttrString);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } else if (Type == DmpStoreSave) {
 | 
					    } else if (Type == DmpStoreSave) {
 | 
				
			||||||
      if (!EFI_ERROR(Status) && (DataBuffer != NULL) && (FoundVarName != NULL)) {
 | 
					      if (!EFI_ERROR (Status) && (DataBuffer != NULL) && (FoundVarName != NULL)) {
 | 
				
			||||||
        AttrString = GetAttrType (Atts);
 | 
					        AttrString = GetAttrType (Atts);
 | 
				
			||||||
        ShellPrintHiiEx (
 | 
					        ShellPrintHiiEx (
 | 
				
			||||||
          -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE), gShellDebug1HiiHandle,
 | 
					          -1,
 | 
				
			||||||
          AttrString, &FoundVarGuid, FoundVarName, DataSize
 | 
					          -1,
 | 
				
			||||||
 | 
					          NULL,
 | 
				
			||||||
 | 
					          STRING_TOKEN (STR_DMPSTORE_HEADER_LINE),
 | 
				
			||||||
 | 
					          gShellDebug1HiiHandle,
 | 
				
			||||||
 | 
					          AttrString,
 | 
				
			||||||
 | 
					          &FoundVarGuid,
 | 
				
			||||||
 | 
					          FoundVarName,
 | 
				
			||||||
 | 
					          DataSize
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
        Status = AppendSingleVariableToFile (
 | 
					        Status = AppendSingleVariableToFile (
 | 
				
			||||||
                   FileHandle,
 | 
					                   FileHandle,
 | 
				
			||||||
                   FoundVarName,
 | 
					                   FoundVarName,
 | 
				
			||||||
                   &FoundVarGuid,
 | 
					                   &FoundVarGuid,
 | 
				
			||||||
                   Atts,
 | 
					                   Atts,
 | 
				
			||||||
                   (UINT32) DataSize,
 | 
					                   (UINT32)DataSize,
 | 
				
			||||||
                   DataBuffer
 | 
					                   DataBuffer
 | 
				
			||||||
                   );
 | 
					                   );
 | 
				
			||||||
        SHELL_FREE_NON_NULL (AttrString);
 | 
					        SHELL_FREE_NON_NULL (AttrString);
 | 
				
			||||||
@@ -557,27 +609,39 @@ CascadeProcessVariables (
 | 
				
			|||||||
      if (StandardFormatOutput) {
 | 
					      if (StandardFormatOutput) {
 | 
				
			||||||
        if (SetStatus == EFI_SUCCESS) {
 | 
					        if (SetStatus == EFI_SUCCESS) {
 | 
				
			||||||
          ShellPrintHiiEx (
 | 
					          ShellPrintHiiEx (
 | 
				
			||||||
            -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_NG_SFO), gShellDebug1HiiHandle,
 | 
					            -1,
 | 
				
			||||||
            FoundVarName, &FoundVarGuid
 | 
					            -1,
 | 
				
			||||||
 | 
					            NULL,
 | 
				
			||||||
 | 
					            STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_NG_SFO),
 | 
				
			||||||
 | 
					            gShellDebug1HiiHandle,
 | 
				
			||||||
 | 
					            FoundVarName,
 | 
				
			||||||
 | 
					            &FoundVarGuid
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ShellPrintHiiEx (
 | 
					        ShellPrintHiiEx (
 | 
				
			||||||
          -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_DELETE_LINE), gShellDebug1HiiHandle,
 | 
					          -1,
 | 
				
			||||||
          &FoundVarGuid, FoundVarName, SetStatus
 | 
					          -1,
 | 
				
			||||||
 | 
					          NULL,
 | 
				
			||||||
 | 
					          STRING_TOKEN (STR_DMPSTORE_DELETE_LINE),
 | 
				
			||||||
 | 
					          gShellDebug1HiiHandle,
 | 
				
			||||||
 | 
					          &FoundVarGuid,
 | 
				
			||||||
 | 
					          FoundVarName,
 | 
				
			||||||
 | 
					          SetStatus
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    SHELL_FREE_NON_NULL(DataBuffer);
 | 
					
 | 
				
			||||||
 | 
					    SHELL_FREE_NON_NULL (DataBuffer);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SHELL_FREE_NON_NULL(FoundVarName);
 | 
					  SHELL_FREE_NON_NULL (FoundVarName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Status == EFI_DEVICE_ERROR) {
 | 
					  if (Status == EFI_DEVICE_ERROR) {
 | 
				
			||||||
    ShellStatus = SHELL_DEVICE_ERROR;
 | 
					    ShellStatus = SHELL_DEVICE_ERROR;
 | 
				
			||||||
  } else if (Status == EFI_SECURITY_VIOLATION) {
 | 
					  } else if (Status == EFI_SECURITY_VIOLATION) {
 | 
				
			||||||
    ShellStatus = SHELL_SECURITY_VIOLATION;
 | 
					    ShellStatus = SHELL_SECURITY_VIOLATION;
 | 
				
			||||||
  } else if (EFI_ERROR(Status)) {
 | 
					  } else if (EFI_ERROR (Status)) {
 | 
				
			||||||
    ShellStatus = SHELL_NOT_READY;
 | 
					    ShellStatus = SHELL_NOT_READY;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -601,23 +665,23 @@ CascadeProcessVariables (
 | 
				
			|||||||
**/
 | 
					**/
 | 
				
			||||||
SHELL_STATUS
 | 
					SHELL_STATUS
 | 
				
			||||||
ProcessVariables (
 | 
					ProcessVariables (
 | 
				
			||||||
  IN CONST CHAR16      *Name      OPTIONAL,
 | 
					  IN CONST CHAR16       *Name      OPTIONAL,
 | 
				
			||||||
  IN CONST EFI_GUID    *Guid      OPTIONAL,
 | 
					  IN CONST EFI_GUID     *Guid      OPTIONAL,
 | 
				
			||||||
  IN DMP_STORE_TYPE    Type,
 | 
					  IN DMP_STORE_TYPE     Type,
 | 
				
			||||||
  IN SHELL_FILE_HANDLE FileHandle OPTIONAL,
 | 
					  IN SHELL_FILE_HANDLE  FileHandle OPTIONAL,
 | 
				
			||||||
  IN BOOLEAN           StandardFormatOutput
 | 
					  IN BOOLEAN            StandardFormatOutput
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  SHELL_STATUS              ShellStatus;
 | 
					  SHELL_STATUS  ShellStatus;
 | 
				
			||||||
  BOOLEAN                   Found;
 | 
					  BOOLEAN       Found;
 | 
				
			||||||
  EFI_GUID                  FoundVarGuid;
 | 
					  EFI_GUID      FoundVarGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Found         = FALSE;
 | 
					  Found       = FALSE;
 | 
				
			||||||
  ShellStatus   = SHELL_SUCCESS;
 | 
					  ShellStatus = SHELL_SUCCESS;
 | 
				
			||||||
  ZeroMem (&FoundVarGuid, sizeof(EFI_GUID));
 | 
					  ZeroMem (&FoundVarGuid, sizeof (EFI_GUID));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (StandardFormatOutput) {
 | 
					  if (StandardFormatOutput) {
 | 
				
			||||||
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_GEN_SFO_HEADER), gShellDebug1HiiHandle, L"dmpstore");
 | 
					    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_SFO_HEADER), gShellDebug1HiiHandle, L"dmpstore");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Type == DmpStoreLoad) {
 | 
					  if (Type == DmpStoreLoad) {
 | 
				
			||||||
@@ -628,43 +692,45 @@ ProcessVariables (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if (!Found) {
 | 
					  if (!Found) {
 | 
				
			||||||
    if (ShellStatus == SHELL_OUT_OF_RESOURCES) {
 | 
					    if (ShellStatus == SHELL_OUT_OF_RESOURCES) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"dmpstore");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"dmpstore");
 | 
				
			||||||
      return (ShellStatus);
 | 
					      return (ShellStatus);
 | 
				
			||||||
    } else if (Name != NULL && Guid == NULL) {
 | 
					    } else if ((Name != NULL) && (Guid == NULL)) {
 | 
				
			||||||
      if (StandardFormatOutput) {
 | 
					      if (StandardFormatOutput) {
 | 
				
			||||||
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_N_SFO), gShellDebug1HiiHandle, Name);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_N_SFO), gShellDebug1HiiHandle, Name);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_N), gShellDebug1HiiHandle, L"dmpstore", Name);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_N), gShellDebug1HiiHandle, L"dmpstore", Name);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } else if (Name != NULL && Guid != NULL) {
 | 
					    } else if ((Name != NULL) && (Guid != NULL)) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_GN), gShellDebug1HiiHandle, L"dmpstore", Guid, Name);
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_GN), gShellDebug1HiiHandle, L"dmpstore", Guid, Name);
 | 
				
			||||||
    } else if (Name == NULL && Guid == NULL) {
 | 
					    } else if ((Name == NULL) && (Guid == NULL)) {
 | 
				
			||||||
      if (StandardFormatOutput) {
 | 
					      if (StandardFormatOutput) {
 | 
				
			||||||
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_SFO), gShellDebug1HiiHandle);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_SFO), gShellDebug1HiiHandle);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND), gShellDebug1HiiHandle, L"dmpstore");
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND), gShellDebug1HiiHandle, L"dmpstore");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } else if (Name == NULL && Guid != NULL) {
 | 
					    } else if ((Name == NULL) && (Guid != NULL)) {
 | 
				
			||||||
      if (StandardFormatOutput) {
 | 
					      if (StandardFormatOutput) {
 | 
				
			||||||
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_G_SFO), gShellDebug1HiiHandle, Guid);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_G_SFO), gShellDebug1HiiHandle, Guid);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_G), gShellDebug1HiiHandle, L"dmpstore", Guid);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_G), gShellDebug1HiiHandle, L"dmpstore", Guid);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (SHELL_NOT_FOUND);
 | 
					    return (SHELL_NOT_FOUND);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (ShellStatus);
 | 
					  return (ShellStatus);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
 | 
					STATIC CONST SHELL_PARAM_ITEM  ParamList[] = {
 | 
				
			||||||
  {L"-d", TypeFlag},
 | 
					  { L"-d",    TypeFlag  },
 | 
				
			||||||
  {L"-l", TypeValue},
 | 
					  { L"-l",    TypeValue },
 | 
				
			||||||
  {L"-s", TypeValue},
 | 
					  { L"-s",    TypeValue },
 | 
				
			||||||
  {L"-all", TypeFlag},
 | 
					  { L"-all",  TypeFlag  },
 | 
				
			||||||
  {L"-guid", TypeValue},
 | 
					  { L"-guid", TypeValue },
 | 
				
			||||||
  {L"-sfo", TypeFlag},
 | 
					  { L"-sfo",  TypeFlag  },
 | 
				
			||||||
  {NULL, TypeMax}
 | 
					  { NULL,     TypeMax   }
 | 
				
			||||||
  };
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
  Function for 'dmpstore' command.
 | 
					  Function for 'dmpstore' command.
 | 
				
			||||||
@@ -679,20 +745,20 @@ ShellCommandRunDmpStore (
 | 
				
			|||||||
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS        Status;
 | 
					  EFI_STATUS         Status;
 | 
				
			||||||
  RETURN_STATUS     RStatus;
 | 
					  RETURN_STATUS      RStatus;
 | 
				
			||||||
  LIST_ENTRY        *Package;
 | 
					  LIST_ENTRY         *Package;
 | 
				
			||||||
  CHAR16            *ProblemParam;
 | 
					  CHAR16             *ProblemParam;
 | 
				
			||||||
  SHELL_STATUS      ShellStatus;
 | 
					  SHELL_STATUS       ShellStatus;
 | 
				
			||||||
  CONST CHAR16      *GuidStr;
 | 
					  CONST CHAR16       *GuidStr;
 | 
				
			||||||
  CONST CHAR16      *File;
 | 
					  CONST CHAR16       *File;
 | 
				
			||||||
  EFI_GUID          *Guid;
 | 
					  EFI_GUID           *Guid;
 | 
				
			||||||
  EFI_GUID          GuidData;
 | 
					  EFI_GUID           GuidData;
 | 
				
			||||||
  CONST CHAR16      *Name;
 | 
					  CONST CHAR16       *Name;
 | 
				
			||||||
  DMP_STORE_TYPE    Type;
 | 
					  DMP_STORE_TYPE     Type;
 | 
				
			||||||
  SHELL_FILE_HANDLE FileHandle;
 | 
					  SHELL_FILE_HANDLE  FileHandle;
 | 
				
			||||||
  EFI_FILE_INFO     *FileInfo;
 | 
					  EFI_FILE_INFO      *FileInfo;
 | 
				
			||||||
  BOOLEAN           StandardFormatOutput;
 | 
					  BOOLEAN            StandardFormatOutput;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ShellStatus          = SHELL_SUCCESS;
 | 
					  ShellStatus          = SHELL_SUCCESS;
 | 
				
			||||||
  Package              = NULL;
 | 
					  Package              = NULL;
 | 
				
			||||||
@@ -702,61 +768,62 @@ ShellCommandRunDmpStore (
 | 
				
			|||||||
  StandardFormatOutput = FALSE;
 | 
					  StandardFormatOutput = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
					  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
 | 
					    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"dmpstore", ProblemParam);
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"dmpstore", ProblemParam);
 | 
				
			||||||
      FreePool(ProblemParam);
 | 
					      FreePool (ProblemParam);
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ASSERT(FALSE);
 | 
					      ASSERT (FALSE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (ShellCommandLineGetCount(Package) > 2) {
 | 
					    if (ShellCommandLineGetCount (Package) > 2) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dmpstore");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dmpstore");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if (ShellCommandLineGetFlag(Package, L"-all") && ShellCommandLineGetFlag(Package, L"-guid")) {
 | 
					    } else if (ShellCommandLineGetFlag (Package, L"-all") && ShellCommandLineGetFlag (Package, L"-guid")) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-all", L"-guid");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-all", L"-guid");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if (ShellCommandLineGetFlag(Package, L"-s") && ShellCommandLineGetFlag(Package, L"-l")) {
 | 
					    } else if (ShellCommandLineGetFlag (Package, L"-s") && ShellCommandLineGetFlag (Package, L"-l")) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle,  L"dmpstore", L"-l", L"-s");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l", L"-s");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if ((ShellCommandLineGetFlag(Package, L"-s") || ShellCommandLineGetFlag(Package, L"-l")) && ShellCommandLineGetFlag(Package, L"-d")) {
 | 
					    } else if ((ShellCommandLineGetFlag (Package, L"-s") || ShellCommandLineGetFlag (Package, L"-l")) && ShellCommandLineGetFlag (Package, L"-d")) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-d");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-d");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else if ((ShellCommandLineGetFlag(Package, L"-s") || ShellCommandLineGetFlag(Package, L"-l")) && ShellCommandLineGetFlag(Package, L"-sfo")) {
 | 
					    } else if ((ShellCommandLineGetFlag (Package, L"-s") || ShellCommandLineGetFlag (Package, L"-l")) && ShellCommandLineGetFlag (Package, L"-sfo")) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-sfo");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-sfo");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // Determine the GUID to search for based on -all and -guid parameters
 | 
					      // Determine the GUID to search for based on -all and -guid parameters
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      if (!ShellCommandLineGetFlag(Package, L"-all")) {
 | 
					      if (!ShellCommandLineGetFlag (Package, L"-all")) {
 | 
				
			||||||
        GuidStr = ShellCommandLineGetValue(Package, L"-guid");
 | 
					        GuidStr = ShellCommandLineGetValue (Package, L"-guid");
 | 
				
			||||||
        if (GuidStr != NULL) {
 | 
					        if (GuidStr != NULL) {
 | 
				
			||||||
          RStatus = StrToGuid (GuidStr, &GuidData);
 | 
					          RStatus = StrToGuid (GuidStr, &GuidData);
 | 
				
			||||||
          if (RETURN_ERROR (RStatus) || (GuidStr[GUID_STRING_LENGTH] != L'\0')) {
 | 
					          if (RETURN_ERROR (RStatus) || (GuidStr[GUID_STRING_LENGTH] != L'\0')) {
 | 
				
			||||||
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmpstore", GuidStr);
 | 
					            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmpstore", GuidStr);
 | 
				
			||||||
            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          Guid = &GuidData;
 | 
					          Guid = &GuidData;
 | 
				
			||||||
        } else  {
 | 
					        } else {
 | 
				
			||||||
          Guid = &gEfiGlobalVariableGuid;
 | 
					          Guid = &gEfiGlobalVariableGuid;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        Guid  = NULL;
 | 
					        Guid = NULL;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      // Get the Name of the variable to find
 | 
					      // Get the Name of the variable to find
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      Name = ShellCommandLineGetRawValue(Package, 1);
 | 
					      Name = ShellCommandLineGetRawValue (Package, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (ShellStatus == SHELL_SUCCESS) {
 | 
					      if (ShellStatus == SHELL_SUCCESS) {
 | 
				
			||||||
        if (ShellCommandLineGetFlag(Package, L"-s")) {
 | 
					        if (ShellCommandLineGetFlag (Package, L"-s")) {
 | 
				
			||||||
          Type = DmpStoreSave;
 | 
					          Type = DmpStoreSave;
 | 
				
			||||||
          File = ShellCommandLineGetValue(Package, L"-s");
 | 
					          File = ShellCommandLineGetValue (Package, L"-s");
 | 
				
			||||||
          if (File == NULL) {
 | 
					          if (File == NULL) {
 | 
				
			||||||
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-s");
 | 
					            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-s");
 | 
				
			||||||
            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0);
 | 
					            Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0);
 | 
				
			||||||
@@ -778,6 +845,7 @@ ShellCommandRunDmpStore (
 | 
				
			|||||||
                    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_DELETE_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
 | 
					                    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_DELETE_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
 | 
				
			||||||
                  }
 | 
					                  }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                FreePool (FileInfo);
 | 
					                FreePool (FileInfo);
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
            } else if (Status == EFI_NOT_FOUND) {
 | 
					            } else if (Status == EFI_NOT_FOUND) {
 | 
				
			||||||
@@ -803,16 +871,16 @@ ShellCommandRunDmpStore (
 | 
				
			|||||||
              ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					              ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else if (ShellCommandLineGetFlag(Package, L"-l")) {
 | 
					        } else if (ShellCommandLineGetFlag (Package, L"-l")) {
 | 
				
			||||||
          Type = DmpStoreLoad;
 | 
					          Type = DmpStoreLoad;
 | 
				
			||||||
          File = ShellCommandLineGetValue(Package, L"-l");
 | 
					          File = ShellCommandLineGetValue (Package, L"-l");
 | 
				
			||||||
          if (File == NULL) {
 | 
					          if (File == NULL) {
 | 
				
			||||||
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-l");
 | 
					            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-l");
 | 
				
			||||||
            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					            ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_READ, 0);
 | 
					            Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_READ, 0);
 | 
				
			||||||
            if (EFI_ERROR (Status)) {
 | 
					            if (EFI_ERROR (Status)) {
 | 
				
			||||||
              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
 | 
					              ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
 | 
				
			||||||
              ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					              ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
              FileInfo = ShellGetFileInfo (FileHandle);
 | 
					              FileInfo = ShellGetFileInfo (FileHandle);
 | 
				
			||||||
@@ -824,15 +892,16 @@ ShellCommandRunDmpStore (
 | 
				
			|||||||
                  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File);
 | 
					                  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File);
 | 
				
			||||||
                  ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					                  ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                FreePool (FileInfo);
 | 
					                FreePool (FileInfo);
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else if (ShellCommandLineGetFlag(Package, L"-d")) {
 | 
					        } else if (ShellCommandLineGetFlag (Package, L"-d")) {
 | 
				
			||||||
          Type = DmpStoreDelete;
 | 
					          Type = DmpStoreDelete;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (ShellCommandLineGetFlag (Package,L"-sfo")) {
 | 
					        if (ShellCommandLineGetFlag (Package, L"-sfo")) {
 | 
				
			||||||
          StandardFormatOutput = TRUE;
 | 
					          StandardFormatOutput = TRUE;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -843,6 +912,7 @@ ShellCommandRunDmpStore (
 | 
				
			|||||||
        } else if (Type == DmpStoreLoad) {
 | 
					        } else if (Type == DmpStoreLoad) {
 | 
				
			||||||
          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD), gShellDebug1HiiHandle, File);
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD), gShellDebug1HiiHandle, File);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ShellStatus = ProcessVariables (Name, Guid, Type, FileHandle, StandardFormatOutput);
 | 
					        ShellStatus = ProcessVariables (Name, Guid, Type, FileHandle, StandardFormatOutput);
 | 
				
			||||||
        if ((Type == DmpStoreLoad) || (Type == DmpStoreSave)) {
 | 
					        if ((Type == DmpStoreLoad) || (Type == DmpStoreSave)) {
 | 
				
			||||||
          ShellCloseFile (&FileHandle);
 | 
					          ShellCloseFile (&FileHandle);
 | 
				
			||||||
@@ -854,6 +924,6 @@ ShellCommandRunDmpStore (
 | 
				
			|||||||
  if (Package != NULL) {
 | 
					  if (Package != NULL) {
 | 
				
			||||||
    ShellCommandLineFreeVarList (Package);
 | 
					    ShellCommandLineFreeVarList (Package);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return ShellStatus;
 | 
					  return ShellStatus;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,16 +23,17 @@ ShellCommandRunEdit (
 | 
				
			|||||||
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
					  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EFI_STATUS          Status;
 | 
					  EFI_STATUS    Status;
 | 
				
			||||||
  CHAR16              *Buffer;
 | 
					  CHAR16        *Buffer;
 | 
				
			||||||
  CHAR16              *ProblemParam;
 | 
					  CHAR16        *ProblemParam;
 | 
				
			||||||
  SHELL_STATUS        ShellStatus;
 | 
					  SHELL_STATUS  ShellStatus;
 | 
				
			||||||
  LIST_ENTRY          *Package;
 | 
					  LIST_ENTRY    *Package;
 | 
				
			||||||
  CONST CHAR16        *Cwd;
 | 
					  CONST CHAR16  *Cwd;
 | 
				
			||||||
  CHAR16              *Nfs;
 | 
					  CHAR16        *Nfs;
 | 
				
			||||||
  CHAR16              *Spot;
 | 
					  CHAR16        *Spot;
 | 
				
			||||||
  CONST CHAR16        *TempParam;
 | 
					  CONST CHAR16  *TempParam;
 | 
				
			||||||
//  SHELL_FILE_HANDLE   TempHandle;
 | 
					
 | 
				
			||||||
 | 
					  //  SHELL_FILE_HANDLE   TempHandle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Buffer      = NULL;
 | 
					  Buffer      = NULL;
 | 
				
			||||||
  ShellStatus = SHELL_SUCCESS;
 | 
					  ShellStatus = SHELL_SUCCESS;
 | 
				
			||||||
@@ -41,45 +42,47 @@ ShellCommandRunEdit (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // initialize the shell lib (we must be in non-auto-init...)
 | 
					  // initialize the shell lib (we must be in non-auto-init...)
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellInitialize();
 | 
					  Status = ShellInitialize ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Status = CommandInit();
 | 
					  Status = CommandInit ();
 | 
				
			||||||
  ASSERT_EFI_ERROR(Status);
 | 
					  ASSERT_EFI_ERROR (Status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // parse the command line
 | 
					  // parse the command line
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);
 | 
					  Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);
 | 
				
			||||||
  if (EFI_ERROR(Status)) {
 | 
					  if (EFI_ERROR (Status)) {
 | 
				
			||||||
    if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
 | 
					    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"edit", ProblemParam);
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"edit", ProblemParam);
 | 
				
			||||||
      FreePool(ProblemParam);
 | 
					      FreePool (ProblemParam);
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ASSERT(FALSE);
 | 
					      ASSERT (FALSE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (ShellCommandLineGetCount(Package) > 2) {
 | 
					    if (ShellCommandLineGetCount (Package) > 2) {
 | 
				
			||||||
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"edit");
 | 
					      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"edit");
 | 
				
			||||||
      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
					      ShellStatus = SHELL_INVALID_PARAMETER;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      Cwd = gEfiShellProtocol->GetCurDir(NULL);
 | 
					      Cwd = gEfiShellProtocol->GetCurDir (NULL);
 | 
				
			||||||
      if (Cwd == NULL) {
 | 
					      if (Cwd == NULL) {
 | 
				
			||||||
        Cwd = ShellGetEnvironmentVariable(L"path");
 | 
					        Cwd = ShellGetEnvironmentVariable (L"path");
 | 
				
			||||||
        if (Cwd != NULL) {
 | 
					        if (Cwd != NULL) {
 | 
				
			||||||
          Nfs = StrnCatGrow(&Nfs, NULL, Cwd+3, 0);
 | 
					          Nfs = StrnCatGrow (&Nfs, NULL, Cwd+3, 0);
 | 
				
			||||||
          if (Nfs != NULL) {
 | 
					          if (Nfs != NULL) {
 | 
				
			||||||
            Spot = StrStr(Nfs, L";");
 | 
					            Spot = StrStr (Nfs, L";");
 | 
				
			||||||
            if (Spot != NULL) {
 | 
					            if (Spot != NULL) {
 | 
				
			||||||
              *Spot = CHAR_NULL;
 | 
					              *Spot = CHAR_NULL;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            Spot = StrStr(Nfs, L"\\");
 | 
					
 | 
				
			||||||
 | 
					            Spot = StrStr (Nfs, L"\\");
 | 
				
			||||||
            if (Spot != NULL) {
 | 
					            if (Spot != NULL) {
 | 
				
			||||||
              Spot[1] = CHAR_NULL;
 | 
					              Spot[1] = CHAR_NULL;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            gEfiShellProtocol->SetCurDir(NULL, Nfs);
 | 
					
 | 
				
			||||||
            FreePool(Nfs);
 | 
					            gEfiShellProtocol->SetCurDir (NULL, Nfs);
 | 
				
			||||||
 | 
					            FreePool (Nfs);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -89,23 +92,23 @@ ShellCommandRunEdit (
 | 
				
			|||||||
      if (EFI_ERROR (Status)) {
 | 
					      if (EFI_ERROR (Status)) {
 | 
				
			||||||
        gST->ConOut->ClearScreen (gST->ConOut);
 | 
					        gST->ConOut->ClearScreen (gST->ConOut);
 | 
				
			||||||
        gST->ConOut->EnableCursor (gST->ConOut, TRUE);
 | 
					        gST->ConOut->EnableCursor (gST->ConOut, TRUE);
 | 
				
			||||||
        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_EDIT_MAIN_INIT_FAILED), gShellDebug1HiiHandle);
 | 
					        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_EDIT_MAIN_INIT_FAILED), gShellDebug1HiiHandle);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        MainEditorBackup ();
 | 
					        MainEditorBackup ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        // if editor launched with file named
 | 
					        // if editor launched with file named
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        if (ShellCommandLineGetCount(Package) == 2) {
 | 
					        if (ShellCommandLineGetCount (Package) == 2) {
 | 
				
			||||||
          TempParam = ShellCommandLineGetRawValue(Package, 1);
 | 
					          TempParam = ShellCommandLineGetRawValue (Package, 1);
 | 
				
			||||||
          ASSERT(TempParam != NULL);
 | 
					          ASSERT (TempParam != NULL);
 | 
				
			||||||
          FileBufferSetFileName (TempParam);
 | 
					          FileBufferSetFileName (TempParam);
 | 
				
			||||||
//          if (EFI_ERROR(ShellFileExists(MainEditor.FileBuffer->FileName))) {
 | 
					          //          if (EFI_ERROR(ShellFileExists(MainEditor.FileBuffer->FileName))) {
 | 
				
			||||||
//            Status = ShellOpenFileByName(MainEditor.FileBuffer->FileName, &TempHandle, EFI_FILE_MODE_CREATE|EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE, 0);
 | 
					          //            Status = ShellOpenFileByName(MainEditor.FileBuffer->FileName, &TempHandle, EFI_FILE_MODE_CREATE|EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE, 0);
 | 
				
			||||||
//            if (!EFI_ERROR(Status)) {
 | 
					          //            if (!EFI_ERROR(Status)) {
 | 
				
			||||||
//              ShellCloseFile(&TempHandle);
 | 
					          //              ShellCloseFile(&TempHandle);
 | 
				
			||||||
//            }
 | 
					          //            }
 | 
				
			||||||
//          }
 | 
					          //          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Status = FileBufferRead (MainEditor.FileBuffer->FileName, FALSE);
 | 
					        Status = FileBufferRead (MainEditor.FileBuffer->FileName, FALSE);
 | 
				
			||||||
@@ -119,7 +122,7 @@ ShellCommandRunEdit (
 | 
				
			|||||||
          //
 | 
					          //
 | 
				
			||||||
          // back up the status string
 | 
					          // back up the status string
 | 
				
			||||||
          //
 | 
					          //
 | 
				
			||||||
          Buffer = CatSPrint (NULL, L"%s", StatusBarGetString());
 | 
					          Buffer = CatSPrint (NULL, L"%s", StatusBarGetString ());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        MainEditorCleanup ();
 | 
					        MainEditorCleanup ();
 | 
				
			||||||
@@ -129,19 +132,19 @@ ShellCommandRunEdit (
 | 
				
			|||||||
        //
 | 
					        //
 | 
				
			||||||
        if (Status == EFI_SUCCESS) {
 | 
					        if (Status == EFI_SUCCESS) {
 | 
				
			||||||
        } else if (Status == EFI_OUT_OF_RESOURCES) {
 | 
					        } else if (Status == EFI_OUT_OF_RESOURCES) {
 | 
				
			||||||
          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"edit");
 | 
					          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"edit");
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          if (Buffer != NULL) {
 | 
					          if (Buffer != NULL) {
 | 
				
			||||||
            if (StrCmp (Buffer, L"") != 0) {
 | 
					            if (StrCmp (Buffer, L"") != 0) {
 | 
				
			||||||
              //
 | 
					              //
 | 
				
			||||||
              // print out the status string
 | 
					              // print out the status string
 | 
				
			||||||
              //
 | 
					              //
 | 
				
			||||||
              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_EDIT_MAIN_BUFFER), gShellDebug1HiiHandle, Buffer);
 | 
					              ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_EDIT_MAIN_BUFFER), gShellDebug1HiiHandle, Buffer);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gShellDebug1HiiHandle);
 | 
					              ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gShellDebug1HiiHandle);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gShellDebug1HiiHandle);
 | 
					            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gShellDebug1HiiHandle);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -150,7 +153,9 @@ ShellCommandRunEdit (
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ShellCommandLineFreeVarList (Package);
 | 
					    ShellCommandLineFreeVarList (Package);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return ShellStatus;
 | 
					  return ShellStatus;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user