xref: /freebsd/sys/contrib/dev/acpica/include/acclib.h (revision 5ef5072350492e3ee9aff4303789fc75972b5afe)
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