summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiaqing Zhao <jiaqing.zhao@intel.com>2020-11-15 15:15:18 +0800
committerJiaqing Zhao <jiaqing.zhao@intel.com>2020-11-15 15:15:18 +0800
commit773f30af293fc174732891994bb8deafe015c75d (patch)
tree71a5b852aa114b6d538a3363aa0380f456ce2075
parent2b26c8112ffc78260baf9f9348ecdeed8944c4eb (diff)
downloadgnu-efi-773f30af293fc174732891994bb8deafe015c75d.tar.gz
Move EFI_SHELL_PARAMETERS_PROTOCOL related definitions to efishell.h
As EFI_SHELL_PARAMETERS_PROTOCOL is also defined in UEFI Shell Spec, put it together with EFI_SHELL_PROTOCOL. Signed-off-by: Jiaqing Zhao <jiaqing.zhao@intel.com>
-rw-r--r--inc/efilib.h1
-rw-r--r--inc/efishell.h13
-rw-r--r--inc/efishellparm.h63
-rw-r--r--lib/cmdline.c6
-rw-r--r--lib/data.c3
5 files changed, 18 insertions, 68 deletions
diff --git a/inc/efilib.h b/inc/efilib.h
index 0da15bb..1e0ae56 100644
--- a/inc/efilib.h
+++ b/inc/efilib.h
@@ -149,6 +149,7 @@ extern EFI_GUID gEfiDebugSupportProtocolGuid;
extern EFI_GUID SimpleTextInputExProtocol;
extern EFI_GUID ShellProtocolGuid;
+extern EFI_GUID ShellParametersProtocolGuid;
//
// EFI Variable strings
diff --git a/inc/efishell.h b/inc/efishell.h
index e1bd3fb..7561007 100644
--- a/inc/efishell.h
+++ b/inc/efishell.h
@@ -406,4 +406,17 @@ typedef struct _EFI_SHELL_PROTOCOL {
EFI_SHELL_GET_ENV_EX GetEnvEx;
} EFI_SHELL_PROTOCOL;
+#define EFI_SHELL_PARAMETERS_PROTOCOL_GUID \
+ { 0x752f3136, 0x4e16, 0x4fdc, { 0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca } }
+
+INTERFACE_DECL(_EFI_SHELL_PARAMETERS_PROTOCOL);
+
+typedef struct _EFI_SHELL_PARAMETERS_PROTOCOL {
+ CHAR16 **Argv;
+ UINTN Argc;
+ SHELL_FILE_HANDLE StdIn;
+ SHELL_FILE_HANDLE StdOut;
+ SHELL_FILE_HANDLE StdErr;
+} EFI_SHELL_PARAMETERS_PROTOCOL;
+
#endif
diff --git a/inc/efishellparm.h b/inc/efishellparm.h
deleted file mode 100644
index da120e5..0000000
--- a/inc/efishellparm.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/** @file
- EFI_SHELL_PARAMETERS_PROTOCOL as defined in the UEFI Shell 2.0 specification.
-
- Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-/*
- * This is based on ShellPkg/Include/Protocol/EfiShellParameters.h from EDK II.
- */
-
-#ifndef __EFI_SHELL_PARAMETERS_PROTOCOL__
-#define __EFI_SHELL_PARAMETERS_PROTOCOL__
-
-
-// EDK2's ShellBase.h
-typedef VOID *SHELL_FILE_HANDLE;
-
-#define EFI_SHELL_PARAMETERS_PROTOCOL_GUID \
- { \
- 0x752f3136, 0x4e16, 0x4fdc, { 0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca } \
- }
-
-typedef struct _EFI_SHELL_PARAMETERS_PROTOCOL {
- ///
- /// Points to an Argc-element array of points to NULL-terminated strings containing
- /// the command-line parameters. The first entry in the array is always the full file
- /// path of the executable. Any quotation marks that were used to preserve
- /// whitespace have been removed.
- ///
- CHAR16 **Argv;
-
- ///
- /// The number of elements in the Argv array.
- ///
- UINTN Argc;
-
- ///
- /// The file handle for the standard input for this executable. This may be different
- /// from the ConInHandle in EFI_SYSTEM_TABLE.
- ///
- SHELL_FILE_HANDLE StdIn;
-
- ///
- /// The file handle for the standard output for this executable. This may be different
- /// from the ConOutHandle in EFI_SYSTEM_TABLE.
- ///
- SHELL_FILE_HANDLE StdOut;
-
- ///
- /// The file handle for the standard error output for this executable. This may be
- /// different from the StdErrHandle in EFI_SYSTEM_TABLE.
- ///
- SHELL_FILE_HANDLE StdErr;
-} EFI_SHELL_PARAMETERS_PROTOCOL;
-
-#endif
diff --git a/lib/cmdline.c b/lib/cmdline.c
index f21c44c..9c214dd 100644
--- a/lib/cmdline.c
+++ b/lib/cmdline.c
@@ -1,8 +1,8 @@
#include "lib.h"
#include "efiprot.h"
+#include "efishell.h"
#include "efishellintf.h"
-#include "efishellparm.h"
#ifndef MAX_ARGV_CONTENTS_SIZE
# define MAX_CMDLINE_SIZE 1024
@@ -77,8 +77,6 @@ INTN GetShellArgcArgv(EFI_HANDLE ImageHandle, CHAR16 **Argv[])
// Code inspired from EDK2's
// ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.c (BSD)
EFI_STATUS Status;
- static const EFI_GUID EfiShellParametersProtocolGuid
- = EFI_SHELL_PARAMETERS_PROTOCOL_GUID;
static const EFI_GUID ShellInterfaceProtocolGuid
= SHELL_INTERFACE_PROTOCOL_GUID;
EFI_SHELL_PARAMETERS_PROTOCOL *EfiShellParametersProtocol = NULL;
@@ -86,7 +84,7 @@ INTN GetShellArgcArgv(EFI_HANDLE ImageHandle, CHAR16 **Argv[])
Status = uefi_call_wrapper(BS->OpenProtocol, 6,
ImageHandle,
- (EFI_GUID*)&EfiShellParametersProtocolGuid,
+ (EFI_GUID*)&ShellParametersProtocolGuid,
(VOID **)&EfiShellParametersProtocol,
ImageHandle,
NULL,
diff --git a/lib/data.c b/lib/data.c
index 0f6a5c6..8b810a1 100644
--- a/lib/data.c
+++ b/lib/data.c
@@ -211,4 +211,5 @@ EFI_GUID SimpleTextInputExProtocol = EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID;
//
// Shell protocol GUIDs
//
-EFI_GUID ShellProtocolGuid = EFI_SHELL_PROTOCOL_GUID;
+EFI_GUID ShellProtocolGuid = EFI_SHELL_PROTOCOL_GUID;
+EFI_GUID ShellParametersProtocolGuid = EFI_SHELL_PARAMETERS_PROTOCOL_GUID;