Home | History | Annotate | Line # | Download | only in include
acclib.h revision 1.1.1.3
      1 /******************************************************************************
      2  *
      3  * Name: acclib.h -- C library support. Prototypes for the (optional) local
      4  *                   implementations of required C library functions.
      5  *
      6  *****************************************************************************/
      7 
      8 /*
      9  * Copyright (C) 2000 - 2016, Intel Corp.
     10  * All rights reserved.
     11  *
     12  * Redistribution and use in source and binary forms, with or without
     13  * modification, are permitted provided that the following conditions
     14  * are met:
     15  * 1. Redistributions of source code must retain the above copyright
     16  *    notice, this list of conditions, and the following disclaimer,
     17  *    without modification.
     18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     19  *    substantially similar to the "NO WARRANTY" disclaimer below
     20  *    ("Disclaimer") and any redistribution must be conditioned upon
     21  *    including a substantially similar Disclaimer requirement for further
     22  *    binary redistribution.
     23  * 3. Neither the names of the above-listed copyright holders nor the names
     24  *    of any contributors may be used to endorse or promote products derived
     25  *    from this software without specific prior written permission.
     26  *
     27  * Alternatively, this software may be distributed under the terms of the
     28  * GNU General Public License ("GPL") version 2 as published by the Free
     29  * Software Foundation.
     30  *
     31  * NO WARRANTY
     32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     42  * POSSIBILITY OF SUCH DAMAGES.
     43  */
     44 
     45 #ifndef _ACCLIB_H
     46 #define _ACCLIB_H
     47 
     48 
     49 /*
     50  * Prototypes and macros for local implementations of C library functions
     51  */
     52 
     53 /* is* functions. The AcpiGbl_Ctypes array is defined in utclib.c */
     54 
     55 extern const UINT8 AcpiGbl_Ctypes[];
     56 
     57 #define _ACPI_XA     0x00    /* extra alphabetic - not supported */
     58 #define _ACPI_XS     0x40    /* extra space */
     59 #define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
     60 #define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
     61 #define _ACPI_DI     0x04    /* '0'-'9' */
     62 #define _ACPI_LO     0x02    /* 'a'-'z' */
     63 #define _ACPI_PU     0x10    /* punctuation */
     64 #define _ACPI_SP     0x08    /* space, tab, CR, LF, VT, FF */
     65 #define _ACPI_UP     0x01    /* 'A'-'Z' */
     66 #define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
     67 
     68 #define isdigit(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_DI))
     69 #define isspace(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_SP))
     70 #define isxdigit(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_XD))
     71 #define isupper(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_UP))
     72 #define islower(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO))
     73 #define isprint(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU))
     74 #define isalpha(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
     75 
     76 /* Error code */
     77 
     78 #define EPERM            1 /* Operation not permitted */
     79 #define ENOENT           2 /* No such file or directory */
     80 #define EINTR            4 /* Interrupted system call */
     81 #define EIO              5 /* I/O error */
     82 #define EBADF            9 /* Bad file number */
     83 #define EAGAIN          11 /* Try again */
     84 #define ENOMEM          12 /* Out of memory */
     85 #define EACCES          13 /* Permission denied */
     86 #define EFAULT          14 /* Bad address */
     87 #define EBUSY           16 /* Device or resource busy */
     88 #define EEXIST          17 /* File exists */
     89 #define ENODEV          19 /* No such device */
     90 #define EINVAL          22 /* Invalid argument */
     91 #define EPIPE           32 /* Broken pipe */
     92 #define ERANGE          34 /* Math result not representable */
     93 
     94 /* Strings */
     95 
     96 char *
     97 strcat (
     98     char                    *DstString,
     99     const char              *SrcString);
    100 
    101 char *
    102 strchr (
    103     const char              *String,
    104     int                     ch);
    105 
    106 char *
    107 strcpy (
    108     char                    *DstString,
    109     const char              *SrcString);
    110 
    111 int
    112 strcmp (
    113     const char              *String1,
    114     const char              *String2);
    115 
    116 ACPI_SIZE
    117 strlen (
    118     const char              *String);
    119 
    120 char *
    121 strncat (
    122     char                    *DstString,
    123     const char              *SrcString,
    124     ACPI_SIZE               Count);
    125 
    126 int
    127 strncmp (
    128     const char              *String1,
    129     const char              *String2,
    130     ACPI_SIZE               Count);
    131 
    132 char *
    133 strncpy (
    134     char                    *DstString,
    135     const char              *SrcString,
    136     ACPI_SIZE               Count);
    137 
    138 char *
    139 strstr (
    140     char                    *String1,
    141     char                    *String2);
    142 
    143 
    144 /* Conversion */
    145 
    146 UINT32
    147 strtoul (
    148     const char              *String,
    149     char                    **Terminator,
    150     UINT32                  Base);
    151 
    152 
    153 /* Memory */
    154 
    155 int
    156 memcmp (
    157     void                    *Buffer1,
    158     void                    *Buffer2,
    159     ACPI_SIZE               Count);
    160 
    161 void *
    162 memcpy (
    163     void                    *Dest,
    164     const void              *Src,
    165     ACPI_SIZE               Count);
    166 
    167 void *
    168 memset (
    169     void                    *Dest,
    170     int                     Value,
    171     ACPI_SIZE               Count);
    172 
    173 
    174 /* upper/lower case */
    175 
    176 int
    177 tolower (
    178     int                     c);
    179 
    180 int
    181 toupper (
    182     int                     c);
    183 
    184 /*
    185  * utprint - printf/vprintf output functions
    186  */
    187 const char *
    188 AcpiUtScanNumber (
    189     const char              *String,
    190     UINT64                  *NumberPtr);
    191 
    192 const char *
    193 AcpiUtPrintNumber (
    194     char                    *String,
    195     UINT64                  Number);
    196 
    197 int
    198 vsnprintf (
    199     char                    *String,
    200     ACPI_SIZE               Size,
    201     const char              *Format,
    202     va_list                 Args);
    203 
    204 int
    205 snprintf (
    206     char                    *String,
    207     ACPI_SIZE               Size,
    208     const char              *Format,
    209     ...);
    210 
    211 int
    212 sprintf (
    213     char                    *String,
    214     const char              *Format,
    215     ...);
    216 
    217 #ifdef ACPI_APPLICATION
    218 #define SEEK_SET            0
    219 #define SEEK_CUR            1
    220 #define SEEK_END            2
    221 
    222 /*
    223  * NOTE: Currently we only need to update errno for file IOs. Other
    224  *       Clibrary invocations in ACPICA do not make descisions according to
    225  *       the errno.
    226  */
    227 extern int errno;
    228 
    229 int
    230 vprintf (
    231     const char              *Format,
    232     va_list                 Args);
    233 
    234 int
    235 printf (
    236     const char              *Format,
    237     ...);
    238 
    239 int
    240 vfprintf (
    241     FILE                    *File,
    242     const char              *Format,
    243     va_list                 Args);
    244 
    245 int
    246 fprintf (
    247     FILE                    *File,
    248     const char              *Format,
    249     ...);
    250 
    251 FILE *
    252 fopen (
    253     const char              *Path,
    254     const char              *Modes);
    255 
    256 void
    257 fclose (
    258     FILE                    *File);
    259 
    260 int
    261 fread (
    262     void                    *Buffer,
    263     ACPI_SIZE               Size,
    264     ACPI_SIZE               Count,
    265     FILE                    *File);
    266 
    267 int
    268 fwrite (
    269     void                    *Buffer,
    270     ACPI_SIZE               Size,
    271     ACPI_SIZE               Count,
    272     FILE                    *File);
    273 
    274 int
    275 fseek (
    276     FILE                    *File,
    277     long                    Offset,
    278     int                     From);
    279 
    280 long
    281 ftell (
    282     FILE                    *File);
    283 #endif
    284 
    285 #endif /* _ACCLIB_H */
    286