xref: /freebsd/sys/contrib/dev/acpica/include/acutils.h (revision ec3fc72f94b64840ffc88b4c376437ca7ee43fda)
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 /*
8*ec3fc72fSJung-uk Kim  * Copyright (C) 2000 - 2012, 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 
91a9f12690SJung-uk Kim /* Types for Resource descriptor entries */
92a9f12690SJung-uk Kim 
93a9f12690SJung-uk Kim #define ACPI_INVALID_RESOURCE           0
94a9f12690SJung-uk Kim #define ACPI_FIXED_LENGTH               1
95a9f12690SJung-uk Kim #define ACPI_VARIABLE_LENGTH            2
96a9f12690SJung-uk Kim #define ACPI_SMALL_VARIABLE_LENGTH      3
97a9f12690SJung-uk Kim 
98a9f12690SJung-uk Kim typedef
99a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
100a9f12690SJung-uk Kim     UINT8                   *Aml,
101a9f12690SJung-uk Kim     UINT32                  Length,
102a9f12690SJung-uk Kim     UINT32                  Offset,
103a9f12690SJung-uk Kim     UINT8                   ResourceIndex,
104a9f12690SJung-uk Kim     void                    *Context);
105a9f12690SJung-uk Kim 
106a9f12690SJung-uk Kim typedef
107a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_PKG_CALLBACK) (
108a9f12690SJung-uk Kim     UINT8                   ObjectType,
109a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
110a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State,
111a9f12690SJung-uk Kim     void                    *Context);
112a9f12690SJung-uk Kim 
113a9f12690SJung-uk Kim typedef struct acpi_pkg_info
114a9f12690SJung-uk Kim {
115a9f12690SJung-uk Kim     UINT8                   *FreeSpace;
116a9f12690SJung-uk Kim     ACPI_SIZE               Length;
117a9f12690SJung-uk Kim     UINT32                  ObjectSpace;
118a9f12690SJung-uk Kim     UINT32                  NumPackages;
119a9f12690SJung-uk Kim 
120a9f12690SJung-uk Kim } ACPI_PKG_INFO;
121a9f12690SJung-uk Kim 
122a9f12690SJung-uk Kim #define REF_INCREMENT       (UINT16) 0
123a9f12690SJung-uk Kim #define REF_DECREMENT       (UINT16) 1
124a9f12690SJung-uk Kim #define REF_FORCE_DELETE    (UINT16) 2
125a9f12690SJung-uk Kim 
126a9f12690SJung-uk Kim /* AcpiUtDumpBuffer */
127a9f12690SJung-uk Kim 
128a9f12690SJung-uk Kim #define DB_BYTE_DISPLAY     1
129a9f12690SJung-uk Kim #define DB_WORD_DISPLAY     2
130a9f12690SJung-uk Kim #define DB_DWORD_DISPLAY    4
131a9f12690SJung-uk Kim #define DB_QWORD_DISPLAY    8
132a9f12690SJung-uk Kim 
133a9f12690SJung-uk Kim /*
134a9f12690SJung-uk Kim  * utglobal - Global data structures and procedures
135a9f12690SJung-uk Kim  */
136a9f12690SJung-uk Kim ACPI_STATUS
137a9f12690SJung-uk Kim AcpiUtInitGlobals (
138a9f12690SJung-uk Kim     void);
139a9f12690SJung-uk Kim 
140a9f12690SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
141a9f12690SJung-uk Kim 
142a9f12690SJung-uk Kim char *
143a9f12690SJung-uk Kim AcpiUtGetMutexName (
144a9f12690SJung-uk Kim     UINT32                  MutexId);
145a9f12690SJung-uk Kim 
146a9f12690SJung-uk Kim const char *
147a9f12690SJung-uk Kim AcpiUtGetNotifyName (
148a9f12690SJung-uk Kim     UINT32                  NotifyValue);
149a9f12690SJung-uk Kim 
150a9f12690SJung-uk Kim #endif
151a9f12690SJung-uk Kim 
152a9f12690SJung-uk Kim char *
153a9f12690SJung-uk Kim AcpiUtGetTypeName (
154a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
155a9f12690SJung-uk Kim 
156a9f12690SJung-uk Kim char *
157a9f12690SJung-uk Kim AcpiUtGetNodeName (
158a9f12690SJung-uk Kim     void                    *Object);
159a9f12690SJung-uk Kim 
160a9f12690SJung-uk Kim char *
161a9f12690SJung-uk Kim AcpiUtGetDescriptorName (
162a9f12690SJung-uk Kim     void                    *Object);
163a9f12690SJung-uk Kim 
164a9f12690SJung-uk Kim const char *
165a9f12690SJung-uk Kim AcpiUtGetReferenceName (
166a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
167a9f12690SJung-uk Kim 
168a9f12690SJung-uk Kim char *
169a9f12690SJung-uk Kim AcpiUtGetObjectTypeName (
170a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc);
171a9f12690SJung-uk Kim 
172a9f12690SJung-uk Kim char *
173a9f12690SJung-uk Kim AcpiUtGetRegionName (
174a9f12690SJung-uk Kim     UINT8                   SpaceId);
175a9f12690SJung-uk Kim 
176a9f12690SJung-uk Kim char *
177a9f12690SJung-uk Kim AcpiUtGetEventName (
178a9f12690SJung-uk Kim     UINT32                  EventId);
179a9f12690SJung-uk Kim 
180a9f12690SJung-uk Kim char
181a9f12690SJung-uk Kim AcpiUtHexToAsciiChar (
1829a179dd8SJung-uk Kim     UINT64                  Integer,
183a9f12690SJung-uk Kim     UINT32                  Position);
184a9f12690SJung-uk Kim 
185a9f12690SJung-uk Kim BOOLEAN
186a9f12690SJung-uk Kim AcpiUtValidObjectType (
187a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
188a9f12690SJung-uk Kim 
189a9f12690SJung-uk Kim 
190a9f12690SJung-uk Kim /*
191a9f12690SJung-uk Kim  * utinit - miscellaneous initialization and shutdown
192a9f12690SJung-uk Kim  */
193a9f12690SJung-uk Kim ACPI_STATUS
194a9f12690SJung-uk Kim AcpiUtHardwareInitialize (
195a9f12690SJung-uk Kim     void);
196a9f12690SJung-uk Kim 
197a9f12690SJung-uk Kim void
198a9f12690SJung-uk Kim AcpiUtSubsystemShutdown (
199a9f12690SJung-uk Kim     void);
200a9f12690SJung-uk Kim 
201a9f12690SJung-uk Kim 
202a9f12690SJung-uk Kim /*
203a9f12690SJung-uk Kim  * utclib - Local implementations of C library functions
204a9f12690SJung-uk Kim  */
205a9f12690SJung-uk Kim #ifndef ACPI_USE_SYSTEM_CLIBRARY
206a9f12690SJung-uk Kim 
207a9f12690SJung-uk Kim ACPI_SIZE
208a9f12690SJung-uk Kim AcpiUtStrlen (
209a9f12690SJung-uk Kim     const char              *String);
210a9f12690SJung-uk Kim 
211a9f12690SJung-uk Kim char *
212a9f12690SJung-uk Kim AcpiUtStrcpy (
213a9f12690SJung-uk Kim     char                    *DstString,
214a9f12690SJung-uk Kim     const char              *SrcString);
215a9f12690SJung-uk Kim 
216a9f12690SJung-uk Kim char *
217a9f12690SJung-uk Kim AcpiUtStrncpy (
218a9f12690SJung-uk Kim     char                    *DstString,
219a9f12690SJung-uk Kim     const char              *SrcString,
220a9f12690SJung-uk Kim     ACPI_SIZE               Count);
221a9f12690SJung-uk Kim 
222a9f12690SJung-uk Kim int
223a9f12690SJung-uk Kim AcpiUtMemcmp (
224a9f12690SJung-uk Kim     const char              *Buffer1,
225a9f12690SJung-uk Kim     const char              *Buffer2,
226a9f12690SJung-uk Kim     ACPI_SIZE               Count);
227a9f12690SJung-uk Kim 
228a9f12690SJung-uk Kim int
229a9f12690SJung-uk Kim AcpiUtStrncmp (
230a9f12690SJung-uk Kim     const char              *String1,
231a9f12690SJung-uk Kim     const char              *String2,
232a9f12690SJung-uk Kim     ACPI_SIZE               Count);
233a9f12690SJung-uk Kim 
234a9f12690SJung-uk Kim int
235a9f12690SJung-uk Kim AcpiUtStrcmp (
236a9f12690SJung-uk Kim     const char              *String1,
237a9f12690SJung-uk Kim     const char              *String2);
238a9f12690SJung-uk Kim 
239a9f12690SJung-uk Kim char *
240a9f12690SJung-uk Kim AcpiUtStrcat (
241a9f12690SJung-uk Kim     char                    *DstString,
242a9f12690SJung-uk Kim     const char              *SrcString);
243a9f12690SJung-uk Kim 
244a9f12690SJung-uk Kim char *
245a9f12690SJung-uk Kim AcpiUtStrncat (
246a9f12690SJung-uk Kim     char                    *DstString,
247a9f12690SJung-uk Kim     const char              *SrcString,
248a9f12690SJung-uk Kim     ACPI_SIZE               Count);
249a9f12690SJung-uk Kim 
250a9f12690SJung-uk Kim UINT32
251a9f12690SJung-uk Kim AcpiUtStrtoul (
252a9f12690SJung-uk Kim     const char              *String,
253a9f12690SJung-uk Kim     char                    **Terminator,
254a9f12690SJung-uk Kim     UINT32                  Base);
255a9f12690SJung-uk Kim 
256a9f12690SJung-uk Kim char *
257a9f12690SJung-uk Kim AcpiUtStrstr (
258a9f12690SJung-uk Kim     char                    *String1,
259a9f12690SJung-uk Kim     char                    *String2);
260a9f12690SJung-uk Kim 
261a9f12690SJung-uk Kim void *
262a9f12690SJung-uk Kim AcpiUtMemcpy (
263a9f12690SJung-uk Kim     void                    *Dest,
264a9f12690SJung-uk Kim     const void              *Src,
265a9f12690SJung-uk Kim     ACPI_SIZE               Count);
266a9f12690SJung-uk Kim 
267a9f12690SJung-uk Kim void *
268a9f12690SJung-uk Kim AcpiUtMemset (
269a9f12690SJung-uk Kim     void                    *Dest,
270a9f12690SJung-uk Kim     UINT8                   Value,
271a9f12690SJung-uk Kim     ACPI_SIZE               Count);
272a9f12690SJung-uk Kim 
273a9f12690SJung-uk Kim int
274a9f12690SJung-uk Kim AcpiUtToUpper (
275a9f12690SJung-uk Kim     int                     c);
276a9f12690SJung-uk Kim 
277a9f12690SJung-uk Kim int
278a9f12690SJung-uk Kim AcpiUtToLower (
279a9f12690SJung-uk Kim     int                     c);
280a9f12690SJung-uk Kim 
281a9f12690SJung-uk Kim extern const UINT8 _acpi_ctype[];
282a9f12690SJung-uk Kim 
283a9f12690SJung-uk Kim #define _ACPI_XA     0x00    /* extra alphabetic - not supported */
284a9f12690SJung-uk Kim #define _ACPI_XS     0x40    /* extra space */
285a9f12690SJung-uk Kim #define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
286a9f12690SJung-uk Kim #define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
287a9f12690SJung-uk Kim #define _ACPI_DI     0x04    /* '0'-'9' */
288a9f12690SJung-uk Kim #define _ACPI_LO     0x02    /* 'a'-'z' */
289a9f12690SJung-uk Kim #define _ACPI_PU     0x10    /* punctuation */
290a9f12690SJung-uk Kim #define _ACPI_SP     0x08    /* space */
291a9f12690SJung-uk Kim #define _ACPI_UP     0x01    /* 'A'-'Z' */
292a9f12690SJung-uk Kim #define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
293a9f12690SJung-uk Kim 
294a9f12690SJung-uk Kim #define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
295a9f12690SJung-uk Kim #define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
296a9f12690SJung-uk Kim #define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
297a9f12690SJung-uk Kim #define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
298a9f12690SJung-uk Kim #define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
299a9f12690SJung-uk Kim #define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
300a9f12690SJung-uk Kim #define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
301a9f12690SJung-uk Kim 
302a9f12690SJung-uk Kim #endif /* !ACPI_USE_SYSTEM_CLIBRARY */
303a9f12690SJung-uk Kim 
304a9f12690SJung-uk Kim #define ACPI_IS_ASCII(c)  ((c) < 0x80)
305a9f12690SJung-uk Kim 
306a9f12690SJung-uk Kim 
307a9f12690SJung-uk Kim /*
308a9f12690SJung-uk Kim  * utcopy - Object construction and conversion interfaces
309a9f12690SJung-uk Kim  */
310a9f12690SJung-uk Kim ACPI_STATUS
311a9f12690SJung-uk Kim AcpiUtBuildSimpleObject(
312a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
313a9f12690SJung-uk Kim     ACPI_OBJECT             *UserObj,
314a9f12690SJung-uk Kim     UINT8                   *DataSpace,
315a9f12690SJung-uk Kim     UINT32                  *BufferSpaceUsed);
316a9f12690SJung-uk Kim 
317a9f12690SJung-uk Kim ACPI_STATUS
318a9f12690SJung-uk Kim AcpiUtBuildPackageObject (
319a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
320a9f12690SJung-uk Kim     UINT8                   *Buffer,
321a9f12690SJung-uk Kim     UINT32                  *SpaceUsed);
322a9f12690SJung-uk Kim 
323a9f12690SJung-uk Kim ACPI_STATUS
324a9f12690SJung-uk Kim AcpiUtCopyIobjectToEobject (
325a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
326a9f12690SJung-uk Kim     ACPI_BUFFER             *RetBuffer);
327a9f12690SJung-uk Kim 
328a9f12690SJung-uk Kim ACPI_STATUS
329a9f12690SJung-uk Kim AcpiUtCopyEobjectToIobject (
330a9f12690SJung-uk Kim     ACPI_OBJECT             *Obj,
331a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **InternalObj);
332a9f12690SJung-uk Kim 
333a9f12690SJung-uk Kim ACPI_STATUS
334a9f12690SJung-uk Kim AcpiUtCopyISimpleToIsimple (
335a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObj,
336a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *DestObj);
337a9f12690SJung-uk Kim 
338a9f12690SJung-uk Kim ACPI_STATUS
339a9f12690SJung-uk Kim AcpiUtCopyIobjectToIobject (
340a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceDesc,
341a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **DestDesc,
342a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
343a9f12690SJung-uk Kim 
344a9f12690SJung-uk Kim 
345a9f12690SJung-uk Kim /*
346a9f12690SJung-uk Kim  * utcreate - Object creation
347a9f12690SJung-uk Kim  */
348a9f12690SJung-uk Kim ACPI_STATUS
349a9f12690SJung-uk Kim AcpiUtUpdateObjectReference (
350a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
351a9f12690SJung-uk Kim     UINT16                  Action);
352a9f12690SJung-uk Kim 
353a9f12690SJung-uk Kim 
354a9f12690SJung-uk Kim /*
355a9f12690SJung-uk Kim  * utdebug - Debug interfaces
356a9f12690SJung-uk Kim  */
357a9f12690SJung-uk Kim void
358a9f12690SJung-uk Kim AcpiUtInitStackPtrTrace (
359a9f12690SJung-uk Kim     void);
360a9f12690SJung-uk Kim 
361a9f12690SJung-uk Kim void
362a9f12690SJung-uk Kim AcpiUtTrackStackPtr (
363a9f12690SJung-uk Kim     void);
364a9f12690SJung-uk Kim 
365a9f12690SJung-uk Kim void
366a9f12690SJung-uk Kim AcpiUtTrace (
367a9f12690SJung-uk Kim     UINT32                  LineNumber,
368a9f12690SJung-uk Kim     const char              *FunctionName,
369a9f12690SJung-uk Kim     const char              *ModuleName,
370a9f12690SJung-uk Kim     UINT32                  ComponentId);
371a9f12690SJung-uk Kim 
372a9f12690SJung-uk Kim void
373a9f12690SJung-uk Kim AcpiUtTracePtr (
374a9f12690SJung-uk Kim     UINT32                  LineNumber,
375a9f12690SJung-uk Kim     const char              *FunctionName,
376a9f12690SJung-uk Kim     const char              *ModuleName,
377a9f12690SJung-uk Kim     UINT32                  ComponentId,
378a9f12690SJung-uk Kim     void                    *Pointer);
379a9f12690SJung-uk Kim 
380a9f12690SJung-uk Kim void
381a9f12690SJung-uk Kim AcpiUtTraceU32 (
382a9f12690SJung-uk Kim     UINT32                  LineNumber,
383a9f12690SJung-uk Kim     const char              *FunctionName,
384a9f12690SJung-uk Kim     const char              *ModuleName,
385a9f12690SJung-uk Kim     UINT32                  ComponentId,
386a9f12690SJung-uk Kim     UINT32                  Integer);
387a9f12690SJung-uk Kim 
388a9f12690SJung-uk Kim void
389a9f12690SJung-uk Kim AcpiUtTraceStr (
390a9f12690SJung-uk Kim     UINT32                  LineNumber,
391a9f12690SJung-uk Kim     const char              *FunctionName,
392a9f12690SJung-uk Kim     const char              *ModuleName,
393a9f12690SJung-uk Kim     UINT32                  ComponentId,
394a9f12690SJung-uk Kim     char                    *String);
395a9f12690SJung-uk Kim 
396a9f12690SJung-uk Kim void
397a9f12690SJung-uk Kim AcpiUtExit (
398a9f12690SJung-uk Kim     UINT32                  LineNumber,
399a9f12690SJung-uk Kim     const char              *FunctionName,
400a9f12690SJung-uk Kim     const char              *ModuleName,
401a9f12690SJung-uk Kim     UINT32                  ComponentId);
402a9f12690SJung-uk Kim 
403a9f12690SJung-uk Kim void
404a9f12690SJung-uk Kim AcpiUtStatusExit (
405a9f12690SJung-uk Kim     UINT32                  LineNumber,
406a9f12690SJung-uk Kim     const char              *FunctionName,
407a9f12690SJung-uk Kim     const char              *ModuleName,
408a9f12690SJung-uk Kim     UINT32                  ComponentId,
409a9f12690SJung-uk Kim     ACPI_STATUS             Status);
410a9f12690SJung-uk Kim 
411a9f12690SJung-uk Kim void
412a9f12690SJung-uk Kim AcpiUtValueExit (
413a9f12690SJung-uk Kim     UINT32                  LineNumber,
414a9f12690SJung-uk Kim     const char              *FunctionName,
415a9f12690SJung-uk Kim     const char              *ModuleName,
416a9f12690SJung-uk Kim     UINT32                  ComponentId,
4179a179dd8SJung-uk Kim     UINT64                  Value);
418a9f12690SJung-uk Kim 
419a9f12690SJung-uk Kim void
420a9f12690SJung-uk Kim AcpiUtPtrExit (
421a9f12690SJung-uk Kim     UINT32                  LineNumber,
422a9f12690SJung-uk Kim     const char              *FunctionName,
423a9f12690SJung-uk Kim     const char              *ModuleName,
424a9f12690SJung-uk Kim     UINT32                  ComponentId,
425a9f12690SJung-uk Kim     UINT8                   *Ptr);
426a9f12690SJung-uk Kim 
427a9f12690SJung-uk Kim void
428a9f12690SJung-uk Kim AcpiUtDumpBuffer (
429a9f12690SJung-uk Kim     UINT8                   *Buffer,
430a9f12690SJung-uk Kim     UINT32                  Count,
431a9f12690SJung-uk Kim     UINT32                  Display,
432a9f12690SJung-uk Kim     UINT32                  componentId);
433a9f12690SJung-uk Kim 
434a9f12690SJung-uk Kim void
435a9f12690SJung-uk Kim AcpiUtDumpBuffer2 (
436a9f12690SJung-uk Kim     UINT8                   *Buffer,
437a9f12690SJung-uk Kim     UINT32                  Count,
438a9f12690SJung-uk Kim     UINT32                  Display);
439a9f12690SJung-uk Kim 
440a9f12690SJung-uk Kim void
441a9f12690SJung-uk Kim AcpiUtReportError (
442a9f12690SJung-uk Kim     char                    *ModuleName,
443a9f12690SJung-uk Kim     UINT32                  LineNumber);
444a9f12690SJung-uk Kim 
445a9f12690SJung-uk Kim void
446a9f12690SJung-uk Kim AcpiUtReportInfo (
447a9f12690SJung-uk Kim     char                    *ModuleName,
448a9f12690SJung-uk Kim     UINT32                  LineNumber);
449a9f12690SJung-uk Kim 
450a9f12690SJung-uk Kim void
451a9f12690SJung-uk Kim AcpiUtReportWarning (
452a9f12690SJung-uk Kim     char                    *ModuleName,
453a9f12690SJung-uk Kim     UINT32                  LineNumber);
454a9f12690SJung-uk Kim 
455a9f12690SJung-uk Kim /*
456a9f12690SJung-uk Kim  * utdelete - Object deletion and reference counts
457a9f12690SJung-uk Kim  */
458a9f12690SJung-uk Kim void
459a9f12690SJung-uk Kim AcpiUtAddReference (
460a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
461a9f12690SJung-uk Kim 
462a9f12690SJung-uk Kim void
463a9f12690SJung-uk Kim AcpiUtRemoveReference (
464a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
465a9f12690SJung-uk Kim 
466a9f12690SJung-uk Kim void
467a9f12690SJung-uk Kim AcpiUtDeleteInternalPackageObject (
468a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
469a9f12690SJung-uk Kim 
470a9f12690SJung-uk Kim void
471a9f12690SJung-uk Kim AcpiUtDeleteInternalSimpleObject (
472a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
473a9f12690SJung-uk Kim 
474a9f12690SJung-uk Kim void
475a9f12690SJung-uk Kim AcpiUtDeleteInternalObjectList (
476a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ObjList);
477a9f12690SJung-uk Kim 
478a9f12690SJung-uk Kim 
479a9f12690SJung-uk Kim /*
480a9f12690SJung-uk Kim  * uteval - object evaluation
481a9f12690SJung-uk Kim  */
482a9f12690SJung-uk Kim ACPI_STATUS
483a9f12690SJung-uk Kim AcpiUtEvaluateObject (
484a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *PrefixNode,
485a9f12690SJung-uk Kim     char                    *Path,
486a9f12690SJung-uk Kim     UINT32                  ExpectedReturnBtypes,
487a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ReturnDesc);
488a9f12690SJung-uk Kim 
489a9f12690SJung-uk Kim ACPI_STATUS
490a9f12690SJung-uk Kim AcpiUtEvaluateNumericObject (
491a9f12690SJung-uk Kim     char                    *ObjectName,
492a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
4939a179dd8SJung-uk Kim     UINT64                  *Value);
494a9f12690SJung-uk Kim 
495a9f12690SJung-uk Kim ACPI_STATUS
496a9f12690SJung-uk Kim AcpiUtExecute_STA (
497a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
498a9f12690SJung-uk Kim     UINT32                  *StatusFlags);
499a9f12690SJung-uk Kim 
500a9f12690SJung-uk Kim ACPI_STATUS
501d6dd1baeSJung-uk Kim AcpiUtExecutePowerMethods (
502a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
503d6dd1baeSJung-uk Kim     const char              **MethodNames,
504d6dd1baeSJung-uk Kim     UINT8                   MethodCount,
505d6dd1baeSJung-uk Kim     UINT8                   *OutValues);
506d6dd1baeSJung-uk Kim 
507d6dd1baeSJung-uk Kim 
508d6dd1baeSJung-uk Kim /*
509d6dd1baeSJung-uk Kim  * utids - device ID support
510d6dd1baeSJung-uk Kim  */
511d6dd1baeSJung-uk Kim ACPI_STATUS
512d6dd1baeSJung-uk Kim AcpiUtExecute_HID (
513d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
514d6dd1baeSJung-uk Kim     ACPI_DEVICE_ID          **ReturnId);
515a9f12690SJung-uk Kim 
516a9f12690SJung-uk Kim ACPI_STATUS
517d6dd1baeSJung-uk Kim AcpiUtExecute_UID (
518a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
519d6dd1baeSJung-uk Kim     ACPI_DEVICE_ID          **ReturnId);
520d6dd1baeSJung-uk Kim 
521d6dd1baeSJung-uk Kim ACPI_STATUS
522d6dd1baeSJung-uk Kim AcpiUtExecute_CID (
523d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
524d6dd1baeSJung-uk Kim     ACPI_DEVICE_ID_LIST     **ReturnCidList);
525d6dd1baeSJung-uk Kim 
526a9f12690SJung-uk Kim 
527a9f12690SJung-uk Kim /*
528a9f12690SJung-uk Kim  * utlock - reader/writer locks
529a9f12690SJung-uk Kim  */
530a9f12690SJung-uk Kim ACPI_STATUS
531a9f12690SJung-uk Kim AcpiUtCreateRwLock (
532a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
533a9f12690SJung-uk Kim 
534a9f12690SJung-uk Kim void
535a9f12690SJung-uk Kim AcpiUtDeleteRwLock (
536a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
537a9f12690SJung-uk Kim 
538a9f12690SJung-uk Kim ACPI_STATUS
539a9f12690SJung-uk Kim AcpiUtAcquireReadLock (
540a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
541a9f12690SJung-uk Kim 
542a9f12690SJung-uk Kim ACPI_STATUS
543a9f12690SJung-uk Kim AcpiUtReleaseReadLock (
544a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
545a9f12690SJung-uk Kim 
546a9f12690SJung-uk Kim ACPI_STATUS
547a9f12690SJung-uk Kim AcpiUtAcquireWriteLock (
548a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
549a9f12690SJung-uk Kim 
550a9f12690SJung-uk Kim void
551a9f12690SJung-uk Kim AcpiUtReleaseWriteLock (
552a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
553a9f12690SJung-uk Kim 
554a9f12690SJung-uk Kim 
555a9f12690SJung-uk Kim /*
556a9f12690SJung-uk Kim  * utobject - internal object create/delete/cache routines
557a9f12690SJung-uk Kim  */
558a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT  *
559a9f12690SJung-uk Kim AcpiUtCreateInternalObjectDbg (
560a9f12690SJung-uk Kim     const char              *ModuleName,
561a9f12690SJung-uk Kim     UINT32                  LineNumber,
562a9f12690SJung-uk Kim     UINT32                  ComponentId,
563a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
564a9f12690SJung-uk Kim 
565a9f12690SJung-uk Kim void *
566a9f12690SJung-uk Kim AcpiUtAllocateObjectDescDbg (
567a9f12690SJung-uk Kim     const char              *ModuleName,
568a9f12690SJung-uk Kim     UINT32                  LineNumber,
569a9f12690SJung-uk Kim     UINT32                  ComponentId);
570a9f12690SJung-uk Kim 
571a9f12690SJung-uk Kim #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
572a9f12690SJung-uk Kim #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
573a9f12690SJung-uk Kim 
574a9f12690SJung-uk Kim void
575a9f12690SJung-uk Kim AcpiUtDeleteObjectDesc (
576a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
577a9f12690SJung-uk Kim 
578a9f12690SJung-uk Kim BOOLEAN
579a9f12690SJung-uk Kim AcpiUtValidInternalObject (
580a9f12690SJung-uk Kim     void                    *Object);
581a9f12690SJung-uk Kim 
582a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
583a9f12690SJung-uk Kim AcpiUtCreatePackageObject (
584a9f12690SJung-uk Kim     UINT32                  Count);
585a9f12690SJung-uk Kim 
586a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
5872272d050SJung-uk Kim AcpiUtCreateIntegerObject (
5882272d050SJung-uk Kim     UINT64                  Value);
5892272d050SJung-uk Kim 
5902272d050SJung-uk Kim ACPI_OPERAND_OBJECT *
591a9f12690SJung-uk Kim AcpiUtCreateBufferObject (
592a9f12690SJung-uk Kim     ACPI_SIZE               BufferSize);
593a9f12690SJung-uk Kim 
594a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
595a9f12690SJung-uk Kim AcpiUtCreateStringObject (
596a9f12690SJung-uk Kim     ACPI_SIZE               StringSize);
597a9f12690SJung-uk Kim 
598a9f12690SJung-uk Kim ACPI_STATUS
599a9f12690SJung-uk Kim AcpiUtGetObjectSize(
600a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
601a9f12690SJung-uk Kim     ACPI_SIZE               *ObjLength);
602a9f12690SJung-uk Kim 
603a9f12690SJung-uk Kim 
604a9f12690SJung-uk Kim /*
605709fac06SJung-uk Kim  * utosi - Support for the _OSI predefined control method
606709fac06SJung-uk Kim  */
607709fac06SJung-uk Kim ACPI_STATUS
608709fac06SJung-uk Kim AcpiUtInitializeInterfaces (
609709fac06SJung-uk Kim     void);
610709fac06SJung-uk Kim 
611709fac06SJung-uk Kim void
612709fac06SJung-uk Kim AcpiUtInterfaceTerminate (
613709fac06SJung-uk Kim     void);
614709fac06SJung-uk Kim 
615709fac06SJung-uk Kim ACPI_STATUS
616709fac06SJung-uk Kim AcpiUtInstallInterface (
617709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
618709fac06SJung-uk Kim 
619709fac06SJung-uk Kim ACPI_STATUS
620709fac06SJung-uk Kim AcpiUtRemoveInterface (
621709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
622709fac06SJung-uk Kim 
623709fac06SJung-uk Kim ACPI_INTERFACE_INFO *
624709fac06SJung-uk Kim AcpiUtGetInterface (
625709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
626709fac06SJung-uk Kim 
627709fac06SJung-uk Kim ACPI_STATUS
628709fac06SJung-uk Kim AcpiUtOsiImplementation (
629709fac06SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
630709fac06SJung-uk Kim 
631709fac06SJung-uk Kim 
632709fac06SJung-uk Kim /*
633a9f12690SJung-uk Kim  * utstate - Generic state creation/cache routines
634a9f12690SJung-uk Kim  */
635a9f12690SJung-uk Kim void
636a9f12690SJung-uk Kim AcpiUtPushGenericState (
637a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead,
638a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
639a9f12690SJung-uk Kim 
640a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
641a9f12690SJung-uk Kim AcpiUtPopGenericState (
642a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead);
643a9f12690SJung-uk Kim 
644a9f12690SJung-uk Kim 
645a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
646a9f12690SJung-uk Kim AcpiUtCreateGenericState (
647a9f12690SJung-uk Kim     void);
648a9f12690SJung-uk Kim 
649a9f12690SJung-uk Kim ACPI_THREAD_STATE *
650a9f12690SJung-uk Kim AcpiUtCreateThreadState (
651a9f12690SJung-uk Kim     void);
652a9f12690SJung-uk Kim 
653a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
654a9f12690SJung-uk Kim AcpiUtCreateUpdateState (
655a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
656a9f12690SJung-uk Kim     UINT16                  Action);
657a9f12690SJung-uk Kim 
658a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
659a9f12690SJung-uk Kim AcpiUtCreatePkgState (
660a9f12690SJung-uk Kim     void                    *InternalObject,
661a9f12690SJung-uk Kim     void                    *ExternalObject,
662a9f12690SJung-uk Kim     UINT16                  Index);
663a9f12690SJung-uk Kim 
664a9f12690SJung-uk Kim ACPI_STATUS
665a9f12690SJung-uk Kim AcpiUtCreateUpdateStateAndPush (
666a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
667a9f12690SJung-uk Kim     UINT16                  Action,
668a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
669a9f12690SJung-uk Kim 
670a9f12690SJung-uk Kim ACPI_STATUS
671a9f12690SJung-uk Kim AcpiUtCreatePkgStateAndPush (
672a9f12690SJung-uk Kim     void                    *InternalObject,
673a9f12690SJung-uk Kim     void                    *ExternalObject,
674a9f12690SJung-uk Kim     UINT16                  Index,
675a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
676a9f12690SJung-uk Kim 
677a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
678a9f12690SJung-uk Kim AcpiUtCreateControlState (
679a9f12690SJung-uk Kim     void);
680a9f12690SJung-uk Kim 
681a9f12690SJung-uk Kim void
682a9f12690SJung-uk Kim AcpiUtDeleteGenericState (
683a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
684a9f12690SJung-uk Kim 
685a9f12690SJung-uk Kim 
686a9f12690SJung-uk Kim /*
687a9f12690SJung-uk Kim  * utmath
688a9f12690SJung-uk Kim  */
689a9f12690SJung-uk Kim ACPI_STATUS
690a9f12690SJung-uk Kim AcpiUtDivide (
6919a179dd8SJung-uk Kim     UINT64                  InDividend,
6929a179dd8SJung-uk Kim     UINT64                  InDivisor,
6939a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
6949a179dd8SJung-uk Kim     UINT64                  *OutRemainder);
695a9f12690SJung-uk Kim 
696a9f12690SJung-uk Kim ACPI_STATUS
697a9f12690SJung-uk Kim AcpiUtShortDivide (
6989a179dd8SJung-uk Kim     UINT64                  InDividend,
699a9f12690SJung-uk Kim     UINT32                  Divisor,
7009a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
701a9f12690SJung-uk Kim     UINT32                  *OutRemainder);
702a9f12690SJung-uk Kim 
703a9f12690SJung-uk Kim /*
704a9f12690SJung-uk Kim  * utmisc
705a9f12690SJung-uk Kim  */
706a9f12690SJung-uk Kim const char *
707a9f12690SJung-uk Kim AcpiUtValidateException (
708a9f12690SJung-uk Kim     ACPI_STATUS             Status);
709a9f12690SJung-uk Kim 
710a9f12690SJung-uk Kim BOOLEAN
711d6dd1baeSJung-uk Kim AcpiUtIsPciRootBridge (
712d6dd1baeSJung-uk Kim     char                    *Id);
713d6dd1baeSJung-uk Kim 
714d6dd1baeSJung-uk Kim BOOLEAN
715a9f12690SJung-uk Kim AcpiUtIsAmlTable (
716a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       *Table);
717a9f12690SJung-uk Kim 
718a9f12690SJung-uk Kim ACPI_STATUS
719a9f12690SJung-uk Kim AcpiUtAllocateOwnerId (
720a9f12690SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
721a9f12690SJung-uk Kim 
722a9f12690SJung-uk Kim void
723a9f12690SJung-uk Kim AcpiUtReleaseOwnerId (
724a9f12690SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
725a9f12690SJung-uk Kim 
726a9f12690SJung-uk Kim ACPI_STATUS
727a9f12690SJung-uk Kim AcpiUtWalkPackageTree (
728a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
729a9f12690SJung-uk Kim     void                    *TargetObject,
730a9f12690SJung-uk Kim     ACPI_PKG_CALLBACK       WalkCallback,
731a9f12690SJung-uk Kim     void                    *Context);
732a9f12690SJung-uk Kim 
733a9f12690SJung-uk Kim void
734a9f12690SJung-uk Kim AcpiUtStrupr (
735a9f12690SJung-uk Kim     char                    *SrcString);
736a9f12690SJung-uk Kim 
737a9f12690SJung-uk Kim void
738a88e22b7SJung-uk Kim AcpiUtStrlwr (
739a88e22b7SJung-uk Kim     char                    *SrcString);
740a88e22b7SJung-uk Kim 
741*ec3fc72fSJung-uk Kim int
742*ec3fc72fSJung-uk Kim AcpiUtStricmp (
743*ec3fc72fSJung-uk Kim     char                    *String1,
744*ec3fc72fSJung-uk Kim     char                    *String2);
745*ec3fc72fSJung-uk Kim 
746a88e22b7SJung-uk Kim void
747a9f12690SJung-uk Kim AcpiUtPrintString (
748a9f12690SJung-uk Kim     char                    *String,
749a9f12690SJung-uk Kim     UINT8                   MaxLength);
750a9f12690SJung-uk Kim 
751a9f12690SJung-uk Kim BOOLEAN
752a9f12690SJung-uk Kim AcpiUtValidAcpiName (
753a9f12690SJung-uk Kim     UINT32                  Name);
754a9f12690SJung-uk Kim 
755a9f12690SJung-uk Kim void
756a9f12690SJung-uk Kim AcpiUtRepairName (
757a9f12690SJung-uk Kim     char                    *Name);
758a9f12690SJung-uk Kim 
759a9f12690SJung-uk Kim BOOLEAN
760a9f12690SJung-uk Kim AcpiUtValidAcpiChar (
761a9f12690SJung-uk Kim     char                    Character,
762a9f12690SJung-uk Kim     UINT32                  Position);
763a9f12690SJung-uk Kim 
764a9f12690SJung-uk Kim ACPI_STATUS
765a9f12690SJung-uk Kim AcpiUtStrtoul64 (
766a9f12690SJung-uk Kim     char                    *String,
767a9f12690SJung-uk Kim     UINT32                  Base,
7689a179dd8SJung-uk Kim     UINT64                  *RetInteger);
769a9f12690SJung-uk Kim 
770a9f12690SJung-uk Kim /* Values for Base above (16=Hex, 10=Decimal) */
771a9f12690SJung-uk Kim 
772a9f12690SJung-uk Kim #define ACPI_ANY_BASE        0
773a9f12690SJung-uk Kim 
774a9f12690SJung-uk Kim UINT32
775a9f12690SJung-uk Kim AcpiUtDwordByteSwap (
776a9f12690SJung-uk Kim     UINT32                  Value);
777a9f12690SJung-uk Kim 
778a9f12690SJung-uk Kim void
779a9f12690SJung-uk Kim AcpiUtSetIntegerWidth (
780a9f12690SJung-uk Kim     UINT8                   Revision);
781a9f12690SJung-uk Kim 
782a9f12690SJung-uk Kim #ifdef ACPI_DEBUG_OUTPUT
783a9f12690SJung-uk Kim void
784a9f12690SJung-uk Kim AcpiUtDisplayInitPathname (
785a9f12690SJung-uk Kim     UINT8                   Type,
786a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *ObjHandle,
787a9f12690SJung-uk Kim     char                    *Path);
788a9f12690SJung-uk Kim #endif
789a9f12690SJung-uk Kim 
790a9f12690SJung-uk Kim 
791a9f12690SJung-uk Kim /*
792a9f12690SJung-uk Kim  * utresrc
793a9f12690SJung-uk Kim  */
794a9f12690SJung-uk Kim ACPI_STATUS
795a9f12690SJung-uk Kim AcpiUtWalkAmlResources (
796a9f12690SJung-uk Kim     UINT8                   *Aml,
797a9f12690SJung-uk Kim     ACPI_SIZE               AmlLength,
798a9f12690SJung-uk Kim     ACPI_WALK_AML_CALLBACK  UserFunction,
799a9f12690SJung-uk Kim     void                    *Context);
800a9f12690SJung-uk Kim 
801a9f12690SJung-uk Kim ACPI_STATUS
802a9f12690SJung-uk Kim AcpiUtValidateResource (
803a9f12690SJung-uk Kim     void                    *Aml,
804a9f12690SJung-uk Kim     UINT8                   *ReturnIndex);
805a9f12690SJung-uk Kim 
806a9f12690SJung-uk Kim UINT32
807a9f12690SJung-uk Kim AcpiUtGetDescriptorLength (
808a9f12690SJung-uk Kim     void                    *Aml);
809a9f12690SJung-uk Kim 
810a9f12690SJung-uk Kim UINT16
811a9f12690SJung-uk Kim AcpiUtGetResourceLength (
812a9f12690SJung-uk Kim     void                    *Aml);
813a9f12690SJung-uk Kim 
814a9f12690SJung-uk Kim UINT8
815a9f12690SJung-uk Kim AcpiUtGetResourceHeaderLength (
816a9f12690SJung-uk Kim     void                    *Aml);
817a9f12690SJung-uk Kim 
818a9f12690SJung-uk Kim UINT8
819a9f12690SJung-uk Kim AcpiUtGetResourceType (
820a9f12690SJung-uk Kim     void                    *Aml);
821a9f12690SJung-uk Kim 
822a9f12690SJung-uk Kim ACPI_STATUS
823a9f12690SJung-uk Kim AcpiUtGetResourceEndTag (
824a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc,
825a9f12690SJung-uk Kim     UINT8                   **EndTag);
826a9f12690SJung-uk Kim 
827a9f12690SJung-uk Kim 
828a9f12690SJung-uk Kim /*
829a9f12690SJung-uk Kim  * utmutex - mutex support
830a9f12690SJung-uk Kim  */
831a9f12690SJung-uk Kim ACPI_STATUS
832a9f12690SJung-uk Kim AcpiUtMutexInitialize (
833a9f12690SJung-uk Kim     void);
834a9f12690SJung-uk Kim 
835a9f12690SJung-uk Kim void
836a9f12690SJung-uk Kim AcpiUtMutexTerminate (
837a9f12690SJung-uk Kim     void);
838a9f12690SJung-uk Kim 
839a9f12690SJung-uk Kim ACPI_STATUS
840a9f12690SJung-uk Kim AcpiUtAcquireMutex (
841a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
842a9f12690SJung-uk Kim 
843a9f12690SJung-uk Kim ACPI_STATUS
844a9f12690SJung-uk Kim AcpiUtReleaseMutex (
845a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
846a9f12690SJung-uk Kim 
847a9f12690SJung-uk Kim 
848a9f12690SJung-uk Kim /*
849a9f12690SJung-uk Kim  * utalloc - memory allocation and object caching
850a9f12690SJung-uk Kim  */
851a9f12690SJung-uk Kim ACPI_STATUS
852a9f12690SJung-uk Kim AcpiUtCreateCaches (
853a9f12690SJung-uk Kim     void);
854a9f12690SJung-uk Kim 
855a9f12690SJung-uk Kim ACPI_STATUS
856a9f12690SJung-uk Kim AcpiUtDeleteCaches (
857a9f12690SJung-uk Kim     void);
858a9f12690SJung-uk Kim 
859a9f12690SJung-uk Kim ACPI_STATUS
860a9f12690SJung-uk Kim AcpiUtValidateBuffer (
861a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer);
862a9f12690SJung-uk Kim 
863a9f12690SJung-uk Kim ACPI_STATUS
864a9f12690SJung-uk Kim AcpiUtInitializeBuffer (
865a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer,
866a9f12690SJung-uk Kim     ACPI_SIZE               RequiredLength);
867a9f12690SJung-uk Kim 
868a9f12690SJung-uk Kim void *
869a9f12690SJung-uk Kim AcpiUtAllocate (
870a9f12690SJung-uk Kim     ACPI_SIZE               Size,
871a9f12690SJung-uk Kim     UINT32                  Component,
872a9f12690SJung-uk Kim     const char              *Module,
873a9f12690SJung-uk Kim     UINT32                  Line);
874a9f12690SJung-uk Kim 
875a9f12690SJung-uk Kim void *
876a9f12690SJung-uk Kim AcpiUtAllocateZeroed (
877a9f12690SJung-uk Kim     ACPI_SIZE               Size,
878a9f12690SJung-uk Kim     UINT32                  Component,
879a9f12690SJung-uk Kim     const char              *Module,
880a9f12690SJung-uk Kim     UINT32                  Line);
881a9f12690SJung-uk Kim 
882a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS
883a9f12690SJung-uk Kim void *
884a9f12690SJung-uk Kim AcpiUtAllocateAndTrack (
885a9f12690SJung-uk Kim     ACPI_SIZE               Size,
886a9f12690SJung-uk Kim     UINT32                  Component,
887a9f12690SJung-uk Kim     const char              *Module,
888a9f12690SJung-uk Kim     UINT32                  Line);
889a9f12690SJung-uk Kim 
890a9f12690SJung-uk Kim void *
891a9f12690SJung-uk Kim AcpiUtAllocateZeroedAndTrack (
892a9f12690SJung-uk Kim     ACPI_SIZE               Size,
893a9f12690SJung-uk Kim     UINT32                  Component,
894a9f12690SJung-uk Kim     const char              *Module,
895a9f12690SJung-uk Kim     UINT32                  Line);
896a9f12690SJung-uk Kim 
897a9f12690SJung-uk Kim void
898a9f12690SJung-uk Kim AcpiUtFreeAndTrack (
899a9f12690SJung-uk Kim     void                    *Address,
900a9f12690SJung-uk Kim     UINT32                  Component,
901a9f12690SJung-uk Kim     const char              *Module,
902a9f12690SJung-uk Kim     UINT32                  Line);
903a9f12690SJung-uk Kim 
904a9f12690SJung-uk Kim void
905a9f12690SJung-uk Kim AcpiUtDumpAllocationInfo (
906a9f12690SJung-uk Kim     void);
907a9f12690SJung-uk Kim 
908a9f12690SJung-uk Kim void
909a9f12690SJung-uk Kim AcpiUtDumpAllocations (
910a9f12690SJung-uk Kim     UINT32                  Component,
911a9f12690SJung-uk Kim     const char              *Module);
912a9f12690SJung-uk Kim 
913a9f12690SJung-uk Kim ACPI_STATUS
914a9f12690SJung-uk Kim AcpiUtCreateList (
915a9f12690SJung-uk Kim     char                    *ListName,
916a9f12690SJung-uk Kim     UINT16                  ObjectSize,
917a9f12690SJung-uk Kim     ACPI_MEMORY_LIST        **ReturnCache);
918a9f12690SJung-uk Kim 
91942fecd12SJung-uk Kim #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
920a9f12690SJung-uk Kim 
921*ec3fc72fSJung-uk Kim /*
922*ec3fc72fSJung-uk Kim  * utaddress - address range check
923*ec3fc72fSJung-uk Kim  */
924*ec3fc72fSJung-uk Kim ACPI_STATUS
925*ec3fc72fSJung-uk Kim AcpiUtAddAddressRange (
926*ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
927*ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
928*ec3fc72fSJung-uk Kim     UINT32                  Length,
929*ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
930*ec3fc72fSJung-uk Kim 
931*ec3fc72fSJung-uk Kim void
932*ec3fc72fSJung-uk Kim AcpiUtRemoveAddressRange (
933*ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
934*ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
935*ec3fc72fSJung-uk Kim 
936*ec3fc72fSJung-uk Kim UINT32
937*ec3fc72fSJung-uk Kim AcpiUtCheckAddressRange (
938*ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
939*ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
940*ec3fc72fSJung-uk Kim     UINT32                  Length,
941*ec3fc72fSJung-uk Kim     BOOLEAN                 Warn);
942*ec3fc72fSJung-uk Kim 
943*ec3fc72fSJung-uk Kim void
944*ec3fc72fSJung-uk Kim AcpiUtDeleteAddressLists (
945*ec3fc72fSJung-uk Kim     void);
94642fecd12SJung-uk Kim 
94742fecd12SJung-uk Kim /*
94842fecd12SJung-uk Kim  * utxferror - various error/warning output functions
94942fecd12SJung-uk Kim  */
95042fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
95142fecd12SJung-uk Kim AcpiUtPredefinedWarning (
95242fecd12SJung-uk Kim     const char              *ModuleName,
95342fecd12SJung-uk Kim     UINT32                  LineNumber,
95442fecd12SJung-uk Kim     char                    *Pathname,
95542fecd12SJung-uk Kim     UINT8                   NodeFlags,
95642fecd12SJung-uk Kim     const char              *Format,
95742fecd12SJung-uk Kim     ...);
95842fecd12SJung-uk Kim 
95942fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
96042fecd12SJung-uk Kim AcpiUtPredefinedInfo (
96142fecd12SJung-uk Kim     const char              *ModuleName,
96242fecd12SJung-uk Kim     UINT32                  LineNumber,
96342fecd12SJung-uk Kim     char                    *Pathname,
96442fecd12SJung-uk Kim     UINT8                   NodeFlags,
96542fecd12SJung-uk Kim     const char              *Format,
96642fecd12SJung-uk Kim     ...);
96742fecd12SJung-uk Kim 
96842fecd12SJung-uk Kim void
96942fecd12SJung-uk Kim AcpiUtNamespaceError (
97042fecd12SJung-uk Kim     const char              *ModuleName,
97142fecd12SJung-uk Kim     UINT32                  LineNumber,
97242fecd12SJung-uk Kim     const char              *InternalName,
97342fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
97442fecd12SJung-uk Kim 
97542fecd12SJung-uk Kim void
97642fecd12SJung-uk Kim AcpiUtMethodError (
97742fecd12SJung-uk Kim     const char              *ModuleName,
97842fecd12SJung-uk Kim     UINT32                  LineNumber,
97942fecd12SJung-uk Kim     const char              *Message,
98042fecd12SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
98142fecd12SJung-uk Kim     const char              *Path,
98242fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
983a9f12690SJung-uk Kim 
984a9f12690SJung-uk Kim #endif /* _ACUTILS_H */
985