Home | History | Annotate | Download | only in UefiShellLevel1CommandsLib
      1 /** @file
      2   Main file for NULL named library for level 1 shell command functions.
      3 
      4   Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
      5   This program and the accompanying materials
      6   are licensed and made available under the terms and conditions of the BSD License
      7   which accompanies this distribution.  The full text of the license may be found at
      8   http://opensource.org/licenses/bsd-license.php
      9 
     10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #ifndef _UEFI_SHELL_LEVEL1_COMMANDS_LIB_H_
     16 #define _UEFI_SHELL_LEVEL1_COMMANDS_LIB_H_
     17 
     18 #include <Uefi.h>
     19 
     20 #include <Guid/ShellLibHiiGuid.h>
     21 
     22 #include <Protocol/Shell.h>
     23 #include <Protocol/ShellParameters.h>
     24 #include <Protocol/DevicePath.h>
     25 #include <Protocol/LoadedImage.h>
     26 #include <Protocol/UnicodeCollation.h>
     27 
     28 #include <Library/BaseLib.h>
     29 #include <Library/BaseMemoryLib.h>
     30 #include <Library/DebugLib.h>
     31 #include <Library/MemoryAllocationLib.h>
     32 #include <Library/PcdLib.h>
     33 #include <Library/ShellCommandLib.h>
     34 #include <Library/ShellLib.h>
     35 #include <Library/SortLib.h>
     36 #include <Library/UefiLib.h>
     37 #include <Library/UefiRuntimeServicesTableLib.h>
     38 #include <Library/UefiBootServicesTableLib.h>
     39 #include <Library/HiiLib.h>
     40 #include <Library/FileHandleLib.h>
     41 
     42 extern        EFI_HANDLE                        gShellLevel1HiiHandle;
     43 
     44 /**
     45   Function for 'stall' command.
     46 
     47   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
     48   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
     49 **/
     50 SHELL_STATUS
     51 EFIAPI
     52 ShellCommandRunStall (
     53   IN EFI_HANDLE        ImageHandle,
     54   IN EFI_SYSTEM_TABLE  *SystemTable
     55   );
     56 
     57 /**
     58   Function for 'exit' command.
     59 
     60   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
     61   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
     62 **/
     63 SHELL_STATUS
     64 EFIAPI
     65 ShellCommandRunExit (
     66   IN EFI_HANDLE        ImageHandle,
     67   IN EFI_SYSTEM_TABLE  *SystemTable
     68   );
     69 
     70 /**
     71   Function for 'endif' command.
     72 
     73   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
     74   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
     75 **/
     76 SHELL_STATUS
     77 EFIAPI
     78 ShellCommandRunEndIf (
     79   IN EFI_HANDLE        ImageHandle,
     80   IN EFI_SYSTEM_TABLE  *SystemTable
     81   );
     82 
     83 /**
     84   Function for 'for' command.
     85 
     86   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
     87   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
     88 **/
     89 SHELL_STATUS
     90 EFIAPI
     91 ShellCommandRunFor (
     92   IN EFI_HANDLE        ImageHandle,
     93   IN EFI_SYSTEM_TABLE  *SystemTable
     94   );
     95 
     96 /**
     97   Function for 'endfor' command.
     98 
     99   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
    100   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
    101 **/
    102 SHELL_STATUS
    103 EFIAPI
    104 ShellCommandRunEndFor (
    105   IN EFI_HANDLE        ImageHandle,
    106   IN EFI_SYSTEM_TABLE  *SystemTable
    107   );
    108 
    109 /**
    110   Function for 'if' command.
    111 
    112   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
    113   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
    114 **/
    115 SHELL_STATUS
    116 EFIAPI
    117 ShellCommandRunIf (
    118   IN EFI_HANDLE        ImageHandle,
    119   IN EFI_SYSTEM_TABLE  *SystemTable
    120   );
    121 
    122 /**
    123   Function for 'goto' command.
    124 
    125   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
    126   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
    127 **/
    128 SHELL_STATUS
    129 EFIAPI
    130 ShellCommandRunGoto (
    131   IN EFI_HANDLE        ImageHandle,
    132   IN EFI_SYSTEM_TABLE  *SystemTable
    133   );
    134 
    135 /**
    136   Function for 'shift' command.
    137 
    138   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
    139   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
    140 **/
    141 SHELL_STATUS
    142 EFIAPI
    143 ShellCommandRunShift (
    144   IN EFI_HANDLE        ImageHandle,
    145   IN EFI_SYSTEM_TABLE  *SystemTable
    146   );
    147 
    148 
    149 /**
    150   Function for 'else' command.
    151 
    152   @param[in] ImageHandle  Handle to the Image (NULL if Internal).
    153   @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
    154 **/
    155 SHELL_STATUS
    156 EFIAPI
    157 ShellCommandRunElse (
    158   IN EFI_HANDLE        ImageHandle,
    159   IN EFI_SYSTEM_TABLE  *SystemTable
    160   );
    161 
    162 ///
    163 /// Function prototype for BOTH GetNextNode and GetPreviousNode...
    164 /// This is used to control the MoveToTag function direction...
    165 ///
    166 typedef
    167 LIST_ENTRY *
    168 (EFIAPI *LIST_MANIP_FUNC)(
    169   IN CONST LIST_ENTRY *List,
    170   IN CONST LIST_ENTRY *Node
    171   );
    172 
    173 /**
    174   Move the script pointer from 1 tag (line) to another.
    175 
    176   It functions so that count starts at 1 and it increases or decreases when it
    177   hits the specified tags.  when it hits zero the location has been found.
    178 
    179   DecrementerTag and IncrementerTag are used to get around for/endfor and
    180   similar paired types where the entire middle should be ignored.
    181 
    182   If label is used it will be used instead of the count.
    183 
    184   @param[in] Function          The function to use to enumerate through the
    185                                list.  Normally GetNextNode or GetPreviousNode.
    186   @param[in] DecrementerTag    The tag to decrement the count at.
    187   @param[in] IncrementerTag    The tag to increment the count at.
    188   @param[in] Label             A label to look for.
    189   @param[in, out] ScriptFile   The pointer to the current script file structure.
    190   @param[in] MovePast          TRUE makes function return 1 past the found
    191                                location.
    192   @param[in] FindOnly          TRUE to not change the ScriptFile.
    193   @param[in] WrapAroundScript  TRUE to wrap end-to-begining or vise versa in
    194                                searching.
    195 **/
    196 BOOLEAN
    197 MoveToTag (
    198   IN CONST LIST_MANIP_FUNC      Function,
    199   IN CONST CHAR16               *DecrementerTag,
    200   IN CONST CHAR16               *IncrementerTag,
    201   IN CONST CHAR16               *Label OPTIONAL,
    202   IN OUT SCRIPT_FILE            *ScriptFile,
    203   IN CONST BOOLEAN              MovePast,
    204   IN CONST BOOLEAN              FindOnly,
    205   IN CONST BOOLEAN              WrapAroundScript
    206   );
    207 
    208 #endif
    209 
    210