15ef50723SJung-uk Kim /****************************************************************************** 25ef50723SJung-uk Kim * 35ef50723SJung-uk Kim * Name: acclib.h -- C library support. Prototypes for the (optional) local 45ef50723SJung-uk Kim * implementations of required C library functions. 55ef50723SJung-uk Kim * 65ef50723SJung-uk Kim *****************************************************************************/ 75ef50723SJung-uk Kim 85ef50723SJung-uk Kim /* 9f8146b88SJung-uk Kim * Copyright (C) 2000 - 2016, Intel Corp. 105ef50723SJung-uk Kim * All rights reserved. 115ef50723SJung-uk Kim * 125ef50723SJung-uk Kim * Redistribution and use in source and binary forms, with or without 135ef50723SJung-uk Kim * modification, are permitted provided that the following conditions 145ef50723SJung-uk Kim * are met: 155ef50723SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 165ef50723SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 175ef50723SJung-uk Kim * without modification. 185ef50723SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 195ef50723SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 205ef50723SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 215ef50723SJung-uk Kim * including a substantially similar Disclaimer requirement for further 225ef50723SJung-uk Kim * binary redistribution. 235ef50723SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 245ef50723SJung-uk Kim * of any contributors may be used to endorse or promote products derived 255ef50723SJung-uk Kim * from this software without specific prior written permission. 265ef50723SJung-uk Kim * 275ef50723SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 285ef50723SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 295ef50723SJung-uk Kim * Software Foundation. 305ef50723SJung-uk Kim * 315ef50723SJung-uk Kim * NO WARRANTY 325ef50723SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 335ef50723SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 345ef50723SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 355ef50723SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 365ef50723SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 375ef50723SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 385ef50723SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 395ef50723SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 405ef50723SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 415ef50723SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 425ef50723SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 435ef50723SJung-uk Kim */ 445ef50723SJung-uk Kim 455ef50723SJung-uk Kim #ifndef _ACCLIB_H 465ef50723SJung-uk Kim #define _ACCLIB_H 475ef50723SJung-uk Kim 485ef50723SJung-uk Kim 495ef50723SJung-uk Kim /* 505ef50723SJung-uk Kim * Prototypes and macros for local implementations of C library functions 515ef50723SJung-uk Kim */ 525ef50723SJung-uk Kim 535ef50723SJung-uk Kim /* is* functions. The AcpiGbl_Ctypes array is defined in utclib.c */ 545ef50723SJung-uk Kim 555ef50723SJung-uk Kim extern const UINT8 AcpiGbl_Ctypes[]; 565ef50723SJung-uk Kim 575ef50723SJung-uk Kim #define _ACPI_XA 0x00 /* extra alphabetic - not supported */ 585ef50723SJung-uk Kim #define _ACPI_XS 0x40 /* extra space */ 595ef50723SJung-uk Kim #define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ 605ef50723SJung-uk Kim #define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ 615ef50723SJung-uk Kim #define _ACPI_DI 0x04 /* '0'-'9' */ 625ef50723SJung-uk Kim #define _ACPI_LO 0x02 /* 'a'-'z' */ 635ef50723SJung-uk Kim #define _ACPI_PU 0x10 /* punctuation */ 645ef50723SJung-uk Kim #define _ACPI_SP 0x08 /* space, tab, CR, LF, VT, FF */ 655ef50723SJung-uk Kim #define _ACPI_UP 0x01 /* 'A'-'Z' */ 665ef50723SJung-uk Kim #define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ 675ef50723SJung-uk Kim 685ef50723SJung-uk Kim #define isdigit(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_DI)) 695ef50723SJung-uk Kim #define isspace(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_SP)) 705ef50723SJung-uk Kim #define isxdigit(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_XD)) 715ef50723SJung-uk Kim #define isupper(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_UP)) 725ef50723SJung-uk Kim #define islower(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO)) 735ef50723SJung-uk Kim #define isprint(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU)) 745ef50723SJung-uk Kim #define isalpha(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) 755ef50723SJung-uk Kim 76*493deb39SJung-uk Kim /* Error code */ 77*493deb39SJung-uk Kim 78*493deb39SJung-uk Kim #define EPERM 1 /* Operation not permitted */ 79*493deb39SJung-uk Kim #define ENOENT 2 /* No such file or directory */ 80*493deb39SJung-uk Kim #define EINTR 4 /* Interrupted system call */ 81*493deb39SJung-uk Kim #define EIO 5 /* I/O error */ 82*493deb39SJung-uk Kim #define EBADF 9 /* Bad file number */ 83*493deb39SJung-uk Kim #define EAGAIN 11 /* Try again */ 84*493deb39SJung-uk Kim #define ENOMEM 12 /* Out of memory */ 85*493deb39SJung-uk Kim #define EACCES 13 /* Permission denied */ 86*493deb39SJung-uk Kim #define EFAULT 14 /* Bad address */ 87*493deb39SJung-uk Kim #define EBUSY 16 /* Device or resource busy */ 88*493deb39SJung-uk Kim #define EEXIST 17 /* File exists */ 89*493deb39SJung-uk Kim #define ENODEV 19 /* No such device */ 90*493deb39SJung-uk Kim #define EINVAL 22 /* Invalid argument */ 91*493deb39SJung-uk Kim #define EPIPE 32 /* Broken pipe */ 92*493deb39SJung-uk Kim #define ERANGE 34 /* Math result not representable */ 935ef50723SJung-uk Kim 945ef50723SJung-uk Kim /* Strings */ 955ef50723SJung-uk Kim 965ef50723SJung-uk Kim char * 975ef50723SJung-uk Kim strcat ( 985ef50723SJung-uk Kim char *DstString, 995ef50723SJung-uk Kim const char *SrcString); 1005ef50723SJung-uk Kim 1015ef50723SJung-uk Kim char * 1025ef50723SJung-uk Kim strchr ( 1035ef50723SJung-uk Kim const char *String, 1045ef50723SJung-uk Kim int ch); 1055ef50723SJung-uk Kim 1065ef50723SJung-uk Kim char * 1075ef50723SJung-uk Kim strcpy ( 1085ef50723SJung-uk Kim char *DstString, 1095ef50723SJung-uk Kim const char *SrcString); 1105ef50723SJung-uk Kim 1115ef50723SJung-uk Kim int 1125ef50723SJung-uk Kim strcmp ( 1135ef50723SJung-uk Kim const char *String1, 1145ef50723SJung-uk Kim const char *String2); 1155ef50723SJung-uk Kim 1165ef50723SJung-uk Kim ACPI_SIZE 1175ef50723SJung-uk Kim strlen ( 1185ef50723SJung-uk Kim const char *String); 1195ef50723SJung-uk Kim 1205ef50723SJung-uk Kim char * 1215ef50723SJung-uk Kim strncat ( 1225ef50723SJung-uk Kim char *DstString, 1235ef50723SJung-uk Kim const char *SrcString, 1245ef50723SJung-uk Kim ACPI_SIZE Count); 1255ef50723SJung-uk Kim 1265ef50723SJung-uk Kim int 1275ef50723SJung-uk Kim strncmp ( 1285ef50723SJung-uk Kim const char *String1, 1295ef50723SJung-uk Kim const char *String2, 1305ef50723SJung-uk Kim ACPI_SIZE Count); 1315ef50723SJung-uk Kim 1325ef50723SJung-uk Kim char * 1335ef50723SJung-uk Kim strncpy ( 1345ef50723SJung-uk Kim char *DstString, 1355ef50723SJung-uk Kim const char *SrcString, 1365ef50723SJung-uk Kim ACPI_SIZE Count); 1375ef50723SJung-uk Kim 1385ef50723SJung-uk Kim char * 1395ef50723SJung-uk Kim strstr ( 1405ef50723SJung-uk Kim char *String1, 1415ef50723SJung-uk Kim char *String2); 1425ef50723SJung-uk Kim 1435ef50723SJung-uk Kim 1445ef50723SJung-uk Kim /* Conversion */ 1455ef50723SJung-uk Kim 1465ef50723SJung-uk Kim UINT32 1475ef50723SJung-uk Kim strtoul ( 1485ef50723SJung-uk Kim const char *String, 1495ef50723SJung-uk Kim char **Terminator, 1505ef50723SJung-uk Kim UINT32 Base); 1515ef50723SJung-uk Kim 1525ef50723SJung-uk Kim 1535ef50723SJung-uk Kim /* Memory */ 1545ef50723SJung-uk Kim 1555ef50723SJung-uk Kim int 1565ef50723SJung-uk Kim memcmp ( 1575ef50723SJung-uk Kim void *Buffer1, 1585ef50723SJung-uk Kim void *Buffer2, 1595ef50723SJung-uk Kim ACPI_SIZE Count); 1605ef50723SJung-uk Kim 1615ef50723SJung-uk Kim void * 1625ef50723SJung-uk Kim memcpy ( 1635ef50723SJung-uk Kim void *Dest, 1645ef50723SJung-uk Kim const void *Src, 1655ef50723SJung-uk Kim ACPI_SIZE Count); 1665ef50723SJung-uk Kim 1675ef50723SJung-uk Kim void * 1685ef50723SJung-uk Kim memset ( 1695ef50723SJung-uk Kim void *Dest, 1705ef50723SJung-uk Kim int Value, 1715ef50723SJung-uk Kim ACPI_SIZE Count); 1725ef50723SJung-uk Kim 1735ef50723SJung-uk Kim 1745ef50723SJung-uk Kim /* upper/lower case */ 1755ef50723SJung-uk Kim 1765ef50723SJung-uk Kim int 1775ef50723SJung-uk Kim tolower ( 1785ef50723SJung-uk Kim int c); 1795ef50723SJung-uk Kim 1805ef50723SJung-uk Kim int 1815ef50723SJung-uk Kim toupper ( 1825ef50723SJung-uk Kim int c); 1835ef50723SJung-uk Kim 184*493deb39SJung-uk Kim /* 185*493deb39SJung-uk Kim * utprint - printf/vprintf output functions 186*493deb39SJung-uk Kim */ 187*493deb39SJung-uk Kim const char * 188*493deb39SJung-uk Kim AcpiUtScanNumber ( 189*493deb39SJung-uk Kim const char *String, 190*493deb39SJung-uk Kim UINT64 *NumberPtr); 191*493deb39SJung-uk Kim 192*493deb39SJung-uk Kim const char * 193*493deb39SJung-uk Kim AcpiUtPrintNumber ( 194*493deb39SJung-uk Kim char *String, 195*493deb39SJung-uk Kim UINT64 Number); 196*493deb39SJung-uk Kim 197*493deb39SJung-uk Kim int 198*493deb39SJung-uk Kim vsnprintf ( 199*493deb39SJung-uk Kim char *String, 200*493deb39SJung-uk Kim ACPI_SIZE Size, 201*493deb39SJung-uk Kim const char *Format, 202*493deb39SJung-uk Kim va_list Args); 203*493deb39SJung-uk Kim 204*493deb39SJung-uk Kim int 205*493deb39SJung-uk Kim snprintf ( 206*493deb39SJung-uk Kim char *String, 207*493deb39SJung-uk Kim ACPI_SIZE Size, 208*493deb39SJung-uk Kim const char *Format, 209*493deb39SJung-uk Kim ...); 210*493deb39SJung-uk Kim 211*493deb39SJung-uk Kim int 212*493deb39SJung-uk Kim sprintf ( 213*493deb39SJung-uk Kim char *String, 214*493deb39SJung-uk Kim const char *Format, 215*493deb39SJung-uk Kim ...); 216*493deb39SJung-uk Kim 217*493deb39SJung-uk Kim #ifdef ACPI_APPLICATION 218*493deb39SJung-uk Kim #define SEEK_SET 0 219*493deb39SJung-uk Kim #define SEEK_CUR 1 220*493deb39SJung-uk Kim #define SEEK_END 2 221*493deb39SJung-uk Kim 222*493deb39SJung-uk Kim /* 223*493deb39SJung-uk Kim * NOTE: Currently we only need to update errno for file IOs. Other 224*493deb39SJung-uk Kim * Clibrary invocations in ACPICA do not make descisions according to 225*493deb39SJung-uk Kim * the errno. 226*493deb39SJung-uk Kim */ 227*493deb39SJung-uk Kim extern int errno; 228*493deb39SJung-uk Kim 229*493deb39SJung-uk Kim int 230*493deb39SJung-uk Kim vprintf ( 231*493deb39SJung-uk Kim const char *Format, 232*493deb39SJung-uk Kim va_list Args); 233*493deb39SJung-uk Kim 234*493deb39SJung-uk Kim int 235*493deb39SJung-uk Kim printf ( 236*493deb39SJung-uk Kim const char *Format, 237*493deb39SJung-uk Kim ...); 238*493deb39SJung-uk Kim 239*493deb39SJung-uk Kim int 240*493deb39SJung-uk Kim vfprintf ( 241*493deb39SJung-uk Kim FILE *File, 242*493deb39SJung-uk Kim const char *Format, 243*493deb39SJung-uk Kim va_list Args); 244*493deb39SJung-uk Kim 245*493deb39SJung-uk Kim int 246*493deb39SJung-uk Kim fprintf ( 247*493deb39SJung-uk Kim FILE *File, 248*493deb39SJung-uk Kim const char *Format, 249*493deb39SJung-uk Kim ...); 250*493deb39SJung-uk Kim 251*493deb39SJung-uk Kim FILE * 252*493deb39SJung-uk Kim fopen ( 253*493deb39SJung-uk Kim const char *Path, 254*493deb39SJung-uk Kim const char *Modes); 255*493deb39SJung-uk Kim 256*493deb39SJung-uk Kim void 257*493deb39SJung-uk Kim fclose ( 258*493deb39SJung-uk Kim FILE *File); 259*493deb39SJung-uk Kim 260*493deb39SJung-uk Kim int 261*493deb39SJung-uk Kim fread ( 262*493deb39SJung-uk Kim void *Buffer, 263*493deb39SJung-uk Kim ACPI_SIZE Size, 264*493deb39SJung-uk Kim ACPI_SIZE Count, 265*493deb39SJung-uk Kim FILE *File); 266*493deb39SJung-uk Kim 267*493deb39SJung-uk Kim int 268*493deb39SJung-uk Kim fwrite ( 269*493deb39SJung-uk Kim void *Buffer, 270*493deb39SJung-uk Kim ACPI_SIZE Size, 271*493deb39SJung-uk Kim ACPI_SIZE Count, 272*493deb39SJung-uk Kim FILE *File); 273*493deb39SJung-uk Kim 274*493deb39SJung-uk Kim int 275*493deb39SJung-uk Kim fseek ( 276*493deb39SJung-uk Kim FILE *File, 277*493deb39SJung-uk Kim long Offset, 278*493deb39SJung-uk Kim int From); 279*493deb39SJung-uk Kim 280*493deb39SJung-uk Kim long 281*493deb39SJung-uk Kim ftell ( 282*493deb39SJung-uk Kim FILE *File); 283*493deb39SJung-uk Kim #endif 284*493deb39SJung-uk Kim 2855ef50723SJung-uk Kim #endif /* _ACCLIB_H */ 286