xref: /freebsd/sys/contrib/dev/acpica/include/acutils.h (revision 8d744e473f37494ab59a15511ed88e473668dfe8)
1a9f12690SJung-uk Kim /******************************************************************************
2a9f12690SJung-uk Kim  *
3a9f12690SJung-uk Kim  * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
4a9f12690SJung-uk Kim  *
5a9f12690SJung-uk Kim  *****************************************************************************/
6a9f12690SJung-uk Kim 
7d244b227SJung-uk Kim /*
8efcc2a30SJung-uk Kim  * Copyright (C) 2000 - 2013, Intel Corp.
9a9f12690SJung-uk Kim  * All rights reserved.
10a9f12690SJung-uk Kim  *
11d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
12d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
13d244b227SJung-uk Kim  * are met:
14d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
15d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
16d244b227SJung-uk Kim  *    without modification.
17d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
19d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
20d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
21d244b227SJung-uk Kim  *    binary redistribution.
22d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
23d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
24d244b227SJung-uk Kim  *    from this software without specific prior written permission.
25a9f12690SJung-uk Kim  *
26d244b227SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
27d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
28d244b227SJung-uk Kim  * Software Foundation.
29a9f12690SJung-uk Kim  *
30d244b227SJung-uk Kim  * NO WARRANTY
31d244b227SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32d244b227SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33d244b227SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34d244b227SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35d244b227SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36d244b227SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37d244b227SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38d244b227SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39d244b227SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40d244b227SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41d244b227SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
42d244b227SJung-uk Kim  */
43a9f12690SJung-uk Kim 
44a9f12690SJung-uk Kim #ifndef _ACUTILS_H
45a9f12690SJung-uk Kim #define _ACUTILS_H
46a9f12690SJung-uk Kim 
47a9f12690SJung-uk Kim 
48a9f12690SJung-uk Kim extern const UINT8                      AcpiGbl_ResourceAmlSizes[];
493f0275a0SJung-uk Kim extern const UINT8                      AcpiGbl_ResourceAmlSerialBusSizes[];
50a9f12690SJung-uk Kim 
51a9f12690SJung-uk Kim /* Strings used by the disassembler and debugger resource dump routines */
52a9f12690SJung-uk Kim 
53a9f12690SJung-uk Kim #if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
54a9f12690SJung-uk Kim 
55a9f12690SJung-uk Kim extern const char                       *AcpiGbl_BmDecode[];
56a9f12690SJung-uk Kim extern const char                       *AcpiGbl_ConfigDecode[];
57a9f12690SJung-uk Kim extern const char                       *AcpiGbl_ConsumeDecode[];
58a9f12690SJung-uk Kim extern const char                       *AcpiGbl_DecDecode[];
59a9f12690SJung-uk Kim extern const char                       *AcpiGbl_HeDecode[];
60a9f12690SJung-uk Kim extern const char                       *AcpiGbl_IoDecode[];
61a9f12690SJung-uk Kim extern const char                       *AcpiGbl_LlDecode[];
62a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MaxDecode[];
63a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MemDecode[];
64a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MinDecode[];
65a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MtpDecode[];
66a9f12690SJung-uk Kim extern const char                       *AcpiGbl_RngDecode[];
67a9f12690SJung-uk Kim extern const char                       *AcpiGbl_RwDecode[];
68a9f12690SJung-uk Kim extern const char                       *AcpiGbl_ShrDecode[];
69a9f12690SJung-uk Kim extern const char                       *AcpiGbl_SizDecode[];
70a9f12690SJung-uk Kim extern const char                       *AcpiGbl_TrsDecode[];
71a9f12690SJung-uk Kim extern const char                       *AcpiGbl_TtpDecode[];
72a9f12690SJung-uk Kim extern const char                       *AcpiGbl_TypDecode[];
733f0275a0SJung-uk Kim extern const char                       *AcpiGbl_PpcDecode[];
743f0275a0SJung-uk Kim extern const char                       *AcpiGbl_IorDecode[];
753f0275a0SJung-uk Kim extern const char                       *AcpiGbl_DtsDecode[];
763f0275a0SJung-uk Kim extern const char                       *AcpiGbl_CtDecode[];
773f0275a0SJung-uk Kim extern const char                       *AcpiGbl_SbtDecode[];
783f0275a0SJung-uk Kim extern const char                       *AcpiGbl_AmDecode[];
793f0275a0SJung-uk Kim extern const char                       *AcpiGbl_SmDecode[];
803f0275a0SJung-uk Kim extern const char                       *AcpiGbl_WmDecode[];
813f0275a0SJung-uk Kim extern const char                       *AcpiGbl_CphDecode[];
823f0275a0SJung-uk Kim extern const char                       *AcpiGbl_CpoDecode[];
833f0275a0SJung-uk Kim extern const char                       *AcpiGbl_DpDecode[];
843f0275a0SJung-uk Kim extern const char                       *AcpiGbl_EdDecode[];
853f0275a0SJung-uk Kim extern const char                       *AcpiGbl_BpbDecode[];
863f0275a0SJung-uk Kim extern const char                       *AcpiGbl_SbDecode[];
873f0275a0SJung-uk Kim extern const char                       *AcpiGbl_FcDecode[];
883f0275a0SJung-uk Kim extern const char                       *AcpiGbl_PtDecode[];
89a9f12690SJung-uk Kim #endif
90a9f12690SJung-uk Kim 
91a9d8d09cSJung-uk Kim /*
92a9d8d09cSJung-uk Kim  * For the iASL compiler case, the output is redirected to stderr so that
93a9d8d09cSJung-uk Kim  * any of the various ACPI errors and warnings do not appear in the output
94a9d8d09cSJung-uk Kim  * files, for either the compiler or disassembler portions of the tool.
95a9d8d09cSJung-uk Kim  */
96a9d8d09cSJung-uk Kim #ifdef ACPI_ASL_COMPILER
97a9d8d09cSJung-uk Kim 
98a9d8d09cSJung-uk Kim #include <stdio.h>
99a9d8d09cSJung-uk Kim extern FILE                 *AcpiGbl_OutputFile;
100a9d8d09cSJung-uk Kim 
101a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN \
102a9d8d09cSJung-uk Kim     FILE                    *OutputFile = AcpiGbl_OutputFile; \
103a9d8d09cSJung-uk Kim     AcpiOsRedirectOutput (stderr);
104a9d8d09cSJung-uk Kim 
105a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END \
106a9d8d09cSJung-uk Kim     AcpiOsRedirectOutput (OutputFile);
107a9d8d09cSJung-uk Kim 
108a9d8d09cSJung-uk Kim #else
109a9d8d09cSJung-uk Kim /*
110a9d8d09cSJung-uk Kim  * non-iASL case - no redirection, nothing to do
111a9d8d09cSJung-uk Kim  */
112a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN
113a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END
114a9d8d09cSJung-uk Kim #endif
115a9d8d09cSJung-uk Kim 
116a9d8d09cSJung-uk Kim /*
117a9d8d09cSJung-uk Kim  * Common error message prefixes
118a9d8d09cSJung-uk Kim  */
119a9d8d09cSJung-uk Kim #define ACPI_MSG_ERROR          "ACPI Error: "
120a9d8d09cSJung-uk Kim #define ACPI_MSG_EXCEPTION      "ACPI Exception: "
121a9d8d09cSJung-uk Kim #define ACPI_MSG_WARNING        "ACPI Warning: "
122a9d8d09cSJung-uk Kim #define ACPI_MSG_INFO           "ACPI: "
123a9d8d09cSJung-uk Kim 
124a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_ERROR     "ACPI BIOS Error (bug): "
125a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_WARNING   "ACPI BIOS Warning (bug): "
126a9d8d09cSJung-uk Kim 
127a9d8d09cSJung-uk Kim /*
128a9d8d09cSJung-uk Kim  * Common message suffix
129a9d8d09cSJung-uk Kim  */
130a9d8d09cSJung-uk Kim #define ACPI_MSG_SUFFIX \
131a9d8d09cSJung-uk Kim     AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
132a9d8d09cSJung-uk Kim 
133a9d8d09cSJung-uk Kim 
134a9f12690SJung-uk Kim /* Types for Resource descriptor entries */
135a9f12690SJung-uk Kim 
136a9f12690SJung-uk Kim #define ACPI_INVALID_RESOURCE           0
137a9f12690SJung-uk Kim #define ACPI_FIXED_LENGTH               1
138a9f12690SJung-uk Kim #define ACPI_VARIABLE_LENGTH            2
139a9f12690SJung-uk Kim #define ACPI_SMALL_VARIABLE_LENGTH      3
140a9f12690SJung-uk Kim 
141a9f12690SJung-uk Kim typedef
142a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
143a9f12690SJung-uk Kim     UINT8                   *Aml,
144a9f12690SJung-uk Kim     UINT32                  Length,
145a9f12690SJung-uk Kim     UINT32                  Offset,
146a9f12690SJung-uk Kim     UINT8                   ResourceIndex,
147efcc2a30SJung-uk Kim     void                    **Context);
148a9f12690SJung-uk Kim 
149a9f12690SJung-uk Kim typedef
150a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_PKG_CALLBACK) (
151a9f12690SJung-uk Kim     UINT8                   ObjectType,
152a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
153a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State,
154a9f12690SJung-uk Kim     void                    *Context);
155a9f12690SJung-uk Kim 
156a9f12690SJung-uk Kim typedef struct acpi_pkg_info
157a9f12690SJung-uk Kim {
158a9f12690SJung-uk Kim     UINT8                   *FreeSpace;
159a9f12690SJung-uk Kim     ACPI_SIZE               Length;
160a9f12690SJung-uk Kim     UINT32                  ObjectSpace;
161a9f12690SJung-uk Kim     UINT32                  NumPackages;
162a9f12690SJung-uk Kim 
163a9f12690SJung-uk Kim } ACPI_PKG_INFO;
164a9f12690SJung-uk Kim 
1659c7c683cSJung-uk Kim /* Object reference counts */
1669c7c683cSJung-uk Kim 
167a9f12690SJung-uk Kim #define REF_INCREMENT       (UINT16) 0
168a9f12690SJung-uk Kim #define REF_DECREMENT       (UINT16) 1
169a9f12690SJung-uk Kim 
170a9f12690SJung-uk Kim /* AcpiUtDumpBuffer */
171a9f12690SJung-uk Kim 
172a9f12690SJung-uk Kim #define DB_BYTE_DISPLAY     1
173a9f12690SJung-uk Kim #define DB_WORD_DISPLAY     2
174a9f12690SJung-uk Kim #define DB_DWORD_DISPLAY    4
175a9f12690SJung-uk Kim #define DB_QWORD_DISPLAY    8
176a9f12690SJung-uk Kim 
177a9f12690SJung-uk Kim /*
178a9f12690SJung-uk Kim  * utglobal - Global data structures and procedures
179a9f12690SJung-uk Kim  */
180a9f12690SJung-uk Kim ACPI_STATUS
181a9f12690SJung-uk Kim AcpiUtInitGlobals (
182a9f12690SJung-uk Kim     void);
183a9f12690SJung-uk Kim 
184a9f12690SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
185a9f12690SJung-uk Kim 
186a9f12690SJung-uk Kim char *
187a9f12690SJung-uk Kim AcpiUtGetMutexName (
188a9f12690SJung-uk Kim     UINT32                  MutexId);
189a9f12690SJung-uk Kim 
190a9f12690SJung-uk Kim const char *
191a9f12690SJung-uk Kim AcpiUtGetNotifyName (
192a9f12690SJung-uk Kim     UINT32                  NotifyValue);
193a9f12690SJung-uk Kim 
194a9f12690SJung-uk Kim #endif
195a9f12690SJung-uk Kim 
196a9f12690SJung-uk Kim char *
197a9f12690SJung-uk Kim AcpiUtGetTypeName (
198a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
199a9f12690SJung-uk Kim 
200a9f12690SJung-uk Kim char *
201a9f12690SJung-uk Kim AcpiUtGetNodeName (
202a9f12690SJung-uk Kim     void                    *Object);
203a9f12690SJung-uk Kim 
204a9f12690SJung-uk Kim char *
205a9f12690SJung-uk Kim AcpiUtGetDescriptorName (
206a9f12690SJung-uk Kim     void                    *Object);
207a9f12690SJung-uk Kim 
208a9f12690SJung-uk Kim const char *
209a9f12690SJung-uk Kim AcpiUtGetReferenceName (
210a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
211a9f12690SJung-uk Kim 
212a9f12690SJung-uk Kim char *
213a9f12690SJung-uk Kim AcpiUtGetObjectTypeName (
214a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc);
215a9f12690SJung-uk Kim 
216a9f12690SJung-uk Kim char *
217a9f12690SJung-uk Kim AcpiUtGetRegionName (
218a9f12690SJung-uk Kim     UINT8                   SpaceId);
219a9f12690SJung-uk Kim 
220a9f12690SJung-uk Kim char *
221a9f12690SJung-uk Kim AcpiUtGetEventName (
222a9f12690SJung-uk Kim     UINT32                  EventId);
223a9f12690SJung-uk Kim 
224a9f12690SJung-uk Kim char
225a9f12690SJung-uk Kim AcpiUtHexToAsciiChar (
2269a179dd8SJung-uk Kim     UINT64                  Integer,
227a9f12690SJung-uk Kim     UINT32                  Position);
228a9f12690SJung-uk Kim 
229a9f12690SJung-uk Kim BOOLEAN
230a9f12690SJung-uk Kim AcpiUtValidObjectType (
231a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
232a9f12690SJung-uk Kim 
233a9f12690SJung-uk Kim 
234a9f12690SJung-uk Kim /*
235a9f12690SJung-uk Kim  * utinit - miscellaneous initialization and shutdown
236a9f12690SJung-uk Kim  */
237a9f12690SJung-uk Kim ACPI_STATUS
238a9f12690SJung-uk Kim AcpiUtHardwareInitialize (
239a9f12690SJung-uk Kim     void);
240a9f12690SJung-uk Kim 
241a9f12690SJung-uk Kim void
242a9f12690SJung-uk Kim AcpiUtSubsystemShutdown (
243a9f12690SJung-uk Kim     void);
244a9f12690SJung-uk Kim 
245a9f12690SJung-uk Kim 
246a9f12690SJung-uk Kim /*
247a9f12690SJung-uk Kim  * utclib - Local implementations of C library functions
248a9f12690SJung-uk Kim  */
249a9f12690SJung-uk Kim #ifndef ACPI_USE_SYSTEM_CLIBRARY
250a9f12690SJung-uk Kim 
251a9f12690SJung-uk Kim ACPI_SIZE
252a9f12690SJung-uk Kim AcpiUtStrlen (
253a9f12690SJung-uk Kim     const char              *String);
254a9f12690SJung-uk Kim 
255a9f12690SJung-uk Kim char *
256a9f12690SJung-uk Kim AcpiUtStrcpy (
257a9f12690SJung-uk Kim     char                    *DstString,
258a9f12690SJung-uk Kim     const char              *SrcString);
259a9f12690SJung-uk Kim 
260a9f12690SJung-uk Kim char *
261a9f12690SJung-uk Kim AcpiUtStrncpy (
262a9f12690SJung-uk Kim     char                    *DstString,
263a9f12690SJung-uk Kim     const char              *SrcString,
264a9f12690SJung-uk Kim     ACPI_SIZE               Count);
265a9f12690SJung-uk Kim 
266a9f12690SJung-uk Kim int
267a9f12690SJung-uk Kim AcpiUtMemcmp (
268a9f12690SJung-uk Kim     const char              *Buffer1,
269a9f12690SJung-uk Kim     const char              *Buffer2,
270a9f12690SJung-uk Kim     ACPI_SIZE               Count);
271a9f12690SJung-uk Kim 
272a9f12690SJung-uk Kim int
273a9f12690SJung-uk Kim AcpiUtStrncmp (
274a9f12690SJung-uk Kim     const char              *String1,
275a9f12690SJung-uk Kim     const char              *String2,
276a9f12690SJung-uk Kim     ACPI_SIZE               Count);
277a9f12690SJung-uk Kim 
278a9f12690SJung-uk Kim int
279a9f12690SJung-uk Kim AcpiUtStrcmp (
280a9f12690SJung-uk Kim     const char              *String1,
281a9f12690SJung-uk Kim     const char              *String2);
282a9f12690SJung-uk Kim 
283a9f12690SJung-uk Kim char *
284a9f12690SJung-uk Kim AcpiUtStrcat (
285a9f12690SJung-uk Kim     char                    *DstString,
286a9f12690SJung-uk Kim     const char              *SrcString);
287a9f12690SJung-uk Kim 
288a9f12690SJung-uk Kim char *
289a9f12690SJung-uk Kim AcpiUtStrncat (
290a9f12690SJung-uk Kim     char                    *DstString,
291a9f12690SJung-uk Kim     const char              *SrcString,
292a9f12690SJung-uk Kim     ACPI_SIZE               Count);
293a9f12690SJung-uk Kim 
294a9f12690SJung-uk Kim UINT32
295a9f12690SJung-uk Kim AcpiUtStrtoul (
296a9f12690SJung-uk Kim     const char              *String,
297a9f12690SJung-uk Kim     char                    **Terminator,
298a9f12690SJung-uk Kim     UINT32                  Base);
299a9f12690SJung-uk Kim 
300a9f12690SJung-uk Kim char *
301a9f12690SJung-uk Kim AcpiUtStrstr (
302a9f12690SJung-uk Kim     char                    *String1,
303a9f12690SJung-uk Kim     char                    *String2);
304a9f12690SJung-uk Kim 
305a9f12690SJung-uk Kim void *
306a9f12690SJung-uk Kim AcpiUtMemcpy (
307a9f12690SJung-uk Kim     void                    *Dest,
308a9f12690SJung-uk Kim     const void              *Src,
309a9f12690SJung-uk Kim     ACPI_SIZE               Count);
310a9f12690SJung-uk Kim 
311a9f12690SJung-uk Kim void *
312a9f12690SJung-uk Kim AcpiUtMemset (
313a9f12690SJung-uk Kim     void                    *Dest,
314a9f12690SJung-uk Kim     UINT8                   Value,
315a9f12690SJung-uk Kim     ACPI_SIZE               Count);
316a9f12690SJung-uk Kim 
317a9f12690SJung-uk Kim int
318a9f12690SJung-uk Kim AcpiUtToUpper (
319a9f12690SJung-uk Kim     int                     c);
320a9f12690SJung-uk Kim 
321a9f12690SJung-uk Kim int
322a9f12690SJung-uk Kim AcpiUtToLower (
323a9f12690SJung-uk Kim     int                     c);
324a9f12690SJung-uk Kim 
325a9f12690SJung-uk Kim extern const UINT8 _acpi_ctype[];
326a9f12690SJung-uk Kim 
327a9f12690SJung-uk Kim #define _ACPI_XA     0x00    /* extra alphabetic - not supported */
328a9f12690SJung-uk Kim #define _ACPI_XS     0x40    /* extra space */
329a9f12690SJung-uk Kim #define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
330a9f12690SJung-uk Kim #define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
331a9f12690SJung-uk Kim #define _ACPI_DI     0x04    /* '0'-'9' */
332a9f12690SJung-uk Kim #define _ACPI_LO     0x02    /* 'a'-'z' */
333a9f12690SJung-uk Kim #define _ACPI_PU     0x10    /* punctuation */
334a9f12690SJung-uk Kim #define _ACPI_SP     0x08    /* space */
335a9f12690SJung-uk Kim #define _ACPI_UP     0x01    /* 'A'-'Z' */
336a9f12690SJung-uk Kim #define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
337a9f12690SJung-uk Kim 
338a9f12690SJung-uk Kim #define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
339a9f12690SJung-uk Kim #define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
340a9f12690SJung-uk Kim #define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
341a9f12690SJung-uk Kim #define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
342a9f12690SJung-uk Kim #define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
343a9f12690SJung-uk Kim #define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
344a9f12690SJung-uk Kim #define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
345a9f12690SJung-uk Kim 
346a9f12690SJung-uk Kim #endif /* !ACPI_USE_SYSTEM_CLIBRARY */
347a9f12690SJung-uk Kim 
348a9f12690SJung-uk Kim #define ACPI_IS_ASCII(c)  ((c) < 0x80)
349a9f12690SJung-uk Kim 
350a9f12690SJung-uk Kim 
351a9f12690SJung-uk Kim /*
352a9f12690SJung-uk Kim  * utcopy - Object construction and conversion interfaces
353a9f12690SJung-uk Kim  */
354a9f12690SJung-uk Kim ACPI_STATUS
355a9f12690SJung-uk Kim AcpiUtBuildSimpleObject(
356a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
357a9f12690SJung-uk Kim     ACPI_OBJECT             *UserObj,
358a9f12690SJung-uk Kim     UINT8                   *DataSpace,
359a9f12690SJung-uk Kim     UINT32                  *BufferSpaceUsed);
360a9f12690SJung-uk Kim 
361a9f12690SJung-uk Kim ACPI_STATUS
362a9f12690SJung-uk Kim AcpiUtBuildPackageObject (
363a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
364a9f12690SJung-uk Kim     UINT8                   *Buffer,
365a9f12690SJung-uk Kim     UINT32                  *SpaceUsed);
366a9f12690SJung-uk Kim 
367a9f12690SJung-uk Kim ACPI_STATUS
368a9f12690SJung-uk Kim AcpiUtCopyIobjectToEobject (
369a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
370a9f12690SJung-uk Kim     ACPI_BUFFER             *RetBuffer);
371a9f12690SJung-uk Kim 
372a9f12690SJung-uk Kim ACPI_STATUS
373a9f12690SJung-uk Kim AcpiUtCopyEobjectToIobject (
374a9f12690SJung-uk Kim     ACPI_OBJECT             *Obj,
375a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **InternalObj);
376a9f12690SJung-uk Kim 
377a9f12690SJung-uk Kim ACPI_STATUS
378a9f12690SJung-uk Kim AcpiUtCopyISimpleToIsimple (
379a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObj,
380a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *DestObj);
381a9f12690SJung-uk Kim 
382a9f12690SJung-uk Kim ACPI_STATUS
383a9f12690SJung-uk Kim AcpiUtCopyIobjectToIobject (
384a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceDesc,
385a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **DestDesc,
386a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
387a9f12690SJung-uk Kim 
388a9f12690SJung-uk Kim 
389a9f12690SJung-uk Kim /*
390a9f12690SJung-uk Kim  * utcreate - Object creation
391a9f12690SJung-uk Kim  */
392a9f12690SJung-uk Kim ACPI_STATUS
393a9f12690SJung-uk Kim AcpiUtUpdateObjectReference (
394a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
395a9f12690SJung-uk Kim     UINT16                  Action);
396a9f12690SJung-uk Kim 
397a9f12690SJung-uk Kim 
398a9f12690SJung-uk Kim /*
399a9f12690SJung-uk Kim  * utdebug - Debug interfaces
400a9f12690SJung-uk Kim  */
401a9f12690SJung-uk Kim void
402a9f12690SJung-uk Kim AcpiUtInitStackPtrTrace (
403a9f12690SJung-uk Kim     void);
404a9f12690SJung-uk Kim 
405a9f12690SJung-uk Kim void
406a9f12690SJung-uk Kim AcpiUtTrackStackPtr (
407a9f12690SJung-uk Kim     void);
408a9f12690SJung-uk Kim 
409a9f12690SJung-uk Kim void
410a9f12690SJung-uk Kim AcpiUtTrace (
411a9f12690SJung-uk Kim     UINT32                  LineNumber,
412a9f12690SJung-uk Kim     const char              *FunctionName,
413a9f12690SJung-uk Kim     const char              *ModuleName,
414a9f12690SJung-uk Kim     UINT32                  ComponentId);
415a9f12690SJung-uk Kim 
416a9f12690SJung-uk Kim void
417a9f12690SJung-uk Kim AcpiUtTracePtr (
418a9f12690SJung-uk Kim     UINT32                  LineNumber,
419a9f12690SJung-uk Kim     const char              *FunctionName,
420a9f12690SJung-uk Kim     const char              *ModuleName,
421a9f12690SJung-uk Kim     UINT32                  ComponentId,
422a9f12690SJung-uk Kim     void                    *Pointer);
423a9f12690SJung-uk Kim 
424a9f12690SJung-uk Kim void
425a9f12690SJung-uk Kim AcpiUtTraceU32 (
426a9f12690SJung-uk Kim     UINT32                  LineNumber,
427a9f12690SJung-uk Kim     const char              *FunctionName,
428a9f12690SJung-uk Kim     const char              *ModuleName,
429a9f12690SJung-uk Kim     UINT32                  ComponentId,
430a9f12690SJung-uk Kim     UINT32                  Integer);
431a9f12690SJung-uk Kim 
432a9f12690SJung-uk Kim void
433a9f12690SJung-uk Kim AcpiUtTraceStr (
434a9f12690SJung-uk Kim     UINT32                  LineNumber,
435a9f12690SJung-uk Kim     const char              *FunctionName,
436a9f12690SJung-uk Kim     const char              *ModuleName,
437a9f12690SJung-uk Kim     UINT32                  ComponentId,
438a9f12690SJung-uk Kim     char                    *String);
439a9f12690SJung-uk Kim 
440a9f12690SJung-uk Kim void
441a9f12690SJung-uk Kim AcpiUtExit (
442a9f12690SJung-uk Kim     UINT32                  LineNumber,
443a9f12690SJung-uk Kim     const char              *FunctionName,
444a9f12690SJung-uk Kim     const char              *ModuleName,
445a9f12690SJung-uk Kim     UINT32                  ComponentId);
446a9f12690SJung-uk Kim 
447a9f12690SJung-uk Kim void
448a9f12690SJung-uk Kim AcpiUtStatusExit (
449a9f12690SJung-uk Kim     UINT32                  LineNumber,
450a9f12690SJung-uk Kim     const char              *FunctionName,
451a9f12690SJung-uk Kim     const char              *ModuleName,
452a9f12690SJung-uk Kim     UINT32                  ComponentId,
453a9f12690SJung-uk Kim     ACPI_STATUS             Status);
454a9f12690SJung-uk Kim 
455a9f12690SJung-uk Kim void
456a9f12690SJung-uk Kim AcpiUtValueExit (
457a9f12690SJung-uk Kim     UINT32                  LineNumber,
458a9f12690SJung-uk Kim     const char              *FunctionName,
459a9f12690SJung-uk Kim     const char              *ModuleName,
460a9f12690SJung-uk Kim     UINT32                  ComponentId,
4619a179dd8SJung-uk Kim     UINT64                  Value);
462a9f12690SJung-uk Kim 
463a9f12690SJung-uk Kim void
464a9f12690SJung-uk Kim AcpiUtPtrExit (
465a9f12690SJung-uk Kim     UINT32                  LineNumber,
466a9f12690SJung-uk Kim     const char              *FunctionName,
467a9f12690SJung-uk Kim     const char              *ModuleName,
468a9f12690SJung-uk Kim     UINT32                  ComponentId,
469a9f12690SJung-uk Kim     UINT8                   *Ptr);
470a9f12690SJung-uk Kim 
471a9f12690SJung-uk Kim void
4728ef1a331SJung-uk Kim AcpiUtDebugDumpBuffer (
473a9f12690SJung-uk Kim     UINT8                   *Buffer,
474a9f12690SJung-uk Kim     UINT32                  Count,
475a9f12690SJung-uk Kim     UINT32                  Display,
476f38b0f21SJung-uk Kim     UINT32                  ComponentId);
477a9f12690SJung-uk Kim 
478a9f12690SJung-uk Kim void
4798ef1a331SJung-uk Kim AcpiUtDumpBuffer (
480a9f12690SJung-uk Kim     UINT8                   *Buffer,
481a9f12690SJung-uk Kim     UINT32                  Count,
4828ef1a331SJung-uk Kim     UINT32                  Display,
4838ef1a331SJung-uk Kim     UINT32                  Offset);
484a9f12690SJung-uk Kim 
485a9f12690SJung-uk Kim void
486a9f12690SJung-uk Kim AcpiUtReportError (
487a9f12690SJung-uk Kim     char                    *ModuleName,
488a9f12690SJung-uk Kim     UINT32                  LineNumber);
489a9f12690SJung-uk Kim 
490a9f12690SJung-uk Kim void
491a9f12690SJung-uk Kim AcpiUtReportInfo (
492a9f12690SJung-uk Kim     char                    *ModuleName,
493a9f12690SJung-uk Kim     UINT32                  LineNumber);
494a9f12690SJung-uk Kim 
495a9f12690SJung-uk Kim void
496a9f12690SJung-uk Kim AcpiUtReportWarning (
497a9f12690SJung-uk Kim     char                    *ModuleName,
498a9f12690SJung-uk Kim     UINT32                  LineNumber);
499a9f12690SJung-uk Kim 
500a9f12690SJung-uk Kim /*
501a9f12690SJung-uk Kim  * utdelete - Object deletion and reference counts
502a9f12690SJung-uk Kim  */
503a9f12690SJung-uk Kim void
504a9f12690SJung-uk Kim AcpiUtAddReference (
505a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
506a9f12690SJung-uk Kim 
507a9f12690SJung-uk Kim void
508a9f12690SJung-uk Kim AcpiUtRemoveReference (
509a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
510a9f12690SJung-uk Kim 
511a9f12690SJung-uk Kim void
512a9f12690SJung-uk Kim AcpiUtDeleteInternalPackageObject (
513a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
514a9f12690SJung-uk Kim 
515a9f12690SJung-uk Kim void
516a9f12690SJung-uk Kim AcpiUtDeleteInternalSimpleObject (
517a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
518a9f12690SJung-uk Kim 
519a9f12690SJung-uk Kim void
520a9f12690SJung-uk Kim AcpiUtDeleteInternalObjectList (
521a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ObjList);
522a9f12690SJung-uk Kim 
523a9f12690SJung-uk Kim 
524a9f12690SJung-uk Kim /*
525a9f12690SJung-uk Kim  * uteval - object evaluation
526a9f12690SJung-uk Kim  */
527a9f12690SJung-uk Kim ACPI_STATUS
528a9f12690SJung-uk Kim AcpiUtEvaluateObject (
529a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *PrefixNode,
530a9f12690SJung-uk Kim     char                    *Path,
531a9f12690SJung-uk Kim     UINT32                  ExpectedReturnBtypes,
532a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ReturnDesc);
533a9f12690SJung-uk Kim 
534a9f12690SJung-uk Kim ACPI_STATUS
535a9f12690SJung-uk Kim AcpiUtEvaluateNumericObject (
536a9f12690SJung-uk Kim     char                    *ObjectName,
537a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5389a179dd8SJung-uk Kim     UINT64                  *Value);
539a9f12690SJung-uk Kim 
540a9f12690SJung-uk Kim ACPI_STATUS
541a9f12690SJung-uk Kim AcpiUtExecute_STA (
542a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
543a9f12690SJung-uk Kim     UINT32                  *StatusFlags);
544a9f12690SJung-uk Kim 
545a9f12690SJung-uk Kim ACPI_STATUS
546d6dd1baeSJung-uk Kim AcpiUtExecutePowerMethods (
547a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
548d6dd1baeSJung-uk Kim     const char              **MethodNames,
549d6dd1baeSJung-uk Kim     UINT8                   MethodCount,
550d6dd1baeSJung-uk Kim     UINT8                   *OutValues);
551d6dd1baeSJung-uk Kim 
552d6dd1baeSJung-uk Kim 
553d6dd1baeSJung-uk Kim /*
554d6dd1baeSJung-uk Kim  * utids - device ID support
555d6dd1baeSJung-uk Kim  */
556d6dd1baeSJung-uk Kim ACPI_STATUS
557d6dd1baeSJung-uk Kim AcpiUtExecute_HID (
558d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5598ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
560a9f12690SJung-uk Kim 
561a9f12690SJung-uk Kim ACPI_STATUS
562d6dd1baeSJung-uk Kim AcpiUtExecute_UID (
563a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5648ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
5658ef1a331SJung-uk Kim 
5668ef1a331SJung-uk Kim ACPI_STATUS
5678ef1a331SJung-uk Kim AcpiUtExecute_SUB (
5688ef1a331SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5698ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
570d6dd1baeSJung-uk Kim 
571d6dd1baeSJung-uk Kim ACPI_STATUS
572d6dd1baeSJung-uk Kim AcpiUtExecute_CID (
573d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5748ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
575d6dd1baeSJung-uk Kim 
576a9f12690SJung-uk Kim 
577a9f12690SJung-uk Kim /*
578a9f12690SJung-uk Kim  * utlock - reader/writer locks
579a9f12690SJung-uk Kim  */
580a9f12690SJung-uk Kim ACPI_STATUS
581a9f12690SJung-uk Kim AcpiUtCreateRwLock (
582a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
583a9f12690SJung-uk Kim 
584a9f12690SJung-uk Kim void
585a9f12690SJung-uk Kim AcpiUtDeleteRwLock (
586a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
587a9f12690SJung-uk Kim 
588a9f12690SJung-uk Kim ACPI_STATUS
589a9f12690SJung-uk Kim AcpiUtAcquireReadLock (
590a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
591a9f12690SJung-uk Kim 
592a9f12690SJung-uk Kim ACPI_STATUS
593a9f12690SJung-uk Kim AcpiUtReleaseReadLock (
594a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
595a9f12690SJung-uk Kim 
596a9f12690SJung-uk Kim ACPI_STATUS
597a9f12690SJung-uk Kim AcpiUtAcquireWriteLock (
598a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
599a9f12690SJung-uk Kim 
600a9f12690SJung-uk Kim void
601a9f12690SJung-uk Kim AcpiUtReleaseWriteLock (
602a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
603a9f12690SJung-uk Kim 
604a9f12690SJung-uk Kim 
605a9f12690SJung-uk Kim /*
606a9f12690SJung-uk Kim  * utobject - internal object create/delete/cache routines
607a9f12690SJung-uk Kim  */
608a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT  *
609a9f12690SJung-uk Kim AcpiUtCreateInternalObjectDbg (
610a9f12690SJung-uk Kim     const char              *ModuleName,
611a9f12690SJung-uk Kim     UINT32                  LineNumber,
612a9f12690SJung-uk Kim     UINT32                  ComponentId,
613a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
614a9f12690SJung-uk Kim 
615a9f12690SJung-uk Kim void *
616a9f12690SJung-uk Kim AcpiUtAllocateObjectDescDbg (
617a9f12690SJung-uk Kim     const char              *ModuleName,
618a9f12690SJung-uk Kim     UINT32                  LineNumber,
619a9f12690SJung-uk Kim     UINT32                  ComponentId);
620a9f12690SJung-uk Kim 
621a9f12690SJung-uk Kim #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
622a9f12690SJung-uk Kim #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
623a9f12690SJung-uk Kim 
624a9f12690SJung-uk Kim void
625a9f12690SJung-uk Kim AcpiUtDeleteObjectDesc (
626a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
627a9f12690SJung-uk Kim 
628a9f12690SJung-uk Kim BOOLEAN
629a9f12690SJung-uk Kim AcpiUtValidInternalObject (
630a9f12690SJung-uk Kim     void                    *Object);
631a9f12690SJung-uk Kim 
632a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
633a9f12690SJung-uk Kim AcpiUtCreatePackageObject (
634a9f12690SJung-uk Kim     UINT32                  Count);
635a9f12690SJung-uk Kim 
636a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
6372272d050SJung-uk Kim AcpiUtCreateIntegerObject (
6382272d050SJung-uk Kim     UINT64                  Value);
6392272d050SJung-uk Kim 
6402272d050SJung-uk Kim ACPI_OPERAND_OBJECT *
641a9f12690SJung-uk Kim AcpiUtCreateBufferObject (
642a9f12690SJung-uk Kim     ACPI_SIZE               BufferSize);
643a9f12690SJung-uk Kim 
644a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
645a9f12690SJung-uk Kim AcpiUtCreateStringObject (
646a9f12690SJung-uk Kim     ACPI_SIZE               StringSize);
647a9f12690SJung-uk Kim 
648a9f12690SJung-uk Kim ACPI_STATUS
649a9f12690SJung-uk Kim AcpiUtGetObjectSize(
650a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
651a9f12690SJung-uk Kim     ACPI_SIZE               *ObjLength);
652a9f12690SJung-uk Kim 
653a9f12690SJung-uk Kim 
654a9f12690SJung-uk Kim /*
655709fac06SJung-uk Kim  * utosi - Support for the _OSI predefined control method
656709fac06SJung-uk Kim  */
657709fac06SJung-uk Kim ACPI_STATUS
658709fac06SJung-uk Kim AcpiUtInitializeInterfaces (
659709fac06SJung-uk Kim     void);
660709fac06SJung-uk Kim 
6619c7c683cSJung-uk Kim ACPI_STATUS
662709fac06SJung-uk Kim AcpiUtInterfaceTerminate (
663709fac06SJung-uk Kim     void);
664709fac06SJung-uk Kim 
665709fac06SJung-uk Kim ACPI_STATUS
666709fac06SJung-uk Kim AcpiUtInstallInterface (
667709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
668709fac06SJung-uk Kim 
669709fac06SJung-uk Kim ACPI_STATUS
670709fac06SJung-uk Kim AcpiUtRemoveInterface (
671709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
672709fac06SJung-uk Kim 
673709fac06SJung-uk Kim ACPI_INTERFACE_INFO *
674709fac06SJung-uk Kim AcpiUtGetInterface (
675709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
676709fac06SJung-uk Kim 
677709fac06SJung-uk Kim ACPI_STATUS
678709fac06SJung-uk Kim AcpiUtOsiImplementation (
679709fac06SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
680709fac06SJung-uk Kim 
681709fac06SJung-uk Kim 
682709fac06SJung-uk Kim /*
6839c7c683cSJung-uk Kim  * utpredef - support for predefined names
6849c7c683cSJung-uk Kim  */
6859c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6869c7c683cSJung-uk Kim AcpiUtGetNextPredefinedMethod (
6879c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName);
6889c7c683cSJung-uk Kim 
6899c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6909c7c683cSJung-uk Kim AcpiUtMatchPredefinedMethod (
6919c7c683cSJung-uk Kim     char                        *Name);
6929c7c683cSJung-uk Kim 
6939c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6949c7c683cSJung-uk Kim AcpiUtMatchResourceName (
6959c7c683cSJung-uk Kim     char                        *Name);
6969c7c683cSJung-uk Kim 
6979c7c683cSJung-uk Kim void
6989c7c683cSJung-uk Kim AcpiUtDisplayPredefinedMethod (
6999c7c683cSJung-uk Kim     char                        *Buffer,
7009c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName,
7019c7c683cSJung-uk Kim     BOOLEAN                     MultiLine);
7029c7c683cSJung-uk Kim 
7039c7c683cSJung-uk Kim void
7049c7c683cSJung-uk Kim AcpiUtGetExpectedReturnTypes (
7059c7c683cSJung-uk Kim     char                    *Buffer,
7069c7c683cSJung-uk Kim     UINT32                  ExpectedBtypes);
7079c7c683cSJung-uk Kim 
7089c7c683cSJung-uk Kim UINT32
7099c7c683cSJung-uk Kim AcpiUtGetResourceBitWidth (
7109c7c683cSJung-uk Kim     char                    *Buffer,
7119c7c683cSJung-uk Kim     UINT16                  Types);
7129c7c683cSJung-uk Kim 
7139c7c683cSJung-uk Kim 
7149c7c683cSJung-uk Kim /*
715a9f12690SJung-uk Kim  * utstate - Generic state creation/cache routines
716a9f12690SJung-uk Kim  */
717a9f12690SJung-uk Kim void
718a9f12690SJung-uk Kim AcpiUtPushGenericState (
719a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead,
720a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
721a9f12690SJung-uk Kim 
722a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
723a9f12690SJung-uk Kim AcpiUtPopGenericState (
724a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead);
725a9f12690SJung-uk Kim 
726a9f12690SJung-uk Kim 
727a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
728a9f12690SJung-uk Kim AcpiUtCreateGenericState (
729a9f12690SJung-uk Kim     void);
730a9f12690SJung-uk Kim 
731a9f12690SJung-uk Kim ACPI_THREAD_STATE *
732a9f12690SJung-uk Kim AcpiUtCreateThreadState (
733a9f12690SJung-uk Kim     void);
734a9f12690SJung-uk Kim 
735a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
736a9f12690SJung-uk Kim AcpiUtCreateUpdateState (
737a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
738a9f12690SJung-uk Kim     UINT16                  Action);
739a9f12690SJung-uk Kim 
740a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
741a9f12690SJung-uk Kim AcpiUtCreatePkgState (
742a9f12690SJung-uk Kim     void                    *InternalObject,
743a9f12690SJung-uk Kim     void                    *ExternalObject,
744a9f12690SJung-uk Kim     UINT16                  Index);
745a9f12690SJung-uk Kim 
746a9f12690SJung-uk Kim ACPI_STATUS
747a9f12690SJung-uk Kim AcpiUtCreateUpdateStateAndPush (
748a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
749a9f12690SJung-uk Kim     UINT16                  Action,
750a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
751a9f12690SJung-uk Kim 
752a9f12690SJung-uk Kim ACPI_STATUS
753a9f12690SJung-uk Kim AcpiUtCreatePkgStateAndPush (
754a9f12690SJung-uk Kim     void                    *InternalObject,
755a9f12690SJung-uk Kim     void                    *ExternalObject,
756a9f12690SJung-uk Kim     UINT16                  Index,
757a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
758a9f12690SJung-uk Kim 
759a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
760a9f12690SJung-uk Kim AcpiUtCreateControlState (
761a9f12690SJung-uk Kim     void);
762a9f12690SJung-uk Kim 
763a9f12690SJung-uk Kim void
764a9f12690SJung-uk Kim AcpiUtDeleteGenericState (
765a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
766a9f12690SJung-uk Kim 
767a9f12690SJung-uk Kim 
768a9f12690SJung-uk Kim /*
769a9f12690SJung-uk Kim  * utmath
770a9f12690SJung-uk Kim  */
771a9f12690SJung-uk Kim ACPI_STATUS
772a9f12690SJung-uk Kim AcpiUtDivide (
7739a179dd8SJung-uk Kim     UINT64                  InDividend,
7749a179dd8SJung-uk Kim     UINT64                  InDivisor,
7759a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
7769a179dd8SJung-uk Kim     UINT64                  *OutRemainder);
777a9f12690SJung-uk Kim 
778a9f12690SJung-uk Kim ACPI_STATUS
779a9f12690SJung-uk Kim AcpiUtShortDivide (
7809a179dd8SJung-uk Kim     UINT64                  InDividend,
781a9f12690SJung-uk Kim     UINT32                  Divisor,
7829a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
783a9f12690SJung-uk Kim     UINT32                  *OutRemainder);
784a9f12690SJung-uk Kim 
7859c48c75eSJung-uk Kim 
786a9f12690SJung-uk Kim /*
787a9f12690SJung-uk Kim  * utmisc
788a9f12690SJung-uk Kim  */
7899c48c75eSJung-uk Kim const ACPI_EXCEPTION_INFO *
790a9f12690SJung-uk Kim AcpiUtValidateException (
791a9f12690SJung-uk Kim     ACPI_STATUS             Status);
792a9f12690SJung-uk Kim 
793a9f12690SJung-uk Kim BOOLEAN
794d6dd1baeSJung-uk Kim AcpiUtIsPciRootBridge (
795d6dd1baeSJung-uk Kim     char                    *Id);
796d6dd1baeSJung-uk Kim 
797d6dd1baeSJung-uk Kim BOOLEAN
798a9f12690SJung-uk Kim AcpiUtIsAmlTable (
799a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       *Table);
800a9f12690SJung-uk Kim 
801a9f12690SJung-uk Kim ACPI_STATUS
802a9f12690SJung-uk Kim AcpiUtWalkPackageTree (
803a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
804a9f12690SJung-uk Kim     void                    *TargetObject,
805a9f12690SJung-uk Kim     ACPI_PKG_CALLBACK       WalkCallback,
806a9f12690SJung-uk Kim     void                    *Context);
807a9f12690SJung-uk Kim 
808a9f12690SJung-uk Kim 
809a9f12690SJung-uk Kim /* Values for Base above (16=Hex, 10=Decimal) */
810a9f12690SJung-uk Kim 
811a9f12690SJung-uk Kim #define ACPI_ANY_BASE        0
812a9f12690SJung-uk Kim 
813a9f12690SJung-uk Kim UINT32
814a9f12690SJung-uk Kim AcpiUtDwordByteSwap (
815a9f12690SJung-uk Kim     UINT32                  Value);
816a9f12690SJung-uk Kim 
817a9f12690SJung-uk Kim void
818a9f12690SJung-uk Kim AcpiUtSetIntegerWidth (
819a9f12690SJung-uk Kim     UINT8                   Revision);
820a9f12690SJung-uk Kim 
821a9f12690SJung-uk Kim #ifdef ACPI_DEBUG_OUTPUT
822a9f12690SJung-uk Kim void
823a9f12690SJung-uk Kim AcpiUtDisplayInitPathname (
824a9f12690SJung-uk Kim     UINT8                   Type,
825a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *ObjHandle,
826a9f12690SJung-uk Kim     char                    *Path);
827a9f12690SJung-uk Kim #endif
828a9f12690SJung-uk Kim 
829a9f12690SJung-uk Kim 
830a9f12690SJung-uk Kim /*
831efcc2a30SJung-uk Kim  * utownerid - Support for Table/Method Owner IDs
832efcc2a30SJung-uk Kim  */
833efcc2a30SJung-uk Kim ACPI_STATUS
834efcc2a30SJung-uk Kim AcpiUtAllocateOwnerId (
835efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
836efcc2a30SJung-uk Kim 
837efcc2a30SJung-uk Kim void
838efcc2a30SJung-uk Kim AcpiUtReleaseOwnerId (
839efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
840efcc2a30SJung-uk Kim 
841efcc2a30SJung-uk Kim 
842efcc2a30SJung-uk Kim /*
843a9f12690SJung-uk Kim  * utresrc
844a9f12690SJung-uk Kim  */
845a9f12690SJung-uk Kim ACPI_STATUS
846a9f12690SJung-uk Kim AcpiUtWalkAmlResources (
847ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
848a9f12690SJung-uk Kim     UINT8                   *Aml,
849a9f12690SJung-uk Kim     ACPI_SIZE               AmlLength,
850a9f12690SJung-uk Kim     ACPI_WALK_AML_CALLBACK  UserFunction,
851efcc2a30SJung-uk Kim     void                    **Context);
852a9f12690SJung-uk Kim 
853a9f12690SJung-uk Kim ACPI_STATUS
854a9f12690SJung-uk Kim AcpiUtValidateResource (
855ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
856a9f12690SJung-uk Kim     void                    *Aml,
857a9f12690SJung-uk Kim     UINT8                   *ReturnIndex);
858a9f12690SJung-uk Kim 
859a9f12690SJung-uk Kim UINT32
860a9f12690SJung-uk Kim AcpiUtGetDescriptorLength (
861a9f12690SJung-uk Kim     void                    *Aml);
862a9f12690SJung-uk Kim 
863a9f12690SJung-uk Kim UINT16
864a9f12690SJung-uk Kim AcpiUtGetResourceLength (
865a9f12690SJung-uk Kim     void                    *Aml);
866a9f12690SJung-uk Kim 
867a9f12690SJung-uk Kim UINT8
868a9f12690SJung-uk Kim AcpiUtGetResourceHeaderLength (
869a9f12690SJung-uk Kim     void                    *Aml);
870a9f12690SJung-uk Kim 
871a9f12690SJung-uk Kim UINT8
872a9f12690SJung-uk Kim AcpiUtGetResourceType (
873a9f12690SJung-uk Kim     void                    *Aml);
874a9f12690SJung-uk Kim 
875a9f12690SJung-uk Kim ACPI_STATUS
876a9f12690SJung-uk Kim AcpiUtGetResourceEndTag (
877a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc,
878a9f12690SJung-uk Kim     UINT8                   **EndTag);
879a9f12690SJung-uk Kim 
880a9f12690SJung-uk Kim 
881a9f12690SJung-uk Kim /*
882efcc2a30SJung-uk Kim  * utstring - String and character utilities
883efcc2a30SJung-uk Kim  */
884efcc2a30SJung-uk Kim void
885efcc2a30SJung-uk Kim AcpiUtStrupr (
886efcc2a30SJung-uk Kim     char                    *SrcString);
887efcc2a30SJung-uk Kim 
888efcc2a30SJung-uk Kim void
889efcc2a30SJung-uk Kim AcpiUtStrlwr (
890efcc2a30SJung-uk Kim     char                    *SrcString);
891efcc2a30SJung-uk Kim 
892efcc2a30SJung-uk Kim int
893efcc2a30SJung-uk Kim AcpiUtStricmp (
894efcc2a30SJung-uk Kim     char                    *String1,
895efcc2a30SJung-uk Kim     char                    *String2);
896efcc2a30SJung-uk Kim 
897efcc2a30SJung-uk Kim ACPI_STATUS
898efcc2a30SJung-uk Kim AcpiUtStrtoul64 (
899efcc2a30SJung-uk Kim     char                    *String,
900efcc2a30SJung-uk Kim     UINT32                  Base,
901efcc2a30SJung-uk Kim     UINT64                  *RetInteger);
902efcc2a30SJung-uk Kim 
903efcc2a30SJung-uk Kim void
904efcc2a30SJung-uk Kim AcpiUtPrintString (
905efcc2a30SJung-uk Kim     char                    *String,
906*8d744e47SJung-uk Kim     UINT16                  MaxLength);
907efcc2a30SJung-uk Kim 
908efcc2a30SJung-uk Kim void
909efcc2a30SJung-uk Kim UtConvertBackslashes (
910efcc2a30SJung-uk Kim     char                    *Pathname);
911efcc2a30SJung-uk Kim 
912efcc2a30SJung-uk Kim BOOLEAN
913efcc2a30SJung-uk Kim AcpiUtValidAcpiName (
914a9d8d09cSJung-uk Kim     char                    *Name);
915efcc2a30SJung-uk Kim 
916efcc2a30SJung-uk Kim BOOLEAN
917efcc2a30SJung-uk Kim AcpiUtValidAcpiChar (
918efcc2a30SJung-uk Kim     char                    Character,
919efcc2a30SJung-uk Kim     UINT32                  Position);
920efcc2a30SJung-uk Kim 
921efcc2a30SJung-uk Kim void
922efcc2a30SJung-uk Kim AcpiUtRepairName (
923efcc2a30SJung-uk Kim     char                    *Name);
924efcc2a30SJung-uk Kim 
925efcc2a30SJung-uk Kim 
926efcc2a30SJung-uk Kim /*
927a9f12690SJung-uk Kim  * utmutex - mutex support
928a9f12690SJung-uk Kim  */
929a9f12690SJung-uk Kim ACPI_STATUS
930a9f12690SJung-uk Kim AcpiUtMutexInitialize (
931a9f12690SJung-uk Kim     void);
932a9f12690SJung-uk Kim 
933a9f12690SJung-uk Kim void
934a9f12690SJung-uk Kim AcpiUtMutexTerminate (
935a9f12690SJung-uk Kim     void);
936a9f12690SJung-uk Kim 
937a9f12690SJung-uk Kim ACPI_STATUS
938a9f12690SJung-uk Kim AcpiUtAcquireMutex (
939a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
940a9f12690SJung-uk Kim 
941a9f12690SJung-uk Kim ACPI_STATUS
942a9f12690SJung-uk Kim AcpiUtReleaseMutex (
943a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
944a9f12690SJung-uk Kim 
945a9f12690SJung-uk Kim 
946a9f12690SJung-uk Kim /*
947a9f12690SJung-uk Kim  * utalloc - memory allocation and object caching
948a9f12690SJung-uk Kim  */
949a9f12690SJung-uk Kim ACPI_STATUS
950a9f12690SJung-uk Kim AcpiUtCreateCaches (
951a9f12690SJung-uk Kim     void);
952a9f12690SJung-uk Kim 
953a9f12690SJung-uk Kim ACPI_STATUS
954a9f12690SJung-uk Kim AcpiUtDeleteCaches (
955a9f12690SJung-uk Kim     void);
956a9f12690SJung-uk Kim 
957a9f12690SJung-uk Kim ACPI_STATUS
958a9f12690SJung-uk Kim AcpiUtValidateBuffer (
959a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer);
960a9f12690SJung-uk Kim 
961a9f12690SJung-uk Kim ACPI_STATUS
962a9f12690SJung-uk Kim AcpiUtInitializeBuffer (
963a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer,
964a9f12690SJung-uk Kim     ACPI_SIZE               RequiredLength);
965a9f12690SJung-uk Kim 
966a9f12690SJung-uk Kim void *
967a9f12690SJung-uk Kim AcpiUtAllocate (
968a9f12690SJung-uk Kim     ACPI_SIZE               Size,
969a9f12690SJung-uk Kim     UINT32                  Component,
970a9f12690SJung-uk Kim     const char              *Module,
971a9f12690SJung-uk Kim     UINT32                  Line);
972a9f12690SJung-uk Kim 
973a9f12690SJung-uk Kim void *
974a9f12690SJung-uk Kim AcpiUtAllocateZeroed (
975a9f12690SJung-uk Kim     ACPI_SIZE               Size,
976a9f12690SJung-uk Kim     UINT32                  Component,
977a9f12690SJung-uk Kim     const char              *Module,
978a9f12690SJung-uk Kim     UINT32                  Line);
979a9f12690SJung-uk Kim 
980a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS
981a9f12690SJung-uk Kim void *
982a9f12690SJung-uk Kim AcpiUtAllocateAndTrack (
983a9f12690SJung-uk Kim     ACPI_SIZE               Size,
984a9f12690SJung-uk Kim     UINT32                  Component,
985a9f12690SJung-uk Kim     const char              *Module,
986a9f12690SJung-uk Kim     UINT32                  Line);
987a9f12690SJung-uk Kim 
988a9f12690SJung-uk Kim void *
989a9f12690SJung-uk Kim AcpiUtAllocateZeroedAndTrack (
990a9f12690SJung-uk Kim     ACPI_SIZE               Size,
991a9f12690SJung-uk Kim     UINT32                  Component,
992a9f12690SJung-uk Kim     const char              *Module,
993a9f12690SJung-uk Kim     UINT32                  Line);
994a9f12690SJung-uk Kim 
995a9f12690SJung-uk Kim void
996a9f12690SJung-uk Kim AcpiUtFreeAndTrack (
997a9f12690SJung-uk Kim     void                    *Address,
998a9f12690SJung-uk Kim     UINT32                  Component,
999a9f12690SJung-uk Kim     const char              *Module,
1000a9f12690SJung-uk Kim     UINT32                  Line);
1001a9f12690SJung-uk Kim 
1002a9f12690SJung-uk Kim void
1003a9f12690SJung-uk Kim AcpiUtDumpAllocationInfo (
1004a9f12690SJung-uk Kim     void);
1005a9f12690SJung-uk Kim 
1006a9f12690SJung-uk Kim void
1007a9f12690SJung-uk Kim AcpiUtDumpAllocations (
1008a9f12690SJung-uk Kim     UINT32                  Component,
1009a9f12690SJung-uk Kim     const char              *Module);
1010a9f12690SJung-uk Kim 
1011a9f12690SJung-uk Kim ACPI_STATUS
1012a9f12690SJung-uk Kim AcpiUtCreateList (
1013a9f12690SJung-uk Kim     char                    *ListName,
1014a9f12690SJung-uk Kim     UINT16                  ObjectSize,
1015a9f12690SJung-uk Kim     ACPI_MEMORY_LIST        **ReturnCache);
1016a9f12690SJung-uk Kim 
101742fecd12SJung-uk Kim #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
1018a9f12690SJung-uk Kim 
1019ec3fc72fSJung-uk Kim /*
1020ec3fc72fSJung-uk Kim  * utaddress - address range check
1021ec3fc72fSJung-uk Kim  */
1022ec3fc72fSJung-uk Kim ACPI_STATUS
1023ec3fc72fSJung-uk Kim AcpiUtAddAddressRange (
1024ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
1025ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
1026ec3fc72fSJung-uk Kim     UINT32                  Length,
1027ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
1028ec3fc72fSJung-uk Kim 
1029ec3fc72fSJung-uk Kim void
1030ec3fc72fSJung-uk Kim AcpiUtRemoveAddressRange (
1031ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
1032ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
1033ec3fc72fSJung-uk Kim 
1034ec3fc72fSJung-uk Kim UINT32
1035ec3fc72fSJung-uk Kim AcpiUtCheckAddressRange (
1036ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
1037ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
1038ec3fc72fSJung-uk Kim     UINT32                  Length,
1039ec3fc72fSJung-uk Kim     BOOLEAN                 Warn);
1040ec3fc72fSJung-uk Kim 
1041ec3fc72fSJung-uk Kim void
1042ec3fc72fSJung-uk Kim AcpiUtDeleteAddressLists (
1043ec3fc72fSJung-uk Kim     void);
104442fecd12SJung-uk Kim 
104542fecd12SJung-uk Kim /*
104642fecd12SJung-uk Kim  * utxferror - various error/warning output functions
104742fecd12SJung-uk Kim  */
104842fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
104942fecd12SJung-uk Kim AcpiUtPredefinedWarning (
105042fecd12SJung-uk Kim     const char              *ModuleName,
105142fecd12SJung-uk Kim     UINT32                  LineNumber,
105242fecd12SJung-uk Kim     char                    *Pathname,
105342fecd12SJung-uk Kim     UINT8                   NodeFlags,
105442fecd12SJung-uk Kim     const char              *Format,
105542fecd12SJung-uk Kim     ...);
105642fecd12SJung-uk Kim 
105742fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
105842fecd12SJung-uk Kim AcpiUtPredefinedInfo (
105942fecd12SJung-uk Kim     const char              *ModuleName,
106042fecd12SJung-uk Kim     UINT32                  LineNumber,
106142fecd12SJung-uk Kim     char                    *Pathname,
106242fecd12SJung-uk Kim     UINT8                   NodeFlags,
106342fecd12SJung-uk Kim     const char              *Format,
106442fecd12SJung-uk Kim     ...);
106542fecd12SJung-uk Kim 
1066895f26a9SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
1067895f26a9SJung-uk Kim AcpiUtPredefinedBiosError (
1068895f26a9SJung-uk Kim     const char              *ModuleName,
1069895f26a9SJung-uk Kim     UINT32                  LineNumber,
1070895f26a9SJung-uk Kim     char                    *Pathname,
1071895f26a9SJung-uk Kim     UINT8                   NodeFlags,
1072895f26a9SJung-uk Kim     const char              *Format,
1073895f26a9SJung-uk Kim     ...);
1074895f26a9SJung-uk Kim 
107542fecd12SJung-uk Kim void
107642fecd12SJung-uk Kim AcpiUtNamespaceError (
107742fecd12SJung-uk Kim     const char              *ModuleName,
107842fecd12SJung-uk Kim     UINT32                  LineNumber,
107942fecd12SJung-uk Kim     const char              *InternalName,
108042fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
108142fecd12SJung-uk Kim 
108242fecd12SJung-uk Kim void
108342fecd12SJung-uk Kim AcpiUtMethodError (
108442fecd12SJung-uk Kim     const char              *ModuleName,
108542fecd12SJung-uk Kim     UINT32                  LineNumber,
108642fecd12SJung-uk Kim     const char              *Message,
108742fecd12SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
108842fecd12SJung-uk Kim     const char              *Path,
108942fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
1090a9f12690SJung-uk Kim 
1091a9f12690SJung-uk Kim #endif /* _ACUTILS_H */
1092