1*5ef50723SJung-uk Kim /****************************************************************************** 2*5ef50723SJung-uk Kim * 3*5ef50723SJung-uk Kim * Name: acclib.h -- C library support. Prototypes for the (optional) local 4*5ef50723SJung-uk Kim * implementations of required C library functions. 5*5ef50723SJung-uk Kim * 6*5ef50723SJung-uk Kim *****************************************************************************/ 7*5ef50723SJung-uk Kim 8*5ef50723SJung-uk Kim /* 9*5ef50723SJung-uk Kim * Copyright (C) 2000 - 2015, Intel Corp. 10*5ef50723SJung-uk Kim * All rights reserved. 11*5ef50723SJung-uk Kim * 12*5ef50723SJung-uk Kim * Redistribution and use in source and binary forms, with or without 13*5ef50723SJung-uk Kim * modification, are permitted provided that the following conditions 14*5ef50723SJung-uk Kim * are met: 15*5ef50723SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 16*5ef50723SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 17*5ef50723SJung-uk Kim * without modification. 18*5ef50723SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19*5ef50723SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 20*5ef50723SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 21*5ef50723SJung-uk Kim * including a substantially similar Disclaimer requirement for further 22*5ef50723SJung-uk Kim * binary redistribution. 23*5ef50723SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 24*5ef50723SJung-uk Kim * of any contributors may be used to endorse or promote products derived 25*5ef50723SJung-uk Kim * from this software without specific prior written permission. 26*5ef50723SJung-uk Kim * 27*5ef50723SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 28*5ef50723SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 29*5ef50723SJung-uk Kim * Software Foundation. 30*5ef50723SJung-uk Kim * 31*5ef50723SJung-uk Kim * NO WARRANTY 32*5ef50723SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33*5ef50723SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34*5ef50723SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35*5ef50723SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36*5ef50723SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37*5ef50723SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38*5ef50723SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39*5ef50723SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40*5ef50723SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41*5ef50723SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42*5ef50723SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 43*5ef50723SJung-uk Kim */ 44*5ef50723SJung-uk Kim 45*5ef50723SJung-uk Kim #ifndef _ACCLIB_H 46*5ef50723SJung-uk Kim #define _ACCLIB_H 47*5ef50723SJung-uk Kim 48*5ef50723SJung-uk Kim 49*5ef50723SJung-uk Kim /* 50*5ef50723SJung-uk Kim * Prototypes and macros for local implementations of C library functions 51*5ef50723SJung-uk Kim */ 52*5ef50723SJung-uk Kim 53*5ef50723SJung-uk Kim /* is* functions. The AcpiGbl_Ctypes array is defined in utclib.c */ 54*5ef50723SJung-uk Kim 55*5ef50723SJung-uk Kim extern const UINT8 AcpiGbl_Ctypes[]; 56*5ef50723SJung-uk Kim 57*5ef50723SJung-uk Kim #define _ACPI_XA 0x00 /* extra alphabetic - not supported */ 58*5ef50723SJung-uk Kim #define _ACPI_XS 0x40 /* extra space */ 59*5ef50723SJung-uk Kim #define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ 60*5ef50723SJung-uk Kim #define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ 61*5ef50723SJung-uk Kim #define _ACPI_DI 0x04 /* '0'-'9' */ 62*5ef50723SJung-uk Kim #define _ACPI_LO 0x02 /* 'a'-'z' */ 63*5ef50723SJung-uk Kim #define _ACPI_PU 0x10 /* punctuation */ 64*5ef50723SJung-uk Kim #define _ACPI_SP 0x08 /* space, tab, CR, LF, VT, FF */ 65*5ef50723SJung-uk Kim #define _ACPI_UP 0x01 /* 'A'-'Z' */ 66*5ef50723SJung-uk Kim #define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ 67*5ef50723SJung-uk Kim 68*5ef50723SJung-uk Kim #define isdigit(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_DI)) 69*5ef50723SJung-uk Kim #define isspace(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_SP)) 70*5ef50723SJung-uk Kim #define isxdigit(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_XD)) 71*5ef50723SJung-uk Kim #define isupper(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_UP)) 72*5ef50723SJung-uk Kim #define islower(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO)) 73*5ef50723SJung-uk Kim #define isprint(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU)) 74*5ef50723SJung-uk Kim #define isalpha(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) 75*5ef50723SJung-uk Kim 76*5ef50723SJung-uk Kim 77*5ef50723SJung-uk Kim /* Strings */ 78*5ef50723SJung-uk Kim 79*5ef50723SJung-uk Kim char * 80*5ef50723SJung-uk Kim strcat ( 81*5ef50723SJung-uk Kim char *DstString, 82*5ef50723SJung-uk Kim const char *SrcString); 83*5ef50723SJung-uk Kim 84*5ef50723SJung-uk Kim char * 85*5ef50723SJung-uk Kim strchr ( 86*5ef50723SJung-uk Kim const char *String, 87*5ef50723SJung-uk Kim int ch); 88*5ef50723SJung-uk Kim 89*5ef50723SJung-uk Kim char * 90*5ef50723SJung-uk Kim strcpy ( 91*5ef50723SJung-uk Kim char *DstString, 92*5ef50723SJung-uk Kim const char *SrcString); 93*5ef50723SJung-uk Kim 94*5ef50723SJung-uk Kim int 95*5ef50723SJung-uk Kim strcmp ( 96*5ef50723SJung-uk Kim const char *String1, 97*5ef50723SJung-uk Kim const char *String2); 98*5ef50723SJung-uk Kim 99*5ef50723SJung-uk Kim ACPI_SIZE 100*5ef50723SJung-uk Kim strlen ( 101*5ef50723SJung-uk Kim const char *String); 102*5ef50723SJung-uk Kim 103*5ef50723SJung-uk Kim char * 104*5ef50723SJung-uk Kim strncat ( 105*5ef50723SJung-uk Kim char *DstString, 106*5ef50723SJung-uk Kim const char *SrcString, 107*5ef50723SJung-uk Kim ACPI_SIZE Count); 108*5ef50723SJung-uk Kim 109*5ef50723SJung-uk Kim int 110*5ef50723SJung-uk Kim strncmp ( 111*5ef50723SJung-uk Kim const char *String1, 112*5ef50723SJung-uk Kim const char *String2, 113*5ef50723SJung-uk Kim ACPI_SIZE Count); 114*5ef50723SJung-uk Kim 115*5ef50723SJung-uk Kim char * 116*5ef50723SJung-uk Kim strncpy ( 117*5ef50723SJung-uk Kim char *DstString, 118*5ef50723SJung-uk Kim const char *SrcString, 119*5ef50723SJung-uk Kim ACPI_SIZE Count); 120*5ef50723SJung-uk Kim 121*5ef50723SJung-uk Kim char * 122*5ef50723SJung-uk Kim strstr ( 123*5ef50723SJung-uk Kim char *String1, 124*5ef50723SJung-uk Kim char *String2); 125*5ef50723SJung-uk Kim 126*5ef50723SJung-uk Kim 127*5ef50723SJung-uk Kim /* Conversion */ 128*5ef50723SJung-uk Kim 129*5ef50723SJung-uk Kim UINT32 130*5ef50723SJung-uk Kim strtoul ( 131*5ef50723SJung-uk Kim const char *String, 132*5ef50723SJung-uk Kim char **Terminator, 133*5ef50723SJung-uk Kim UINT32 Base); 134*5ef50723SJung-uk Kim 135*5ef50723SJung-uk Kim 136*5ef50723SJung-uk Kim /* Memory */ 137*5ef50723SJung-uk Kim 138*5ef50723SJung-uk Kim int 139*5ef50723SJung-uk Kim memcmp ( 140*5ef50723SJung-uk Kim void *Buffer1, 141*5ef50723SJung-uk Kim void *Buffer2, 142*5ef50723SJung-uk Kim ACPI_SIZE Count); 143*5ef50723SJung-uk Kim 144*5ef50723SJung-uk Kim void * 145*5ef50723SJung-uk Kim memcpy ( 146*5ef50723SJung-uk Kim void *Dest, 147*5ef50723SJung-uk Kim const void *Src, 148*5ef50723SJung-uk Kim ACPI_SIZE Count); 149*5ef50723SJung-uk Kim 150*5ef50723SJung-uk Kim void * 151*5ef50723SJung-uk Kim memset ( 152*5ef50723SJung-uk Kim void *Dest, 153*5ef50723SJung-uk Kim int Value, 154*5ef50723SJung-uk Kim ACPI_SIZE Count); 155*5ef50723SJung-uk Kim 156*5ef50723SJung-uk Kim 157*5ef50723SJung-uk Kim /* upper/lower case */ 158*5ef50723SJung-uk Kim 159*5ef50723SJung-uk Kim int 160*5ef50723SJung-uk Kim tolower ( 161*5ef50723SJung-uk Kim int c); 162*5ef50723SJung-uk Kim 163*5ef50723SJung-uk Kim int 164*5ef50723SJung-uk Kim toupper ( 165*5ef50723SJung-uk Kim int c); 166*5ef50723SJung-uk Kim 167*5ef50723SJung-uk Kim #endif /* _ACCLIB_H */ 168