ShellPkg: Per UEFI Shell 2.2 SPEC to make Shell supports 'NoNesting'.

This patch makes Shell support -nonesting invocation option. This option
specifies that EFI_SHELL_PROTOCOL.Execute API nesting of a new Shell
instance is optional and dependent on the 'nonesting' Shell environment
variable.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Qiu Shumin <shumin.qiu@intel.com>
Reviewed-by: Jim Dailey <Jim_Dailey@Dell.com>
This commit is contained in:
Qiu Shumin
2016-03-08 10:26:29 +08:00
parent 7537258100
commit dcbdb8bfb0
3 changed files with 162 additions and 25 deletions

View File

@ -58,6 +58,10 @@
#include "ConsoleWrappers.h"
#include "FileHandleWrappers.h"
extern CONST CHAR16 mNoNestingEnvVarName[];
extern CONST CHAR16 mNoNestingTrue[];
extern CONST CHAR16 mNoNestingFalse[];
typedef struct {
LIST_ENTRY Link; ///< Standard linked list handler.
SHELL_FILE_HANDLE *SplitStdOut; ///< ConsoleOut for use in the split.
@ -73,7 +77,8 @@ typedef struct {
UINT32 NoMap:1; ///< Was "-nomap" found on command line.
UINT32 NoVersion:1; ///< Was "-noversion" 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 Reserved:7; ///< Extra bits
} SHELL_BITS;