Home | History | Annotate | Download | only in Common
      1 /** @file
      2 Common library assistance routines.
      3 
      4 Copyright (c) 2004 - 2014, 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 _EFI_COMMON_LIB_H
     16 #define _EFI_COMMON_LIB_H
     17 
     18 #include <Common/UefiBaseTypes.h>
     19 #include <Common/BuildVersion.h>
     20 #define PRINTED_GUID_BUFFER_SIZE  37  // including null-termination
     21 
     22 #define MAX_LONG_FILE_PATH 500
     23 
     24 #ifdef __cplusplus
     25 extern "C" {
     26 #endif
     27 
     28 //
     29 // Function declarations
     30 //
     31 VOID
     32 PeiZeroMem (
     33   IN VOID   *Buffer,
     34   IN UINTN  Size
     35   )
     36 ;
     37 
     38 VOID
     39 PeiCopyMem (
     40   IN VOID   *Destination,
     41   IN VOID   *Source,
     42   IN UINTN  Length
     43   )
     44 ;
     45 
     46 VOID
     47 ZeroMem (
     48   IN VOID   *Buffer,
     49   IN UINTN  Size
     50   )
     51 ;
     52 
     53 VOID
     54 CopyMem (
     55   IN VOID   *Destination,
     56   IN VOID   *Source,
     57   IN UINTN  Length
     58   )
     59 ;
     60 
     61 INTN
     62 CompareGuid (
     63   IN EFI_GUID     *Guid1,
     64   IN EFI_GUID     *Guid2
     65   )
     66 ;
     67 
     68 EFI_STATUS
     69 GetFileImage (
     70   IN CHAR8    *InputFileName,
     71   OUT CHAR8   **InputFileImage,
     72   OUT UINT32  *BytesRead
     73   )
     74 ;
     75 
     76 EFI_STATUS
     77 PutFileImage (
     78   IN CHAR8    *OutputFileName,
     79   IN CHAR8    *OutputFileImage,
     80   IN UINT32   BytesToWrite
     81   )
     82 ;
     83 /*++
     84 
     85 Routine Description:
     86 
     87   This function opens a file and writes OutputFileImage into the file.
     88 
     89 Arguments:
     90 
     91   OutputFileName     The name of the file to write.
     92   OutputFileImage    A pointer to the memory buffer.
     93   BytesToWrite       The size of the memory buffer.
     94 
     95 Returns:
     96 
     97   EFI_SUCCESS              The function completed successfully.
     98   EFI_INVALID_PARAMETER    One of the input parameters was invalid.
     99   EFI_ABORTED              An error occurred.
    100   EFI_OUT_OF_RESOURCES     No resource to complete operations.
    101 
    102 **/
    103 
    104 UINT8
    105 CalculateChecksum8 (
    106   IN UINT8        *Buffer,
    107   IN UINTN        Size
    108   )
    109 ;
    110 
    111 UINT8
    112 CalculateSum8 (
    113   IN UINT8        *Buffer,
    114   IN UINTN        Size
    115   )
    116 ;
    117 
    118 UINT16
    119 CalculateChecksum16 (
    120   IN UINT16       *Buffer,
    121   IN UINTN        Size
    122   )
    123 ;
    124 
    125 UINT16
    126 CalculateSum16 (
    127   IN UINT16       *Buffer,
    128   IN UINTN        Size
    129   )
    130 ;
    131 
    132 EFI_STATUS
    133 PrintGuid (
    134   IN EFI_GUID                     *Guid
    135   )
    136 ;
    137 
    138 #define PRINTED_GUID_BUFFER_SIZE  37  // including null-termination
    139 EFI_STATUS
    140 PrintGuidToBuffer (
    141   IN EFI_GUID     *Guid,
    142   IN OUT UINT8    *Buffer,
    143   IN UINT32       BufferLen,
    144   IN BOOLEAN      Uppercase
    145   )
    146 ;
    147 
    148 CHAR8 *
    149 LongFilePath (
    150  IN CHAR8 *FileName
    151 );
    152 /*++
    153 
    154 Routine Description:
    155   Convert FileName to the long file path, which can support larger than 260 length.
    156 
    157 Arguments:
    158   FileName         - FileName.
    159 
    160 Returns:
    161   LongFilePath      A pointer to the converted long file path.
    162 
    163 --*/
    164 
    165 #ifdef __cplusplus
    166 }
    167 #endif
    168 
    169 #define ASSERT(x) assert(x)
    170 
    171 #ifdef __GNUC__
    172 #include <stdio.h>
    173 #include <sys/stat.h>
    174 #define stricmp strcasecmp
    175 #define _stricmp strcasecmp
    176 #define strnicmp strncasecmp
    177 #define strcmpi strcasecmp
    178 size_t _filelength(int fd);
    179 #ifndef __CYGWIN__
    180 char *strlwr(char *s);
    181 #endif
    182 #endif
    183 
    184 //
    185 // On windows, mkdir only has one parameter.
    186 // On unix, it has two parameters
    187 //
    188 #if defined(__GNUC__)
    189 #define mkdir(dir, perm) mkdir(dir, perm)
    190 #else
    191 #define mkdir(dir, perm) mkdir(dir)
    192 #endif
    193 
    194 #endif
    195