|
|
/*++
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;
|