Home | History | Annotate | Download | only in Ebl
      1 /** @file
      2   Include file for basic command line parser for EBL (Embedded Boot Loader)
      3 
      4   Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
      5   Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
      6   (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
      7 
      8   This program and the accompanying materials
      9   are licensed and made available under the terms and conditions of the BSD License
     10   which accompanies this distribution.  The full text of the license may be found at
     11   http://opensource.org/licenses/bsd-license.php
     12 
     13   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     14   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     15 
     16 **/
     17 
     18 #ifndef __EBL_H__
     19 #define __EBL_H__
     20 
     21 #include <PiDxe.h>
     22 #include <Protocol/BlockIo.h>
     23 #include <Protocol/SimpleFileSystem.h>
     24 #include <Protocol/FirmwareVolume2.h>
     25 #include <Protocol/LoadFile.h>
     26 #include <Protocol/FirmwareVolumeBlock.h>
     27 #include <Protocol/PxeBaseCode.h>
     28 #include <Protocol/LoadedImage.h>
     29 #include <Protocol/EblAddCommand.h>
     30 #include <Protocol/PciIo.h>
     31 #include <Protocol/DevicePath.h>
     32 
     33 #include <Guid/FileInfo.h>
     34 #include <Guid/DxeServices.h>
     35 #include <Guid/MemoryTypeInformation.h>
     36 #include <Guid/MemoryAllocationHob.h>
     37 #include <Library/BaseLib.h>
     38 #include <Library/MemoryAllocationLib.h>
     39 #include <Library/DevicePathLib.h>
     40 #include <Library/PrintLib.h>
     41 #include <Library/BaseMemoryLib.h>
     42 #include <Library/UefiLib.h>
     43 #include <Library/UefiBootServicesTableLib.h>
     44 #include <Library/UefiRuntimeServicesTableLib.h>
     45 #include <Library/DebugLib.h>
     46 #include <Library/EfiFileLib.h>
     47 #include <Library/HobLib.h>
     48 #include <Library/DebugLib.h>
     49 #include <Library/IoLib.h>
     50 #include <Library/PcdLib.h>
     51 #include <Library/EblCmdLib.h>
     52 #include <Library/DevicePathLib.h>
     53 #include <Library/UefiLib.h>
     54 #include <Library/EblNetworkLib.h>
     55 #include <Library/TimerLib.h>
     56 
     57 #include <IndustryStandard/Pci.h>
     58 
     59 //
     60 // Prompt for the command line
     61 //
     62 #define CMD_SEPARATOR             ';'
     63 #define EBL_MAX_COMMAND_COUNT     0x100
     64 #define MAX_CMD_HISTORY           16
     65 #define MAX_CMD_LINE              256
     66 #define MAX_ARGS                  32
     67 
     68 #define EBL_CR                    0x0a
     69 #define EBL_LF                    0x0d
     70 
     71 #define EFI_SET_TIMER_TO_SECOND   10000000
     72 
     73 
     74 
     75 EBL_COMMAND_TABLE *
     76 EblGetCommand (
     77   IN CHAR8                        *CommandName
     78   );
     79 
     80 
     81 EFI_STATUS
     82 EblPathToDevice (
     83   IN  CHAR8                       *Path,
     84   OUT EFI_HANDLE                  *DeviceHandle,
     85   OUT EFI_DEVICE_PATH_PROTOCOL    **PathDevicePath,
     86   OUT VOID                        **Buffer,
     87   OUT UINTN                       *BufferSize
     88   );
     89 
     90 BOOLEAN
     91 EFIAPI
     92 EblAnyKeyToContinueQtoQuit (
     93   IN  UINTN                       *CurrentRow,
     94   IN  BOOLEAN                     PrefixNewline
     95   );
     96 
     97 VOID
     98 EblUpdateDeviceLists (
     99   VOID
    100   );
    101 
    102 VOID
    103 EblInitializeCmdTable (
    104   VOID
    105   );
    106 
    107 VOID
    108 EblShutdownExternalCmdTable (
    109   VOID
    110   );
    111 
    112 VOID
    113 EblSetTextColor (
    114   UINTN                           Attribute
    115   );
    116 
    117 
    118 EFI_STATUS
    119 EFIAPI
    120 EblGetCharKey (
    121   IN OUT EFI_INPUT_KEY            *Key,
    122   IN     UINTN                    TimoutInSec,
    123   IN     EBL_GET_CHAR_CALL_BACK   CallBack   OPTIONAL
    124   );
    125 
    126 // BugBug: Move me to a library
    127 INTN
    128 EFIAPI
    129 AsciiStrniCmp (
    130   IN      CONST CHAR8             *FirstString,
    131   IN      CONST CHAR8             *SecondString,
    132   IN      UINTN                   Length
    133   );
    134 
    135 
    136 VOID
    137 EblInitializeDeviceCmd (
    138   VOID
    139   );
    140 
    141 VOID
    142 EblInitializemdHwDebugCmds (
    143   VOID
    144   );
    145 
    146 VOID
    147 EblInitializeDirCmd (
    148   VOID
    149   );
    150 
    151 VOID
    152 EblInitializeHobCmd (
    153   VOID
    154   );
    155 
    156 VOID
    157 EblInitializemdHwIoDebugCmds (
    158   VOID
    159   );
    160 
    161 VOID
    162 EblInitializeScriptCmd (
    163   VOID
    164   );
    165 
    166 VOID
    167 EblInitializeNetworkCmd (
    168   VOID
    169   );
    170 
    171 VOID
    172 EblInitializeVariableCmds (
    173   VOID
    174   );
    175 
    176 CHAR8 *
    177 ParseArguments (
    178   IN  CHAR8                       *CmdLine,
    179   OUT UINTN                       *Argc,
    180   OUT CHAR8                       **Argv
    181   );
    182 
    183 EFI_STATUS
    184 ProcessCmdLine (
    185   IN CHAR8                        *CmdLine,
    186   IN UINTN                        MaxCmdLineSize
    187   );
    188 
    189 EFI_STATUS
    190 OutputData (
    191   IN UINT8                        *Address,
    192   IN UINTN                        Length,
    193   IN UINTN                         Width,
    194   IN UINTN                        Offset
    195   );
    196 
    197 UINTN
    198 WidthFromCommandName (
    199   IN CHAR8                        *Argv,
    200   IN UINTN                        Default
    201   );
    202 
    203 
    204 extern UINTN                      gScreenColumns;
    205 extern UINTN                      gScreenRows;
    206 extern BOOLEAN                    gPageBreak;
    207 extern CHAR8                      *gMemMapType[];
    208 
    209 #endif
    210 
    211