]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Fix EFI_SHELL_PROTOCOL to contain new members from UEFI Shell 2.1 spec
authorChris Phillips <chrisp@hp.com>
Mon, 18 Aug 2014 20:00:08 +0000 (20:00 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 18 Aug 2014 20:00:08 +0000 (20:00 +0000)
- Removes EFI_SHELL_PROTOCOL21
- Adds RegisterGuidName, GetGuidName, GetGuidFromName, and GetEnvEx to EFI_SHELL_PROTOCOL

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chris Phillips <chrisp@hp.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15818 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Application/Shell/Shell.h
ShellPkg/Application/Shell/ShellProtocol.c
ShellPkg/Application/Shell/ShellProtocol.h
ShellPkg/Include/Protocol/EfiShell.h

index f78e55966586e4eda1db48f5ec0cd4758fd95a3c..57518dfd29a81565d5ba86223aa779af0beaaeac 100644 (file)
@@ -1,6 +1,7 @@
 /** @file\r
   function definitions for internal to shell functions.\r
 \r
+  (C) Copyright 2014, Hewlett-Packard Development Company, L.P.\r
   Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -96,7 +97,7 @@ typedef struct {
 \r
 typedef struct {\r
   EFI_SHELL_PARAMETERS_PROTOCOL *NewShellParametersProtocol;\r
-  EFI_SHELL_PROTOCOL21          *NewEfiShellProtocol;\r
+  EFI_SHELL_PROTOCOL            *NewEfiShellProtocol;\r
   BOOLEAN                       PageBreakEnabled;\r
   BOOLEAN                       RootShellInstance;\r
   SHELL_INIT_SETTINGS           ShellInitSettings;\r
index 24fa485137dc6f1d39e5364171ed38940553e5eb..fb94a5b45e7e0b75920f08b28e2c92d1b0343c2e 100644 (file)
@@ -2,6 +2,7 @@
   Member functions of EFI_SHELL_PROTOCOL and functions for creation,\r
   manipulation, and initialization of EFI_SHELL_PROTOCOL.\r
 \r
+  (C) Copyright 2014, Hewlett-Packard Development Company, L.P.\r
   Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -3379,7 +3380,7 @@ EfiShellSetAlias(
 \r
 // Pure FILE_HANDLE operations are passed to FileHandleLib\r
 // these functions are indicated by the *\r
-EFI_SHELL_PROTOCOL21         mShellProtocol = {\r
+EFI_SHELL_PROTOCOL         mShellProtocol = {\r
   EfiShellExecute,\r
   EfiShellGetEnv,\r
   EfiShellSetEnv,\r
@@ -3420,8 +3421,8 @@ EFI_SHELL_PROTOCOL21         mShellProtocol = {
   EfiShellOpenRoot,\r
   EfiShellOpenRootByHandle,\r
   NULL,\r
-  2, // SHELL_MAJOR_VERSION,\r
-  1, // SHELL_MINOR_VERSION,\r
+  SHELL_MAJOR_VERSION,\r
+  SHELL_MINOR_VERSION,\r
 \r
   // New for UEFI Shell 2.1\r
   EfiShellRegisterGuidName,\r
@@ -3447,7 +3448,7 @@ EFI_SHELL_PROTOCOL21         mShellProtocol = {
 EFI_STATUS\r
 EFIAPI\r
 CreatePopulateInstallShellProtocol (\r
-  IN OUT EFI_SHELL_PROTOCOL21  **NewShell\r
+  IN OUT EFI_SHELL_PROTOCOL  **NewShell\r
   )\r
 {\r
   EFI_STATUS                  Status;\r
@@ -3574,7 +3575,7 @@ CreatePopulateInstallShellProtocol (
 EFI_STATUS\r
 EFIAPI\r
 CleanUpShellProtocol (\r
-  IN OUT EFI_SHELL_PROTOCOL21  *NewShell\r
+  IN OUT EFI_SHELL_PROTOCOL  *NewShell\r
   )\r
 {\r
   EFI_STATUS                        Status;\r
index e1369617f2b9d52f1c1b5e78dd7678d58b7dceb7..16e3718e61f448b060c7e43efcb1a827a33b864b 100644 (file)
@@ -2,6 +2,7 @@
   Member functions of EFI_SHELL_PROTOCOL and functions for creation,\r
   manipulation, and initialization of EFI_SHELL_PROTOCOL.\r
 \r
+  (C) Copyright 2014, Hewlett-Packard Development Company, L.P.\r
   Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -44,7 +45,7 @@ typedef struct {
 EFI_STATUS\r
 EFIAPI\r
 CreatePopulateInstallShellProtocol (\r
-  IN OUT EFI_SHELL_PROTOCOL21  **NewShell\r
+  IN OUT EFI_SHELL_PROTOCOL  **NewShell\r
   );\r
 \r
 /**\r
@@ -60,7 +61,7 @@ CreatePopulateInstallShellProtocol (
 EFI_STATUS\r
 EFIAPI\r
 CleanUpShellProtocol (\r
-  IN OUT EFI_SHELL_PROTOCOL21  *NewShell\r
+  IN OUT EFI_SHELL_PROTOCOL  *NewShell\r
   );\r
 \r
 /**\r
index ca21899df74ff80edca72e6e02f74188f46b762d..2ef6857adb84d4396cee0930db51121b105fdf0b 100644 (file)
@@ -1,6 +1,7 @@
 /** @file\r
   EFI Shell protocol as defined in the UEFI Shell 2.0 specification including errata.\r
 \r
+  (C) Copyright 2014, Hewlett-Packard Development Company, L.P.\r
   Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -1051,55 +1052,31 @@ EFI_STATUS
   IN VOID                       *Buffer\r
   );\r
 \r
-typedef struct _EFI_SHELL_PROTOCOL {\r
-  EFI_SHELL_EXECUTE                         Execute;\r
-  EFI_SHELL_GET_ENV                         GetEnv;\r
-  EFI_SHELL_SET_ENV                         SetEnv;\r
-  EFI_SHELL_GET_ALIAS                       GetAlias;\r
-  EFI_SHELL_SET_ALIAS                       SetAlias;\r
-  EFI_SHELL_GET_HELP_TEXT                   GetHelpText;\r
-  EFI_SHELL_GET_DEVICE_PATH_FROM_MAP        GetDevicePathFromMap;\r
-  EFI_SHELL_GET_MAP_FROM_DEVICE_PATH        GetMapFromDevicePath;\r
-  EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH  GetDevicePathFromFilePath;\r
-  EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH  GetFilePathFromDevicePath;\r
-  EFI_SHELL_SET_MAP                         SetMap;\r
-  EFI_SHELL_GET_CUR_DIR                     GetCurDir;\r
-  EFI_SHELL_SET_CUR_DIR                     SetCurDir;\r
-  EFI_SHELL_OPEN_FILE_LIST                  OpenFileList;\r
-  EFI_SHELL_FREE_FILE_LIST                  FreeFileList;\r
-  EFI_SHELL_REMOVE_DUP_IN_FILE_LIST         RemoveDupInFileList;\r
-  EFI_SHELL_BATCH_IS_ACTIVE                 BatchIsActive;\r
-  EFI_SHELL_IS_ROOT_SHELL                   IsRootShell;\r
-  EFI_SHELL_ENABLE_PAGE_BREAK               EnablePageBreak;\r
-  EFI_SHELL_DISABLE_PAGE_BREAK              DisablePageBreak;\r
-  EFI_SHELL_GET_PAGE_BREAK                  GetPageBreak;\r
-  EFI_SHELL_GET_DEVICE_NAME                 GetDeviceName;\r
-  EFI_SHELL_GET_FILE_INFO                   GetFileInfo;\r
-  EFI_SHELL_SET_FILE_INFO                   SetFileInfo;\r
-  EFI_SHELL_OPEN_FILE_BY_NAME               OpenFileByName;\r
-  EFI_SHELL_CLOSE_FILE                      CloseFile;\r
-  EFI_SHELL_CREATE_FILE                     CreateFile;\r
-  EFI_SHELL_READ_FILE                       ReadFile;\r
-  EFI_SHELL_WRITE_FILE                      WriteFile;\r
-  EFI_SHELL_DELETE_FILE                     DeleteFile;\r
-  EFI_SHELL_DELETE_FILE_BY_NAME             DeleteFileByName;\r
-  EFI_SHELL_GET_FILE_POSITION               GetFilePosition;\r
-  EFI_SHELL_SET_FILE_POSITION               SetFilePosition;\r
-  EFI_SHELL_FLUSH_FILE                      FlushFile;\r
-  EFI_SHELL_FIND_FILES                      FindFiles;\r
-  EFI_SHELL_FIND_FILES_IN_DIR               FindFilesInDir;\r
-  EFI_SHELL_GET_FILE_SIZE                   GetFileSize;\r
-  EFI_SHELL_OPEN_ROOT                       OpenRoot;\r
-  EFI_SHELL_OPEN_ROOT_BY_HANDLE             OpenRootByHandle;\r
-  EFI_EVENT                                 ExecutionBreak;\r
-  UINT32                                    MajorVersion;\r
-  UINT32                                    MinorVersion;\r
-} EFI_SHELL_PROTOCOL;\r
-\r
 //\r
-// The new structure with extra functions for UEFI Shell Specification 2.1\r
+// EFI_SHELL_PROTOCOL has been updated since UEFI Shell Spec 2.0\r
+// Usage of this protocol will require version checking before attempting\r
+// to use any new members.  There is no need to check the version for\r
+// members that existed in UEFI Shell Spec 2.0.\r
+//\r
+// Update below for any future UEFI Shell spec changes to this protocol.\r
 //\r
-typedef struct _EFI_SHELL_PROTOCOL21 {\r
+// Check EFI_SHELL_PROTOCOL MajorVersion and MinorVersion:\r
+// if ((2 == gEfiShellProtocol->MajorVersion) &&\r
+//     (0 == gEfiShellProtocol->MinorVersion)) {\r
+//   //\r
+//   // Cannot call:\r
+//   // RegisterGuidName - UEFI Shell 2.1\r
+//   // GetGuidName      - UEFI Shell 2.1\r
+//   // GetGuidFromName  - UEFI Shell 2.1\r
+//   // GetEnvEx         - UEFI Shell 2.1\r
+//   //\r
+// } else {\r
+//   //\r
+//   // Can use all members\r
+//   //\r
+// }\r
+//\r
+typedef struct _EFI_SHELL_PROTOCOL {\r
   EFI_SHELL_EXECUTE                         Execute;\r
   EFI_SHELL_GET_ENV                         GetEnv;\r
   EFI_SHELL_SET_ENV                         SetEnv;\r
@@ -1143,11 +1120,11 @@ typedef struct _EFI_SHELL_PROTOCOL21 {
   UINT32                                    MajorVersion;\r
   UINT32                                    MinorVersion;\r
   // Added for Shell 2.1\r
-  EFI_SHELL_REGISTER_GUID_NAME             RegisterGuidName;\r
-  EFI_SHELL_GET_GUID_NAME                  GetGuidName;\r
-  EFI_SHELL_GET_GUID_FROM_NAME             GetGuidFromName;\r
-  EFI_SHELL_GET_ENV_EX                     GetEnvEx;\r
-} EFI_SHELL_PROTOCOL21;\r
+  EFI_SHELL_REGISTER_GUID_NAME              RegisterGuidName;\r
+  EFI_SHELL_GET_GUID_NAME                   GetGuidName;\r
+  EFI_SHELL_GET_GUID_FROM_NAME              GetGuidFromName;\r
+  EFI_SHELL_GET_ENV_EX                      GetEnvEx;\r
+} EFI_SHELL_PROTOCOL;\r
 \r
 extern EFI_GUID gEfiShellProtocolGuid;\r
 \r