xref: /freebsd/sys/contrib/dev/acpica/include/acclib.h (revision 284829482ea5f5830d817e77e52e1a8af6486e93)
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 
76493deb39SJung-uk Kim /* Error code */
77493deb39SJung-uk Kim 
78493deb39SJung-uk Kim #define EPERM            1 /* Operation not permitted */
79493deb39SJung-uk Kim #define ENOENT           2 /* No such file or directory */
80493deb39SJung-uk Kim #define EINTR            4 /* Interrupted system call */
81493deb39SJung-uk Kim #define EIO              5 /* I/O error */
82493deb39SJung-uk Kim #define EBADF            9 /* Bad file number */
83493deb39SJung-uk Kim #define EAGAIN          11 /* Try again */
84493deb39SJung-uk Kim #define ENOMEM          12 /* Out of memory */
85493deb39SJung-uk Kim #define EACCES          13 /* Permission denied */
86493deb39SJung-uk Kim #define EFAULT          14 /* Bad address */
87493deb39SJung-uk Kim #define EBUSY           16 /* Device or resource busy */
88493deb39SJung-uk Kim #define EEXIST          17 /* File exists */
89493deb39SJung-uk Kim #define ENODEV          19 /* No such device */
90493deb39SJung-uk Kim #define EINVAL          22 /* Invalid argument */
91493deb39SJung-uk Kim #define EPIPE           32 /* Broken pipe */
92493deb39SJung-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 *
107*28482948SJung-uk Kim strpbrk (
108*28482948SJung-uk Kim     const char              *String,
109*28482948SJung-uk Kim     const char              *Delimiters);
110*28482948SJung-uk Kim 
111*28482948SJung-uk Kim char *
112*28482948SJung-uk Kim strtok (
113*28482948SJung-uk Kim     char                    *String,
114*28482948SJung-uk Kim     const char              *Delimiters);
115*28482948SJung-uk Kim 
116*28482948SJung-uk Kim char *
1175ef50723SJung-uk Kim strcpy (
1185ef50723SJung-uk Kim     char                    *DstString,
1195ef50723SJung-uk Kim     const char              *SrcString);
1205ef50723SJung-uk Kim 
1215ef50723SJung-uk Kim int
1225ef50723SJung-uk Kim strcmp (
1235ef50723SJung-uk Kim     const char              *String1,
1245ef50723SJung-uk Kim     const char              *String2);
1255ef50723SJung-uk Kim 
1265ef50723SJung-uk Kim ACPI_SIZE
1275ef50723SJung-uk Kim strlen (
1285ef50723SJung-uk Kim     const char              *String);
1295ef50723SJung-uk Kim 
1305ef50723SJung-uk Kim char *
1315ef50723SJung-uk Kim strncat (
1325ef50723SJung-uk Kim     char                    *DstString,
1335ef50723SJung-uk Kim     const char              *SrcString,
1345ef50723SJung-uk Kim     ACPI_SIZE               Count);
1355ef50723SJung-uk Kim 
1365ef50723SJung-uk Kim int
1375ef50723SJung-uk Kim strncmp (
1385ef50723SJung-uk Kim     const char              *String1,
1395ef50723SJung-uk Kim     const char              *String2,
1405ef50723SJung-uk Kim     ACPI_SIZE               Count);
1415ef50723SJung-uk Kim 
1425ef50723SJung-uk Kim char *
1435ef50723SJung-uk Kim strncpy (
1445ef50723SJung-uk Kim     char                    *DstString,
1455ef50723SJung-uk Kim     const char              *SrcString,
1465ef50723SJung-uk Kim     ACPI_SIZE               Count);
1475ef50723SJung-uk Kim 
1485ef50723SJung-uk Kim char *
1495ef50723SJung-uk Kim strstr (
1505ef50723SJung-uk Kim     char                    *String1,
1515ef50723SJung-uk Kim     char                    *String2);
1525ef50723SJung-uk Kim 
1535ef50723SJung-uk Kim 
1545ef50723SJung-uk Kim /* Conversion */
1555ef50723SJung-uk Kim 
1565ef50723SJung-uk Kim UINT32
1575ef50723SJung-uk Kim strtoul (
1585ef50723SJung-uk Kim     const char              *String,
1595ef50723SJung-uk Kim     char                    **Terminator,
1605ef50723SJung-uk Kim     UINT32                  Base);
1615ef50723SJung-uk Kim 
1625ef50723SJung-uk Kim 
1635ef50723SJung-uk Kim /* Memory */
1645ef50723SJung-uk Kim 
1655ef50723SJung-uk Kim int
1665ef50723SJung-uk Kim memcmp (
1675ef50723SJung-uk Kim     void                    *Buffer1,
1685ef50723SJung-uk Kim     void                    *Buffer2,
1695ef50723SJung-uk Kim     ACPI_SIZE               Count);
1705ef50723SJung-uk Kim 
1715ef50723SJung-uk Kim void *
1725ef50723SJung-uk Kim memcpy (
1735ef50723SJung-uk Kim     void                    *Dest,
1745ef50723SJung-uk Kim     const void              *Src,
1755ef50723SJung-uk Kim     ACPI_SIZE               Count);
1765ef50723SJung-uk Kim 
1775ef50723SJung-uk Kim void *
178*28482948SJung-uk Kim memmove (
179*28482948SJung-uk Kim     void                    *Dest,
180*28482948SJung-uk Kim     const void              *Src,
181*28482948SJung-uk Kim     ACPI_SIZE               Count);
182*28482948SJung-uk Kim 
183*28482948SJung-uk Kim void *
1845ef50723SJung-uk Kim memset (
1855ef50723SJung-uk Kim     void                    *Dest,
1865ef50723SJung-uk Kim     int                     Value,
1875ef50723SJung-uk Kim     ACPI_SIZE               Count);
1885ef50723SJung-uk Kim 
1895ef50723SJung-uk Kim 
1905ef50723SJung-uk Kim /* upper/lower case */
1915ef50723SJung-uk Kim 
1925ef50723SJung-uk Kim int
1935ef50723SJung-uk Kim tolower (
1945ef50723SJung-uk Kim     int                     c);
1955ef50723SJung-uk Kim 
1965ef50723SJung-uk Kim int
1975ef50723SJung-uk Kim toupper (
1985ef50723SJung-uk Kim     int                     c);
1995ef50723SJung-uk Kim 
200493deb39SJung-uk Kim /*
201493deb39SJung-uk Kim  * utprint - printf/vprintf output functions
202493deb39SJung-uk Kim  */
203493deb39SJung-uk Kim const char *
204493deb39SJung-uk Kim AcpiUtScanNumber (
205493deb39SJung-uk Kim     const char              *String,
206493deb39SJung-uk Kim     UINT64                  *NumberPtr);
207493deb39SJung-uk Kim 
208493deb39SJung-uk Kim const char *
209493deb39SJung-uk Kim AcpiUtPrintNumber (
210493deb39SJung-uk Kim     char                    *String,
211493deb39SJung-uk Kim     UINT64                  Number);
212493deb39SJung-uk Kim 
213493deb39SJung-uk Kim int
214493deb39SJung-uk Kim vsnprintf (
215493deb39SJung-uk Kim     char                    *String,
216493deb39SJung-uk Kim     ACPI_SIZE               Size,
217493deb39SJung-uk Kim     const char              *Format,
218493deb39SJung-uk Kim     va_list                 Args);
219493deb39SJung-uk Kim 
220493deb39SJung-uk Kim int
221493deb39SJung-uk Kim snprintf (
222493deb39SJung-uk Kim     char                    *String,
223493deb39SJung-uk Kim     ACPI_SIZE               Size,
224493deb39SJung-uk Kim     const char              *Format,
225493deb39SJung-uk Kim     ...);
226493deb39SJung-uk Kim 
227493deb39SJung-uk Kim int
228493deb39SJung-uk Kim sprintf (
229493deb39SJung-uk Kim     char                    *String,
230493deb39SJung-uk Kim     const char              *Format,
231493deb39SJung-uk Kim     ...);
232493deb39SJung-uk Kim 
233493deb39SJung-uk Kim #ifdef ACPI_APPLICATION
234493deb39SJung-uk Kim #define SEEK_SET            0
235493deb39SJung-uk Kim #define SEEK_CUR            1
236493deb39SJung-uk Kim #define SEEK_END            2
237493deb39SJung-uk Kim 
238493deb39SJung-uk Kim /*
239493deb39SJung-uk Kim  * NOTE: Currently we only need to update errno for file IOs. Other
240493deb39SJung-uk Kim  *       Clibrary invocations in ACPICA do not make descisions according to
241493deb39SJung-uk Kim  *       the errno.
242493deb39SJung-uk Kim  */
243493deb39SJung-uk Kim extern int errno;
244493deb39SJung-uk Kim 
245*28482948SJung-uk Kim #ifndef EOF
246*28482948SJung-uk Kim #define EOF                 (-1)
247*28482948SJung-uk Kim #endif
248*28482948SJung-uk Kim 
249*28482948SJung-uk Kim #define putchar(c)          fputc(stdout, c)
250*28482948SJung-uk Kim #define getchar(c)          fgetc(stdin)
251*28482948SJung-uk Kim 
252493deb39SJung-uk Kim int
253493deb39SJung-uk Kim vprintf (
254493deb39SJung-uk Kim     const char              *Format,
255493deb39SJung-uk Kim     va_list                 Args);
256493deb39SJung-uk Kim 
257493deb39SJung-uk Kim int
258493deb39SJung-uk Kim printf (
259493deb39SJung-uk Kim     const char              *Format,
260493deb39SJung-uk Kim     ...);
261493deb39SJung-uk Kim 
262493deb39SJung-uk Kim int
263493deb39SJung-uk Kim vfprintf (
264493deb39SJung-uk Kim     FILE                    *File,
265493deb39SJung-uk Kim     const char              *Format,
266493deb39SJung-uk Kim     va_list                 Args);
267493deb39SJung-uk Kim 
268493deb39SJung-uk Kim int
269493deb39SJung-uk Kim fprintf (
270493deb39SJung-uk Kim     FILE                    *File,
271493deb39SJung-uk Kim     const char              *Format,
272493deb39SJung-uk Kim     ...);
273493deb39SJung-uk Kim 
274493deb39SJung-uk Kim FILE *
275493deb39SJung-uk Kim fopen (
276493deb39SJung-uk Kim     const char              *Path,
277493deb39SJung-uk Kim     const char              *Modes);
278493deb39SJung-uk Kim 
279493deb39SJung-uk Kim void
280493deb39SJung-uk Kim fclose (
281493deb39SJung-uk Kim     FILE                    *File);
282493deb39SJung-uk Kim 
283493deb39SJung-uk Kim int
284493deb39SJung-uk Kim fread (
285493deb39SJung-uk Kim     void                    *Buffer,
286493deb39SJung-uk Kim     ACPI_SIZE               Size,
287493deb39SJung-uk Kim     ACPI_SIZE               Count,
288493deb39SJung-uk Kim     FILE                    *File);
289493deb39SJung-uk Kim 
290493deb39SJung-uk Kim int
291493deb39SJung-uk Kim fwrite (
292493deb39SJung-uk Kim     void                    *Buffer,
293493deb39SJung-uk Kim     ACPI_SIZE               Size,
294493deb39SJung-uk Kim     ACPI_SIZE               Count,
295493deb39SJung-uk Kim     FILE                    *File);
296493deb39SJung-uk Kim 
297493deb39SJung-uk Kim int
298493deb39SJung-uk Kim fseek (
299493deb39SJung-uk Kim     FILE                    *File,
300493deb39SJung-uk Kim     long                    Offset,
301493deb39SJung-uk Kim     int                     From);
302493deb39SJung-uk Kim 
303493deb39SJung-uk Kim long
304493deb39SJung-uk Kim ftell (
305493deb39SJung-uk Kim     FILE                    *File);
306*28482948SJung-uk Kim 
307*28482948SJung-uk Kim int
308*28482948SJung-uk Kim fgetc (
309*28482948SJung-uk Kim     FILE                    *File);
310*28482948SJung-uk Kim 
311*28482948SJung-uk Kim int
312*28482948SJung-uk Kim fputc (
313*28482948SJung-uk Kim     FILE                    *File,
314*28482948SJung-uk Kim     char                    c);
315*28482948SJung-uk Kim 
316*28482948SJung-uk Kim char *
317*28482948SJung-uk Kim fgets (
318*28482948SJung-uk Kim     char                    *s,
319*28482948SJung-uk Kim     ACPI_SIZE               Size,
320*28482948SJung-uk Kim     FILE                    *File);
321493deb39SJung-uk Kim #endif
322493deb39SJung-uk Kim 
3235ef50723SJung-uk Kim #endif /* _ACCLIB_H */
324