From: Chris Phillips Date: Mon, 18 Aug 2014 20:00:08 +0000 (+0000) Subject: ShellPkg: Fix EFI_SHELL_PROTOCOL to contain new members from UEFI Shell 2.1 spec X-Git-Tag: edk2-stable201903~11177 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=838b31a68cba781fb64ae4deb97fa69b2ed6d4b8 ShellPkg: Fix EFI_SHELL_PROTOCOL to contain new members from UEFI Shell 2.1 spec - 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 Reviewed-by: Jaben Carsey git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15818 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/ShellPkg/Application/Shell/Shell.h b/ShellPkg/Application/Shell/Shell.h index f78e559665..57518dfd29 100644 --- a/ShellPkg/Application/Shell/Shell.h +++ b/ShellPkg/Application/Shell/Shell.h @@ -1,6 +1,7 @@ /** @file function definitions for internal to shell functions. + (C) Copyright 2014, Hewlett-Packard Development Company, L.P. Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -96,7 +97,7 @@ typedef struct { typedef struct { EFI_SHELL_PARAMETERS_PROTOCOL *NewShellParametersProtocol; - EFI_SHELL_PROTOCOL21 *NewEfiShellProtocol; + EFI_SHELL_PROTOCOL *NewEfiShellProtocol; BOOLEAN PageBreakEnabled; BOOLEAN RootShellInstance; SHELL_INIT_SETTINGS ShellInitSettings; diff --git a/ShellPkg/Application/Shell/ShellProtocol.c b/ShellPkg/Application/Shell/ShellProtocol.c index 24fa485137..fb94a5b45e 100644 --- a/ShellPkg/Application/Shell/ShellProtocol.c +++ b/ShellPkg/Application/Shell/ShellProtocol.c @@ -2,6 +2,7 @@ Member functions of EFI_SHELL_PROTOCOL and functions for creation, manipulation, and initialization of EFI_SHELL_PROTOCOL. + (C) Copyright 2014, Hewlett-Packard Development Company, L.P. Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -3379,7 +3380,7 @@ EfiShellSetAlias( // Pure FILE_HANDLE operations are passed to FileHandleLib // these functions are indicated by the * -EFI_SHELL_PROTOCOL21 mShellProtocol = { +EFI_SHELL_PROTOCOL mShellProtocol = { EfiShellExecute, EfiShellGetEnv, EfiShellSetEnv, @@ -3420,8 +3421,8 @@ EFI_SHELL_PROTOCOL21 mShellProtocol = { EfiShellOpenRoot, EfiShellOpenRootByHandle, NULL, - 2, // SHELL_MAJOR_VERSION, - 1, // SHELL_MINOR_VERSION, + SHELL_MAJOR_VERSION, + SHELL_MINOR_VERSION, // New for UEFI Shell 2.1 EfiShellRegisterGuidName, @@ -3447,7 +3448,7 @@ EFI_SHELL_PROTOCOL21 mShellProtocol = { EFI_STATUS EFIAPI CreatePopulateInstallShellProtocol ( - IN OUT EFI_SHELL_PROTOCOL21 **NewShell + IN OUT EFI_SHELL_PROTOCOL **NewShell ) { EFI_STATUS Status; @@ -3574,7 +3575,7 @@ CreatePopulateInstallShellProtocol ( EFI_STATUS EFIAPI CleanUpShellProtocol ( - IN OUT EFI_SHELL_PROTOCOL21 *NewShell + IN OUT EFI_SHELL_PROTOCOL *NewShell ) { EFI_STATUS Status; diff --git a/ShellPkg/Application/Shell/ShellProtocol.h b/ShellPkg/Application/Shell/ShellProtocol.h index e1369617f2..16e3718e61 100644 --- a/ShellPkg/Application/Shell/ShellProtocol.h +++ b/ShellPkg/Application/Shell/ShellProtocol.h @@ -2,6 +2,7 @@ Member functions of EFI_SHELL_PROTOCOL and functions for creation, manipulation, and initialization of EFI_SHELL_PROTOCOL. + (C) Copyright 2014, Hewlett-Packard Development Company, L.P. Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -44,7 +45,7 @@ typedef struct { EFI_STATUS EFIAPI CreatePopulateInstallShellProtocol ( - IN OUT EFI_SHELL_PROTOCOL21 **NewShell + IN OUT EFI_SHELL_PROTOCOL **NewShell ); /** @@ -60,7 +61,7 @@ CreatePopulateInstallShellProtocol ( EFI_STATUS EFIAPI CleanUpShellProtocol ( - IN OUT EFI_SHELL_PROTOCOL21 *NewShell + IN OUT EFI_SHELL_PROTOCOL *NewShell ); /** diff --git a/ShellPkg/Include/Protocol/EfiShell.h b/ShellPkg/Include/Protocol/EfiShell.h index ca21899df7..2ef6857adb 100644 --- a/ShellPkg/Include/Protocol/EfiShell.h +++ b/ShellPkg/Include/Protocol/EfiShell.h @@ -1,6 +1,7 @@ /** @file EFI Shell protocol as defined in the UEFI Shell 2.0 specification including errata. + (C) Copyright 2014, Hewlett-Packard Development Company, L.P. Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -1051,55 +1052,31 @@ EFI_STATUS IN VOID *Buffer ); -typedef struct _EFI_SHELL_PROTOCOL { - EFI_SHELL_EXECUTE Execute; - EFI_SHELL_GET_ENV GetEnv; - EFI_SHELL_SET_ENV SetEnv; - EFI_SHELL_GET_ALIAS GetAlias; - EFI_SHELL_SET_ALIAS SetAlias; - EFI_SHELL_GET_HELP_TEXT GetHelpText; - EFI_SHELL_GET_DEVICE_PATH_FROM_MAP GetDevicePathFromMap; - EFI_SHELL_GET_MAP_FROM_DEVICE_PATH GetMapFromDevicePath; - EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH GetDevicePathFromFilePath; - EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH GetFilePathFromDevicePath; - EFI_SHELL_SET_MAP SetMap; - EFI_SHELL_GET_CUR_DIR GetCurDir; - EFI_SHELL_SET_CUR_DIR SetCurDir; - EFI_SHELL_OPEN_FILE_LIST OpenFileList; - EFI_SHELL_FREE_FILE_LIST FreeFileList; - EFI_SHELL_REMOVE_DUP_IN_FILE_LIST RemoveDupInFileList; - EFI_SHELL_BATCH_IS_ACTIVE BatchIsActive; - EFI_SHELL_IS_ROOT_SHELL IsRootShell; - EFI_SHELL_ENABLE_PAGE_BREAK EnablePageBreak; - EFI_SHELL_DISABLE_PAGE_BREAK DisablePageBreak; - EFI_SHELL_GET_PAGE_BREAK GetPageBreak; - EFI_SHELL_GET_DEVICE_NAME GetDeviceName; - EFI_SHELL_GET_FILE_INFO GetFileInfo; - EFI_SHELL_SET_FILE_INFO SetFileInfo; - EFI_SHELL_OPEN_FILE_BY_NAME OpenFileByName; - EFI_SHELL_CLOSE_FILE CloseFile; - EFI_SHELL_CREATE_FILE CreateFile; - EFI_SHELL_READ_FILE ReadFile; - EFI_SHELL_WRITE_FILE WriteFile; - EFI_SHELL_DELETE_FILE DeleteFile; - EFI_SHELL_DELETE_FILE_BY_NAME DeleteFileByName; - EFI_SHELL_GET_FILE_POSITION GetFilePosition; - EFI_SHELL_SET_FILE_POSITION SetFilePosition; - EFI_SHELL_FLUSH_FILE FlushFile; - EFI_SHELL_FIND_FILES FindFiles; - EFI_SHELL_FIND_FILES_IN_DIR FindFilesInDir; - EFI_SHELL_GET_FILE_SIZE GetFileSize; - EFI_SHELL_OPEN_ROOT OpenRoot; - EFI_SHELL_OPEN_ROOT_BY_HANDLE OpenRootByHandle; - EFI_EVENT ExecutionBreak; - UINT32 MajorVersion; - UINT32 MinorVersion; -} EFI_SHELL_PROTOCOL; - // -// The new structure with extra functions for UEFI Shell Specification 2.1 +// EFI_SHELL_PROTOCOL has been updated since UEFI Shell Spec 2.0 +// Usage of this protocol will require version checking before attempting +// to use any new members. There is no need to check the version for +// members that existed in UEFI Shell Spec 2.0. +// +// Update below for any future UEFI Shell spec changes to this protocol. // -typedef struct _EFI_SHELL_PROTOCOL21 { +// Check EFI_SHELL_PROTOCOL MajorVersion and MinorVersion: +// if ((2 == gEfiShellProtocol->MajorVersion) && +// (0 == gEfiShellProtocol->MinorVersion)) { +// // +// // Cannot call: +// // RegisterGuidName - UEFI Shell 2.1 +// // GetGuidName - UEFI Shell 2.1 +// // GetGuidFromName - UEFI Shell 2.1 +// // GetEnvEx - UEFI Shell 2.1 +// // +// } else { +// // +// // Can use all members +// // +// } +// +typedef struct _EFI_SHELL_PROTOCOL { EFI_SHELL_EXECUTE Execute; EFI_SHELL_GET_ENV GetEnv; EFI_SHELL_SET_ENV SetEnv; @@ -1143,11 +1120,11 @@ typedef struct _EFI_SHELL_PROTOCOL21 { UINT32 MajorVersion; UINT32 MinorVersion; // Added for Shell 2.1 - EFI_SHELL_REGISTER_GUID_NAME RegisterGuidName; - EFI_SHELL_GET_GUID_NAME GetGuidName; - EFI_SHELL_GET_GUID_FROM_NAME GetGuidFromName; - EFI_SHELL_GET_ENV_EX GetEnvEx; -} EFI_SHELL_PROTOCOL21; + EFI_SHELL_REGISTER_GUID_NAME RegisterGuidName; + EFI_SHELL_GET_GUID_NAME GetGuidName; + EFI_SHELL_GET_GUID_FROM_NAME GetGuidFromName; + EFI_SHELL_GET_ENV_EX GetEnvEx; +} EFI_SHELL_PROTOCOL; extern EFI_GUID gEfiShellProtocolGuid;