Home | History | Annotate | Download | only in EbcDebugger
      1 /** @file
      2 
      3 Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 
     13 **/
     14 
     15 #ifndef _EFI_EDB_SUPPORT_H_
     16 #define _EFI_EDB_SUPPORT_H_
     17 
     18 #include <Uefi.h>
     19 
     20 #define EFI_DEBUG_PROMPT_STRING      L"EDB > "
     21 #define EFI_DEBUG_PROMPT_COLUMN      5
     22 #define EFI_DEBUG_INPUS_BUFFER_SIZE  64
     23 
     24 #define EFI_DEBUGGER_LINE_NUMBER_IN_PAGE  0x10
     25 
     26 #define EFI_DEBUG_MAX_PRINT_BUFFER   (80 * 4)
     27 
     28 /**
     29 
     30   Convert hex string to uint.
     31 
     32   @param  Str  -  The string
     33 
     34 **/
     35 UINTN
     36 EFIAPI
     37 Xtoi (
     38   CHAR16  *Str
     39   );
     40 
     41 /**
     42 
     43   Convert hex string to uint.
     44 
     45   @param  Str  -  The string
     46 
     47 **/
     48 UINT64
     49 EFIAPI
     50 LXtoi (
     51   CHAR16  *Str
     52   );
     53 
     54 /**
     55 
     56   Convert hex string to uint.
     57 
     58   @param Str  -  The string
     59 
     60 **/
     61 UINTN
     62 EFIAPI
     63 Atoi (
     64   CHAR16  *Str
     65   );
     66 
     67 /**
     68 
     69   Convert hex string to uint.
     70 
     71   @param  Str  -  The string
     72 
     73 **/
     74 UINTN
     75 EFIAPI
     76 AsciiXtoi (
     77   CHAR8  *Str
     78   );
     79 
     80 /**
     81 
     82   Convert hex string to uint.
     83 
     84   @param Str  -  The string
     85 
     86 **/
     87 UINTN
     88 EFIAPI
     89 AsciiAtoi (
     90   CHAR8  *Str
     91   );
     92 
     93 /**
     94   Compare the Unicode and Ascii string pointed by String to the string pointed by String2.
     95 
     96   @param String - Unicode String to process
     97 
     98   @param String2 - Ascii string to process
     99 
    100   @return Return a positive integer if String is lexicall greater than String2; Zero if
    101   the two strings are identical; and a negative interger if String is lexically
    102   less than String2.
    103 
    104 **/
    105 INTN
    106 EFIAPI
    107 StrCmpUnicodeAndAscii (
    108   IN CHAR16   *String,
    109   IN CHAR8    *String2
    110   );
    111 
    112 /**
    113 
    114   Compare the Unicode string pointed by String to the string pointed by String2.
    115 
    116   @param  String - Unicode String to process
    117   @param  String2 - Unicode string to process
    118 
    119   @return Return a positive integer if String is lexically greater than String2; Zero if
    120   the two strings are identical; and a negative integer if String is lexically
    121   less than String2.
    122 
    123 **/
    124 INTN
    125 EFIAPI
    126 StriCmp (
    127   IN CHAR16   *String,
    128   IN CHAR16   *String2
    129   );
    130 
    131 /**
    132 
    133   Compare the Unicode and Ascii string pointed by String to the string pointed by String2.
    134 
    135   @param  String - Unicode String to process
    136   @param  String2 - Ascii string to process
    137 
    138   @return Return a positive integer if String is lexically greater than String2; Zero if
    139   the two strings are identical; and a negative integer if String is lexically
    140   less than String2.
    141 
    142 **/
    143 INTN
    144 EFIAPI
    145 StriCmpUnicodeAndAscii (
    146   IN CHAR16   *String,
    147   IN CHAR8    *String2
    148   );
    149 
    150 /**
    151 
    152   Verify if the string is end with the sub string.
    153 
    154   @param  Str - The string where to search the sub string
    155   @param  SubStr - The substring.
    156 
    157 **/
    158 BOOLEAN
    159 EFIAPI
    160 StrEndWith (
    161   IN CHAR16                       *Str,
    162   IN CHAR16                       *SubStr
    163   );
    164 
    165 /**
    166   Duplicate a string.
    167 
    168   @param  Src  The string to be duplicated.
    169 
    170 **/
    171 CHAR16 *
    172 EFIAPI
    173 StrDuplicate (
    174   IN CHAR16   *Src
    175   );
    176 
    177 /**
    178 
    179   Find the next token after one or more specified characters.
    180 
    181   @param  String    Point to the string where to find the substring.
    182   @param  CharSet   Point to the string to be found.
    183 
    184 **/
    185 CHAR16 *
    186 EFIAPI
    187 StrGetNewTokenLine (
    188   IN CHAR16                       *String,
    189   IN CHAR16                       *CharSet
    190   );
    191 
    192 /**
    193 
    194   Find the next token after one or more specified characters.
    195 
    196   @param  CharSet   Point to the string to be found.
    197 
    198 **/
    199 CHAR16 *
    200 EFIAPI
    201 StrGetNextTokenLine (
    202   IN CHAR16                       *CharSet
    203   );
    204 
    205 /**
    206 
    207   Find the next token after one specificed characters.
    208 
    209   @param  String    Point to the string where to find the substring.
    210   @param  CharSet   Point to the string to be found.
    211 
    212 **/
    213 CHAR16 *
    214 EFIAPI
    215 StrGetNewTokenField (
    216   IN CHAR16                       *String,
    217   IN CHAR16                       *CharSet
    218   );
    219 
    220 /**
    221 
    222   Find the next token after one specificed characters.
    223 
    224   @param  CharSet   Point to the string to be found.
    225 
    226 **/
    227 CHAR16 *
    228 EFIAPI
    229 StrGetNextTokenField (
    230   IN CHAR16                       *CharSet
    231   );
    232 
    233 /**
    234 
    235   Patch a character to the end of a string.
    236 
    237   @param  Buffer   The string to be patched.
    238   @param  Patch    The patch character.
    239 
    240 **/
    241 VOID
    242 EFIAPI
    243 PatchForStrTokenAfter (
    244   IN CHAR16    *Buffer,
    245   IN CHAR16    Patch
    246   );
    247 
    248 /**
    249   Patch a character at the beginning of a string.
    250 
    251   @param  Buffer   The string to be patched.
    252   @param  Patch    The patch character.
    253 
    254 **/
    255 VOID
    256 EFIAPI
    257 PatchForStrTokenBefore (
    258   IN CHAR16    *Buffer,
    259   IN CHAR16    Patch
    260   );
    261 
    262 /**
    263 
    264   Find the next token after one or more specified characters.
    265 
    266   @param  String    Point to the string where to find the substring.
    267   @param  CharSet   Point to the string to be found.
    268 
    269 **/
    270 CHAR8 *
    271 EFIAPI
    272 AsciiStrGetNewTokenLine (
    273   IN CHAR8                       *String,
    274   IN CHAR8                       *CharSet
    275   );
    276 
    277 /**
    278 
    279   Find the next token after one or more specified characters.
    280 
    281   @param  CharSet   Point to the string to be found.
    282 
    283 **/
    284 CHAR8 *
    285 EFIAPI
    286 AsciiStrGetNextTokenLine (
    287   IN CHAR8                       *CharSet
    288   );
    289 
    290 /**
    291 
    292   Find the next token after one specificed characters.
    293 
    294   @param  String    Point to the string where to find the substring.
    295   @param  CharSet   Point to the string to be found.
    296 
    297 **/
    298 CHAR8 *
    299 EFIAPI
    300 AsciiStrGetNewTokenField (
    301   IN CHAR8                       *String,
    302   IN CHAR8                       *CharSet
    303   );
    304 
    305 /**
    306 
    307   Find the next token after one specificed characters.
    308 
    309   @param  CharSet   Point to the string to be found.
    310 
    311 **/
    312 CHAR8 *
    313 EFIAPI
    314 AsciiStrGetNextTokenField (
    315   IN CHAR8                       *CharSet
    316   );
    317 
    318 /**
    319 
    320   Patch a character to the end of a string.
    321 
    322   @param  Buffer   The string to be patched.
    323   @param  Patch    The patch character.
    324 
    325 **/
    326 VOID
    327 EFIAPI
    328 PatchForAsciiStrTokenAfter (
    329   IN CHAR8    *Buffer,
    330   IN CHAR8    Patch
    331   );
    332 
    333 /**
    334   Patch a character at the beginning of a string.
    335 
    336   @param  Buffer   The string to be patched.
    337   @param  Patch    The patch character.
    338 
    339 **/
    340 VOID
    341 EFIAPI
    342 PatchForAsciiStrTokenBefore (
    343   IN CHAR8    *Buffer,
    344   IN CHAR8    Patch
    345   );
    346 
    347 /**
    348 
    349   Shell Library.
    350   Get user input.
    351 
    352   @param  Prompt    The prompt string.
    353   @param  InStr     Point to the input string.
    354   @param  StrLen    The max length of string user can input.
    355 
    356 **/
    357 VOID
    358 EFIAPI
    359 Input (
    360   IN CHAR16    *Prompt OPTIONAL,
    361   OUT CHAR16   *InStr,
    362   IN UINTN     StrLen
    363   );
    364 
    365 /**
    366 
    367   SetPageBreak.
    368 
    369 **/
    370 BOOLEAN
    371 EFIAPI
    372 SetPageBreak (
    373   VOID
    374   );
    375 
    376 /**
    377   Print a Unicode string to the output device.
    378 
    379   @param  Format    A Null-terminated Unicode format string.
    380   @param  ...       The variable argument list that contains pointers to Null-
    381                     terminated Unicode strings to be printed
    382 
    383 **/
    384 UINTN
    385 EFIAPI
    386 EDBPrint (
    387   IN CONST CHAR16  *Format,
    388   ...
    389   );
    390 
    391 /**
    392   Print a Unicode string to the output buffer.
    393 
    394   @param  Buffer          A pointer to the output buffer for the produced Null-terminated
    395                           Unicode string.
    396   @param  BufferSize      The size, in bytes, of the output buffer specified by StartOfBuffer.
    397   @param  Format          A Null-terminated Unicode format string.
    398   @param  ...             The variable argument list that contains pointers to Null-
    399                           terminated Unicode strings to be printed
    400 
    401 **/
    402 UINTN
    403 EFIAPI
    404 EDBSPrint (
    405   OUT CHAR16        *Buffer,
    406   IN  INTN          BufferSize,
    407   IN  CONST CHAR16  *Format,
    408   ...
    409   );
    410 
    411 /**
    412   Print a Unicode string to the output buffer with specified offset..
    413 
    414   @param  Buffer          A pointer to the output buffer for the produced Null-terminated
    415                           Unicode string.
    416   @param  BufferSize      The size, in bytes, of the output buffer specified by StartOfBuffer.
    417   @param  Offset          The offset of the buffer.
    418   @param  Format          A Null-terminated Unicode format string.
    419   @param  ...             The variable argument list that contains pointers to Null-
    420                           terminated Unicode strings to be printed
    421 
    422 **/
    423 UINTN
    424 EFIAPI
    425 EDBSPrintWithOffset (
    426   OUT CHAR16        *Buffer,
    427   IN  INTN          BufferSize,
    428   IN  UINTN         Offset,
    429   IN  CONST CHAR16  *Format,
    430   ...
    431   );
    432 
    433 /**
    434 
    435   Read a file.
    436   If ScanFs is FLASE, it will use DebuggerPrivate->Vol as default Fs.
    437   If ScanFs is TRUE, it will scan all FS and check the file.
    438   If there is only one file match the name, it will be read.
    439   If there is more than one file match the name, it will return Error.
    440 
    441   @param  DebuggerPrivate - EBC Debugger private data structure
    442   @param  FileName        - The file to be read.
    443   @param  BufferSize      - The file buffer size
    444   @param  Buffer          - The file buffer
    445   @param  ScanFs          - Need Scan all FS
    446 
    447   @retval EFI_SUCCESS    - read file successfully
    448   @retval EFI_NOT_FOUND  - file not found
    449   @retval EFI_NO_MAPPING - there is duplicated files found
    450 
    451 **/
    452 EFI_STATUS
    453 EFIAPI
    454 ReadFileToBuffer (
    455   IN  EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
    456   IN  CHAR16                      *FileName,
    457   OUT UINTN                       *BufferSize,
    458   OUT VOID                        **Buffer,
    459   IN  BOOLEAN                     ScanFs
    460   );
    461 
    462 /**
    463 
    464   Get file name under this dir with index
    465 
    466   @param  DebuggerPrivate - EBC Debugger private data structure
    467   @param  DirName         - The dir to be read.
    468   @param  FileName        - The file name pattern under this dir
    469   @param  Index           - The file index under this dir
    470 
    471   @return File Name which match the pattern and index.
    472 
    473 **/
    474 CHAR16 *
    475 EFIAPI
    476 GetFileNameUnderDir (
    477   IN  EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
    478   IN  CHAR16                      *DirName,
    479   IN  CHAR16                      *FileName,
    480   IN OUT UINTN                    *Index
    481   );
    482 
    483 #endif
    484