240 lines
4.6 KiB
C
240 lines
4.6 KiB
C
|
|
/*++
|
|
|
|
Copyright (c) 1998 Intel Corporation
|
|
|
|
Module Name:
|
|
|
|
shell.h
|
|
|
|
Abstract:
|
|
|
|
Defines for shell applications
|
|
|
|
|
|
|
|
Revision History
|
|
|
|
--*/
|
|
|
|
/*
|
|
* This module is included by shell applications
|
|
*/
|
|
|
|
|
|
#include "efi.h"
|
|
#include "efilib.h"
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
#define SHELL_FILE_ARG_SIGNATURE EFI_SIGNATURE_32('g','r','a','f')
|
|
typedef struct {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
EFI_STATUS Status;
|
|
|
|
EFI_FILE_HANDLE Parent;
|
|
UINT64 OpenMode;
|
|
CHAR16 *ParentName;
|
|
EFI_DEVICE_PATH *ParentDevicePath;
|
|
|
|
CHAR16 *FullName;
|
|
CHAR16 *FileName;
|
|
|
|
EFI_FILE_HANDLE Handle;
|
|
EFI_FILE_INFO *Info;
|
|
} SHELL_FILE_ARG;
|
|
|
|
|
|
EFI_STATUS
|
|
ShellFileMetaArg (
|
|
IN CHAR16 *Arg,
|
|
IN OUT LIST_ENTRY *ListHead
|
|
);
|
|
|
|
EFI_STATUS
|
|
ShellFreeFileList (
|
|
IN OUT LIST_ENTRY *ListHead
|
|
);
|
|
|
|
|
|
/*
|
|
* Shell application library functions
|
|
*/
|
|
|
|
EFI_STATUS
|
|
InitializeShellApplication (
|
|
IN EFI_HANDLE ImageHandle,
|
|
IN EFI_SYSTEM_TABLE *SystemTable
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *SHELLENV_INTERNAL_COMMAND) (
|
|
IN EFI_HANDLE ImageHandle,
|
|
IN EFI_SYSTEM_TABLE *SystemTable
|
|
);
|
|
|
|
VOID
|
|
InstallInternalShellCommand (
|
|
IN EFI_HANDLE ImageHandle,
|
|
IN EFI_SYSTEM_TABLE *SystemTable,
|
|
IN SHELLENV_INTERNAL_COMMAND Dispatch,
|
|
IN CHAR16 *Cmd,
|
|
IN CHAR16 *CmdFormat,
|
|
IN CHAR16 *CmdHelpLine,
|
|
IN VOID *CmdVerboseHelp
|
|
);
|
|
|
|
/*
|
|
* Publics in shell.lib
|
|
*/
|
|
|
|
extern EFI_GUID ShellInterfaceProtocol;
|
|
extern EFI_GUID ShellEnvProtocol;
|
|
|
|
|
|
/*
|
|
* GetEnvironmentVariable - returns a shell environment variable
|
|
*/
|
|
|
|
CHAR16 *
|
|
GetEnvironmentVariable (
|
|
IN CHAR16 *Name
|
|
);
|
|
|
|
|
|
/*
|
|
* GetProtocolId - returns the short ID strings for a protocol guid
|
|
*/
|
|
|
|
CHAR16 *
|
|
GetProtocolId (
|
|
IN EFI_GUID *Protocol
|
|
);
|
|
|
|
|
|
/*
|
|
* AddProtoclId - records a new ID for a protocol guid such that anyone
|
|
* performing a GetProtocolId can find our id
|
|
*/
|
|
|
|
VOID
|
|
AddProtocolId (
|
|
IN EFI_GUID *Protocol,
|
|
IN CHAR16 *ProtocolId
|
|
);
|
|
|
|
|
|
/*
|
|
* ShellExecute - causes the shell to parse & execute the command line
|
|
*/
|
|
|
|
EFI_STATUS
|
|
ShellExecute (
|
|
IN EFI_HANDLE ParentImageHandle,
|
|
IN CHAR16 *CommandLine,
|
|
IN BOOLEAN Output
|
|
);
|
|
|
|
|
|
|
|
/*
|
|
* Misc
|
|
*/
|
|
|
|
CHAR16 *
|
|
MemoryTypeStr (
|
|
IN EFI_MEMORY_TYPE Type
|
|
);
|
|
|
|
|
|
/*
|
|
* IO
|
|
*/
|
|
|
|
EFI_FILE_HANDLE
|
|
ShellOpenFilePath (
|
|
IN EFI_DEVICE_PATH *FilePath,
|
|
IN UINT64 FileMode
|
|
);
|
|
|
|
|
|
/*
|
|
* ShellCurDir - returns the current directory on the current mapped device
|
|
* (note the result is allocated from pool and the caller must
|
|
* free it)
|
|
*/
|
|
|
|
CHAR16 *
|
|
ShellCurDir (
|
|
IN CHAR16 *DeviceName OPTIONAL
|
|
);
|
|
|
|
/*
|
|
* ShellGetEnv - returns the current mapping for the Env Name
|
|
*/
|
|
CHAR16 *
|
|
ShellGetEnv (
|
|
IN CHAR16 *Name
|
|
);
|
|
|
|
CHAR16 *
|
|
ShellGetMap (
|
|
IN CHAR16 *Name
|
|
);
|
|
|
|
/*
|
|
* **************************************
|
|
* Shell Interface prototypes
|
|
*/
|
|
|
|
|
|
/*
|
|
* Shell Interface - additional information (over image_info) provided
|
|
* to an application started by the shell.
|
|
*
|
|
* ConIo - provides a file sytle interface to the console. Note that the
|
|
* ConOut & ConIn interfaces in the system table will work as well, and both
|
|
* all will be redirected to a file if needed on a command line
|
|
*
|
|
* The shell interface's and data (including ConIo) are only valid during
|
|
* the applications Entry Point. Once the application returns from it's
|
|
* entry point the data is freed by the invoking shell.
|
|
*/
|
|
|
|
#define SHELL_INTERFACE_PROTOCOL \
|
|
{ 0x47c7b223, 0xc42a, 0x11d2, 0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
|
|
|
|
|
|
typedef struct _EFI_SHELL_INTERFACE {
|
|
/* Handle back to original image handle & image info */
|
|
EFI_HANDLE ImageHandle;
|
|
EFI_LOADED_IMAGE *Info;
|
|
|
|
/* Parsed arg list */
|
|
CHAR16 **Argv;
|
|
UINT32 Argc;
|
|
|
|
/* Storage for file redirection args after parsing */
|
|
CHAR16 **RedirArgv;
|
|
UINT32 RedirArgc;
|
|
|
|
/* A file style handle for console io */
|
|
EFI_FILE_HANDLE StdIn;
|
|
EFI_FILE_HANDLE StdOut;
|
|
EFI_FILE_HANDLE StdErr;
|
|
|
|
} EFI_SHELL_INTERFACE;
|
|
|
|
|
|
/*
|
|
* Shell library globals
|
|
*/
|
|
|
|
extern EFI_SHELL_INTERFACE *SI;
|
|
extern EFI_GUID ShellInterfaceProtocol;
|
|
extern EFI_GUID ShellEnvProtocol;
|