xref: /freebsd/sys/contrib/dev/acpica/include/acutils.h (revision fe0f0bbb19f4f267df5c6249d1af4d6f665dfd52)
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 /*
81c0e1b6dSJung-uk Kim  * Copyright (C) 2000 - 2015, 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 
53313a0c13SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || 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 
100a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN \
101a9d8d09cSJung-uk Kim     FILE                    *OutputFile = AcpiGbl_OutputFile; \
102a9d8d09cSJung-uk Kim     AcpiOsRedirectOutput (stderr);
103a9d8d09cSJung-uk Kim 
104a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END \
105a9d8d09cSJung-uk Kim     AcpiOsRedirectOutput (OutputFile);
106a9d8d09cSJung-uk Kim 
107a9d8d09cSJung-uk Kim #else
108a9d8d09cSJung-uk Kim /*
109a9d8d09cSJung-uk Kim  * non-iASL case - no redirection, nothing to do
110a9d8d09cSJung-uk Kim  */
111a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN
112a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END
113a9d8d09cSJung-uk Kim #endif
114a9d8d09cSJung-uk Kim 
115a9d8d09cSJung-uk Kim /*
116a9d8d09cSJung-uk Kim  * Common error message prefixes
117a9d8d09cSJung-uk Kim  */
118a9d8d09cSJung-uk Kim #define ACPI_MSG_ERROR          "ACPI Error: "
119a9d8d09cSJung-uk Kim #define ACPI_MSG_EXCEPTION      "ACPI Exception: "
120a9d8d09cSJung-uk Kim #define ACPI_MSG_WARNING        "ACPI Warning: "
121a9d8d09cSJung-uk Kim #define ACPI_MSG_INFO           "ACPI: "
122a9d8d09cSJung-uk Kim 
123a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_ERROR     "ACPI BIOS Error (bug): "
124a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_WARNING   "ACPI BIOS Warning (bug): "
125a9d8d09cSJung-uk Kim 
126a9d8d09cSJung-uk Kim /*
127a9d8d09cSJung-uk Kim  * Common message suffix
128a9d8d09cSJung-uk Kim  */
129a9d8d09cSJung-uk Kim #define ACPI_MSG_SUFFIX \
130a9d8d09cSJung-uk Kim     AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
131a9d8d09cSJung-uk Kim 
132a9d8d09cSJung-uk Kim 
133a9f12690SJung-uk Kim /* Types for Resource descriptor entries */
134a9f12690SJung-uk Kim 
135a9f12690SJung-uk Kim #define ACPI_INVALID_RESOURCE           0
136a9f12690SJung-uk Kim #define ACPI_FIXED_LENGTH               1
137a9f12690SJung-uk Kim #define ACPI_VARIABLE_LENGTH            2
138a9f12690SJung-uk Kim #define ACPI_SMALL_VARIABLE_LENGTH      3
139a9f12690SJung-uk Kim 
140a9f12690SJung-uk Kim typedef
141a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
142a9f12690SJung-uk Kim     UINT8                   *Aml,
143a9f12690SJung-uk Kim     UINT32                  Length,
144a9f12690SJung-uk Kim     UINT32                  Offset,
145a9f12690SJung-uk Kim     UINT8                   ResourceIndex,
146efcc2a30SJung-uk Kim     void                    **Context);
147a9f12690SJung-uk Kim 
148a9f12690SJung-uk Kim typedef
149a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_PKG_CALLBACK) (
150a9f12690SJung-uk Kim     UINT8                   ObjectType,
151a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
152a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State,
153a9f12690SJung-uk Kim     void                    *Context);
154a9f12690SJung-uk Kim 
155a9f12690SJung-uk Kim typedef struct acpi_pkg_info
156a9f12690SJung-uk Kim {
157a9f12690SJung-uk Kim     UINT8                   *FreeSpace;
158a9f12690SJung-uk Kim     ACPI_SIZE               Length;
159a9f12690SJung-uk Kim     UINT32                  ObjectSpace;
160a9f12690SJung-uk Kim     UINT32                  NumPackages;
161a9f12690SJung-uk Kim 
162a9f12690SJung-uk Kim } ACPI_PKG_INFO;
163a9f12690SJung-uk Kim 
1649c7c683cSJung-uk Kim /* Object reference counts */
1659c7c683cSJung-uk Kim 
166a9f12690SJung-uk Kim #define REF_INCREMENT       (UINT16) 0
167a9f12690SJung-uk Kim #define REF_DECREMENT       (UINT16) 1
168a9f12690SJung-uk Kim 
169a9f12690SJung-uk Kim /* AcpiUtDumpBuffer */
170a9f12690SJung-uk Kim 
171a9f12690SJung-uk Kim #define DB_BYTE_DISPLAY     1
172a9f12690SJung-uk Kim #define DB_WORD_DISPLAY     2
173a9f12690SJung-uk Kim #define DB_DWORD_DISPLAY    4
174a9f12690SJung-uk Kim #define DB_QWORD_DISPLAY    8
175a9f12690SJung-uk Kim 
176*fe0f0bbbSJung-uk Kim 
177*fe0f0bbbSJung-uk Kim /*
178*fe0f0bbbSJung-uk Kim  * utnonansi - Non-ANSI C library functions
179*fe0f0bbbSJung-uk Kim  */
180*fe0f0bbbSJung-uk Kim void
181*fe0f0bbbSJung-uk Kim AcpiUtStrupr (
182*fe0f0bbbSJung-uk Kim     char                    *SrcString);
183*fe0f0bbbSJung-uk Kim 
184*fe0f0bbbSJung-uk Kim void
185*fe0f0bbbSJung-uk Kim AcpiUtStrlwr (
186*fe0f0bbbSJung-uk Kim     char                    *SrcString);
187*fe0f0bbbSJung-uk Kim 
188*fe0f0bbbSJung-uk Kim int
189*fe0f0bbbSJung-uk Kim AcpiUtStricmp (
190*fe0f0bbbSJung-uk Kim     char                    *String1,
191*fe0f0bbbSJung-uk Kim     char                    *String2);
192*fe0f0bbbSJung-uk Kim 
193*fe0f0bbbSJung-uk Kim ACPI_STATUS
194*fe0f0bbbSJung-uk Kim AcpiUtStrtoul64 (
195*fe0f0bbbSJung-uk Kim     char                    *String,
196*fe0f0bbbSJung-uk Kim     UINT32                  Base,
197*fe0f0bbbSJung-uk Kim     UINT64                  *RetInteger);
198*fe0f0bbbSJung-uk Kim 
199*fe0f0bbbSJung-uk Kim 
200a9f12690SJung-uk Kim /*
201a9f12690SJung-uk Kim  * utglobal - Global data structures and procedures
202a9f12690SJung-uk Kim  */
203a9f12690SJung-uk Kim ACPI_STATUS
204a9f12690SJung-uk Kim AcpiUtInitGlobals (
205a9f12690SJung-uk Kim     void);
206a9f12690SJung-uk Kim 
207a9f12690SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
208a9f12690SJung-uk Kim 
209a9f12690SJung-uk Kim char *
210a9f12690SJung-uk Kim AcpiUtGetMutexName (
211a9f12690SJung-uk Kim     UINT32                  MutexId);
212a9f12690SJung-uk Kim 
213a9f12690SJung-uk Kim const char *
214a9f12690SJung-uk Kim AcpiUtGetNotifyName (
215313a0c13SJung-uk Kim     UINT32                  NotifyValue,
216313a0c13SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
217a9f12690SJung-uk Kim #endif
218a9f12690SJung-uk Kim 
219a9f12690SJung-uk Kim char *
220a9f12690SJung-uk Kim AcpiUtGetTypeName (
221a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
222a9f12690SJung-uk Kim 
223a9f12690SJung-uk Kim char *
224a9f12690SJung-uk Kim AcpiUtGetNodeName (
225a9f12690SJung-uk Kim     void                    *Object);
226a9f12690SJung-uk Kim 
227a9f12690SJung-uk Kim char *
228a9f12690SJung-uk Kim AcpiUtGetDescriptorName (
229a9f12690SJung-uk Kim     void                    *Object);
230a9f12690SJung-uk Kim 
231a9f12690SJung-uk Kim const char *
232a9f12690SJung-uk Kim AcpiUtGetReferenceName (
233a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
234a9f12690SJung-uk Kim 
235a9f12690SJung-uk Kim char *
236a9f12690SJung-uk Kim AcpiUtGetObjectTypeName (
237a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc);
238a9f12690SJung-uk Kim 
239a9f12690SJung-uk Kim char *
240a9f12690SJung-uk Kim AcpiUtGetRegionName (
241a9f12690SJung-uk Kim     UINT8                   SpaceId);
242a9f12690SJung-uk Kim 
243a9f12690SJung-uk Kim char *
244a9f12690SJung-uk Kim AcpiUtGetEventName (
245a9f12690SJung-uk Kim     UINT32                  EventId);
246a9f12690SJung-uk Kim 
247a9f12690SJung-uk Kim char
248a9f12690SJung-uk Kim AcpiUtHexToAsciiChar (
2499a179dd8SJung-uk Kim     UINT64                  Integer,
250a9f12690SJung-uk Kim     UINT32                  Position);
251a9f12690SJung-uk Kim 
252313a0c13SJung-uk Kim UINT8
253313a0c13SJung-uk Kim AcpiUtAsciiCharToHex (
254313a0c13SJung-uk Kim     int                     HexChar);
255313a0c13SJung-uk Kim 
256a9f12690SJung-uk Kim BOOLEAN
257a9f12690SJung-uk Kim AcpiUtValidObjectType (
258a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
259a9f12690SJung-uk Kim 
260a9f12690SJung-uk Kim 
261a9f12690SJung-uk Kim /*
262a9f12690SJung-uk Kim  * utinit - miscellaneous initialization and shutdown
263a9f12690SJung-uk Kim  */
264a9f12690SJung-uk Kim ACPI_STATUS
265a9f12690SJung-uk Kim AcpiUtHardwareInitialize (
266a9f12690SJung-uk Kim     void);
267a9f12690SJung-uk Kim 
268a9f12690SJung-uk Kim void
269a9f12690SJung-uk Kim AcpiUtSubsystemShutdown (
270a9f12690SJung-uk Kim     void);
271a9f12690SJung-uk Kim 
272a9f12690SJung-uk Kim 
273a9f12690SJung-uk Kim /*
274a9f12690SJung-uk Kim  * utcopy - Object construction and conversion interfaces
275a9f12690SJung-uk Kim  */
276a9f12690SJung-uk Kim ACPI_STATUS
277a9f12690SJung-uk Kim AcpiUtBuildSimpleObject(
278a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
279a9f12690SJung-uk Kim     ACPI_OBJECT             *UserObj,
280a9f12690SJung-uk Kim     UINT8                   *DataSpace,
281a9f12690SJung-uk Kim     UINT32                  *BufferSpaceUsed);
282a9f12690SJung-uk Kim 
283a9f12690SJung-uk Kim ACPI_STATUS
284a9f12690SJung-uk Kim AcpiUtBuildPackageObject (
285a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
286a9f12690SJung-uk Kim     UINT8                   *Buffer,
287a9f12690SJung-uk Kim     UINT32                  *SpaceUsed);
288a9f12690SJung-uk Kim 
289a9f12690SJung-uk Kim ACPI_STATUS
290a9f12690SJung-uk Kim AcpiUtCopyIobjectToEobject (
291a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
292a9f12690SJung-uk Kim     ACPI_BUFFER             *RetBuffer);
293a9f12690SJung-uk Kim 
294a9f12690SJung-uk Kim ACPI_STATUS
295a9f12690SJung-uk Kim AcpiUtCopyEobjectToIobject (
296a9f12690SJung-uk Kim     ACPI_OBJECT             *Obj,
297a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **InternalObj);
298a9f12690SJung-uk Kim 
299a9f12690SJung-uk Kim ACPI_STATUS
300a9f12690SJung-uk Kim AcpiUtCopyISimpleToIsimple (
301a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObj,
302a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *DestObj);
303a9f12690SJung-uk Kim 
304a9f12690SJung-uk Kim ACPI_STATUS
305a9f12690SJung-uk Kim AcpiUtCopyIobjectToIobject (
306a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceDesc,
307a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **DestDesc,
308a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
309a9f12690SJung-uk Kim 
310a9f12690SJung-uk Kim 
311a9f12690SJung-uk Kim /*
312a9f12690SJung-uk Kim  * utcreate - Object creation
313a9f12690SJung-uk Kim  */
314a9f12690SJung-uk Kim ACPI_STATUS
315a9f12690SJung-uk Kim AcpiUtUpdateObjectReference (
316a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
317a9f12690SJung-uk Kim     UINT16                  Action);
318a9f12690SJung-uk Kim 
319a9f12690SJung-uk Kim 
320a9f12690SJung-uk Kim /*
321a9f12690SJung-uk Kim  * utdebug - Debug interfaces
322a9f12690SJung-uk Kim  */
323a9f12690SJung-uk Kim void
324a9f12690SJung-uk Kim AcpiUtInitStackPtrTrace (
325a9f12690SJung-uk Kim     void);
326a9f12690SJung-uk Kim 
327a9f12690SJung-uk Kim void
328a9f12690SJung-uk Kim AcpiUtTrackStackPtr (
329a9f12690SJung-uk Kim     void);
330a9f12690SJung-uk Kim 
331a9f12690SJung-uk Kim void
332a9f12690SJung-uk Kim AcpiUtTrace (
333a9f12690SJung-uk Kim     UINT32                  LineNumber,
334a9f12690SJung-uk Kim     const char              *FunctionName,
335a9f12690SJung-uk Kim     const char              *ModuleName,
336a9f12690SJung-uk Kim     UINT32                  ComponentId);
337a9f12690SJung-uk Kim 
338a9f12690SJung-uk Kim void
339a9f12690SJung-uk Kim AcpiUtTracePtr (
340a9f12690SJung-uk Kim     UINT32                  LineNumber,
341a9f12690SJung-uk Kim     const char              *FunctionName,
342a9f12690SJung-uk Kim     const char              *ModuleName,
343a9f12690SJung-uk Kim     UINT32                  ComponentId,
344a9f12690SJung-uk Kim     void                    *Pointer);
345a9f12690SJung-uk Kim 
346a9f12690SJung-uk Kim void
347a9f12690SJung-uk Kim AcpiUtTraceU32 (
348a9f12690SJung-uk Kim     UINT32                  LineNumber,
349a9f12690SJung-uk Kim     const char              *FunctionName,
350a9f12690SJung-uk Kim     const char              *ModuleName,
351a9f12690SJung-uk Kim     UINT32                  ComponentId,
352a9f12690SJung-uk Kim     UINT32                  Integer);
353a9f12690SJung-uk Kim 
354a9f12690SJung-uk Kim void
355a9f12690SJung-uk Kim AcpiUtTraceStr (
356a9f12690SJung-uk Kim     UINT32                  LineNumber,
357a9f12690SJung-uk Kim     const char              *FunctionName,
358a9f12690SJung-uk Kim     const char              *ModuleName,
359a9f12690SJung-uk Kim     UINT32                  ComponentId,
360a9f12690SJung-uk Kim     char                    *String);
361a9f12690SJung-uk Kim 
362a9f12690SJung-uk Kim void
363a9f12690SJung-uk Kim AcpiUtExit (
364a9f12690SJung-uk Kim     UINT32                  LineNumber,
365a9f12690SJung-uk Kim     const char              *FunctionName,
366a9f12690SJung-uk Kim     const char              *ModuleName,
367a9f12690SJung-uk Kim     UINT32                  ComponentId);
368a9f12690SJung-uk Kim 
369a9f12690SJung-uk Kim void
370a9f12690SJung-uk Kim AcpiUtStatusExit (
371a9f12690SJung-uk Kim     UINT32                  LineNumber,
372a9f12690SJung-uk Kim     const char              *FunctionName,
373a9f12690SJung-uk Kim     const char              *ModuleName,
374a9f12690SJung-uk Kim     UINT32                  ComponentId,
375a9f12690SJung-uk Kim     ACPI_STATUS             Status);
376a9f12690SJung-uk Kim 
377a9f12690SJung-uk Kim void
378a9f12690SJung-uk Kim AcpiUtValueExit (
379a9f12690SJung-uk Kim     UINT32                  LineNumber,
380a9f12690SJung-uk Kim     const char              *FunctionName,
381a9f12690SJung-uk Kim     const char              *ModuleName,
382a9f12690SJung-uk Kim     UINT32                  ComponentId,
3839a179dd8SJung-uk Kim     UINT64                  Value);
384a9f12690SJung-uk Kim 
385a9f12690SJung-uk Kim void
386a9f12690SJung-uk Kim AcpiUtPtrExit (
387a9f12690SJung-uk Kim     UINT32                  LineNumber,
388a9f12690SJung-uk Kim     const char              *FunctionName,
389a9f12690SJung-uk Kim     const char              *ModuleName,
390a9f12690SJung-uk Kim     UINT32                  ComponentId,
391a9f12690SJung-uk Kim     UINT8                   *Ptr);
392a9f12690SJung-uk Kim 
393a9f12690SJung-uk Kim void
3948ef1a331SJung-uk Kim AcpiUtDebugDumpBuffer (
395a9f12690SJung-uk Kim     UINT8                   *Buffer,
396a9f12690SJung-uk Kim     UINT32                  Count,
397a9f12690SJung-uk Kim     UINT32                  Display,
398f38b0f21SJung-uk Kim     UINT32                  ComponentId);
399a9f12690SJung-uk Kim 
400a9f12690SJung-uk Kim void
4018ef1a331SJung-uk Kim AcpiUtDumpBuffer (
402a9f12690SJung-uk Kim     UINT8                   *Buffer,
403a9f12690SJung-uk Kim     UINT32                  Count,
4048ef1a331SJung-uk Kim     UINT32                  Display,
4058ef1a331SJung-uk Kim     UINT32                  Offset);
406a9f12690SJung-uk Kim 
407313a0c13SJung-uk Kim #ifdef ACPI_APPLICATION
408313a0c13SJung-uk Kim void
409313a0c13SJung-uk Kim AcpiUtDumpBufferToFile (
410313a0c13SJung-uk Kim     ACPI_FILE               File,
411313a0c13SJung-uk Kim     UINT8                   *Buffer,
412313a0c13SJung-uk Kim     UINT32                  Count,
413313a0c13SJung-uk Kim     UINT32                  Display,
414313a0c13SJung-uk Kim     UINT32                  BaseOffset);
415313a0c13SJung-uk Kim #endif
416313a0c13SJung-uk Kim 
417a9f12690SJung-uk Kim void
418a9f12690SJung-uk Kim AcpiUtReportError (
419a9f12690SJung-uk Kim     char                    *ModuleName,
420a9f12690SJung-uk Kim     UINT32                  LineNumber);
421a9f12690SJung-uk Kim 
422a9f12690SJung-uk Kim void
423a9f12690SJung-uk Kim AcpiUtReportInfo (
424a9f12690SJung-uk Kim     char                    *ModuleName,
425a9f12690SJung-uk Kim     UINT32                  LineNumber);
426a9f12690SJung-uk Kim 
427a9f12690SJung-uk Kim void
428a9f12690SJung-uk Kim AcpiUtReportWarning (
429a9f12690SJung-uk Kim     char                    *ModuleName,
430a9f12690SJung-uk Kim     UINT32                  LineNumber);
431a9f12690SJung-uk Kim 
432*fe0f0bbbSJung-uk Kim 
433a9f12690SJung-uk Kim /*
434a9f12690SJung-uk Kim  * utdelete - Object deletion and reference counts
435a9f12690SJung-uk Kim  */
436a9f12690SJung-uk Kim void
437a9f12690SJung-uk Kim AcpiUtAddReference (
438a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
439a9f12690SJung-uk Kim 
440a9f12690SJung-uk Kim void
441a9f12690SJung-uk Kim AcpiUtRemoveReference (
442a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
443a9f12690SJung-uk Kim 
444a9f12690SJung-uk Kim void
445a9f12690SJung-uk Kim AcpiUtDeleteInternalPackageObject (
446a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
447a9f12690SJung-uk Kim 
448a9f12690SJung-uk Kim void
449a9f12690SJung-uk Kim AcpiUtDeleteInternalSimpleObject (
450a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
451a9f12690SJung-uk Kim 
452a9f12690SJung-uk Kim void
453a9f12690SJung-uk Kim AcpiUtDeleteInternalObjectList (
454a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ObjList);
455a9f12690SJung-uk Kim 
456a9f12690SJung-uk Kim 
457a9f12690SJung-uk Kim /*
458a9f12690SJung-uk Kim  * uteval - object evaluation
459a9f12690SJung-uk Kim  */
460a9f12690SJung-uk Kim ACPI_STATUS
461a9f12690SJung-uk Kim AcpiUtEvaluateObject (
462a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *PrefixNode,
463a9f12690SJung-uk Kim     char                    *Path,
464a9f12690SJung-uk Kim     UINT32                  ExpectedReturnBtypes,
465a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ReturnDesc);
466a9f12690SJung-uk Kim 
467a9f12690SJung-uk Kim ACPI_STATUS
468a9f12690SJung-uk Kim AcpiUtEvaluateNumericObject (
469a9f12690SJung-uk Kim     char                    *ObjectName,
470a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
4719a179dd8SJung-uk Kim     UINT64                  *Value);
472a9f12690SJung-uk Kim 
473a9f12690SJung-uk Kim ACPI_STATUS
474a9f12690SJung-uk Kim AcpiUtExecute_STA (
475a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
476a9f12690SJung-uk Kim     UINT32                  *StatusFlags);
477a9f12690SJung-uk Kim 
478a9f12690SJung-uk Kim ACPI_STATUS
479d6dd1baeSJung-uk Kim AcpiUtExecutePowerMethods (
480a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
481d6dd1baeSJung-uk Kim     const char              **MethodNames,
482d6dd1baeSJung-uk Kim     UINT8                   MethodCount,
483d6dd1baeSJung-uk Kim     UINT8                   *OutValues);
484d6dd1baeSJung-uk Kim 
485d6dd1baeSJung-uk Kim 
486d6dd1baeSJung-uk Kim /*
487313a0c13SJung-uk Kim  * utfileio - file operations
488313a0c13SJung-uk Kim  */
489313a0c13SJung-uk Kim #ifdef ACPI_APPLICATION
490313a0c13SJung-uk Kim ACPI_STATUS
491313a0c13SJung-uk Kim AcpiUtReadTableFromFile (
492313a0c13SJung-uk Kim     char                    *Filename,
493313a0c13SJung-uk Kim     ACPI_TABLE_HEADER       **Table);
494313a0c13SJung-uk Kim #endif
495313a0c13SJung-uk Kim 
496313a0c13SJung-uk Kim 
497313a0c13SJung-uk Kim /*
498d6dd1baeSJung-uk Kim  * utids - device ID support
499d6dd1baeSJung-uk Kim  */
500d6dd1baeSJung-uk Kim ACPI_STATUS
501d6dd1baeSJung-uk Kim AcpiUtExecute_HID (
502d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5038ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
504a9f12690SJung-uk Kim 
505a9f12690SJung-uk Kim ACPI_STATUS
506d6dd1baeSJung-uk Kim AcpiUtExecute_UID (
507a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5088ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
5098ef1a331SJung-uk Kim 
5108ef1a331SJung-uk Kim ACPI_STATUS
5118ef1a331SJung-uk Kim AcpiUtExecute_SUB (
5128ef1a331SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5138ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
514d6dd1baeSJung-uk Kim 
515d6dd1baeSJung-uk Kim ACPI_STATUS
516d6dd1baeSJung-uk Kim AcpiUtExecute_CID (
517d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5188ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
519d6dd1baeSJung-uk Kim 
5205ef50723SJung-uk Kim ACPI_STATUS
5215ef50723SJung-uk Kim AcpiUtExecute_CLS (
5225ef50723SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5235ef50723SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
5245ef50723SJung-uk Kim 
525a9f12690SJung-uk Kim 
526a9f12690SJung-uk Kim /*
527a9f12690SJung-uk Kim  * utlock - reader/writer locks
528a9f12690SJung-uk Kim  */
529a9f12690SJung-uk Kim ACPI_STATUS
530a9f12690SJung-uk Kim AcpiUtCreateRwLock (
531a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
532a9f12690SJung-uk Kim 
533a9f12690SJung-uk Kim void
534a9f12690SJung-uk Kim AcpiUtDeleteRwLock (
535a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
536a9f12690SJung-uk Kim 
537a9f12690SJung-uk Kim ACPI_STATUS
538a9f12690SJung-uk Kim AcpiUtAcquireReadLock (
539a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
540a9f12690SJung-uk Kim 
541a9f12690SJung-uk Kim ACPI_STATUS
542a9f12690SJung-uk Kim AcpiUtReleaseReadLock (
543a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
544a9f12690SJung-uk Kim 
545a9f12690SJung-uk Kim ACPI_STATUS
546a9f12690SJung-uk Kim AcpiUtAcquireWriteLock (
547a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
548a9f12690SJung-uk Kim 
549a9f12690SJung-uk Kim void
550a9f12690SJung-uk Kim AcpiUtReleaseWriteLock (
551a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
552a9f12690SJung-uk Kim 
553a9f12690SJung-uk Kim 
554a9f12690SJung-uk Kim /*
555a9f12690SJung-uk Kim  * utobject - internal object create/delete/cache routines
556a9f12690SJung-uk Kim  */
557a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT  *
558a9f12690SJung-uk Kim AcpiUtCreateInternalObjectDbg (
559a9f12690SJung-uk Kim     const char              *ModuleName,
560a9f12690SJung-uk Kim     UINT32                  LineNumber,
561a9f12690SJung-uk Kim     UINT32                  ComponentId,
562a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
563a9f12690SJung-uk Kim 
564a9f12690SJung-uk Kim void *
565a9f12690SJung-uk Kim AcpiUtAllocateObjectDescDbg (
566a9f12690SJung-uk Kim     const char              *ModuleName,
567a9f12690SJung-uk Kim     UINT32                  LineNumber,
568a9f12690SJung-uk Kim     UINT32                  ComponentId);
569a9f12690SJung-uk Kim 
570a9f12690SJung-uk Kim #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
571a9f12690SJung-uk Kim #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
572a9f12690SJung-uk Kim 
573a9f12690SJung-uk Kim void
574a9f12690SJung-uk Kim AcpiUtDeleteObjectDesc (
575a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
576a9f12690SJung-uk Kim 
577a9f12690SJung-uk Kim BOOLEAN
578a9f12690SJung-uk Kim AcpiUtValidInternalObject (
579a9f12690SJung-uk Kim     void                    *Object);
580a9f12690SJung-uk Kim 
581a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
582a9f12690SJung-uk Kim AcpiUtCreatePackageObject (
583a9f12690SJung-uk Kim     UINT32                  Count);
584a9f12690SJung-uk Kim 
585a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
5862272d050SJung-uk Kim AcpiUtCreateIntegerObject (
5872272d050SJung-uk Kim     UINT64                  Value);
5882272d050SJung-uk Kim 
5892272d050SJung-uk Kim ACPI_OPERAND_OBJECT *
590a9f12690SJung-uk Kim AcpiUtCreateBufferObject (
591a9f12690SJung-uk Kim     ACPI_SIZE               BufferSize);
592a9f12690SJung-uk Kim 
593a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
594a9f12690SJung-uk Kim AcpiUtCreateStringObject (
595a9f12690SJung-uk Kim     ACPI_SIZE               StringSize);
596a9f12690SJung-uk Kim 
597a9f12690SJung-uk Kim ACPI_STATUS
598a9f12690SJung-uk Kim AcpiUtGetObjectSize(
599a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
600a9f12690SJung-uk Kim     ACPI_SIZE               *ObjLength);
601a9f12690SJung-uk Kim 
602a9f12690SJung-uk Kim 
603a9f12690SJung-uk Kim /*
604709fac06SJung-uk Kim  * utosi - Support for the _OSI predefined control method
605709fac06SJung-uk Kim  */
606709fac06SJung-uk Kim ACPI_STATUS
607709fac06SJung-uk Kim AcpiUtInitializeInterfaces (
608709fac06SJung-uk Kim     void);
609709fac06SJung-uk Kim 
6109c7c683cSJung-uk Kim ACPI_STATUS
611709fac06SJung-uk Kim AcpiUtInterfaceTerminate (
612709fac06SJung-uk Kim     void);
613709fac06SJung-uk Kim 
614709fac06SJung-uk Kim ACPI_STATUS
615709fac06SJung-uk Kim AcpiUtInstallInterface (
616709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
617709fac06SJung-uk Kim 
618709fac06SJung-uk Kim ACPI_STATUS
619709fac06SJung-uk Kim AcpiUtRemoveInterface (
620709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
621709fac06SJung-uk Kim 
622bf6fac21SJung-uk Kim ACPI_STATUS
623bf6fac21SJung-uk Kim AcpiUtUpdateInterfaces (
624bf6fac21SJung-uk Kim     UINT8                   Action);
625bf6fac21SJung-uk Kim 
626709fac06SJung-uk Kim ACPI_INTERFACE_INFO *
627709fac06SJung-uk Kim AcpiUtGetInterface (
628709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
629709fac06SJung-uk Kim 
630709fac06SJung-uk Kim ACPI_STATUS
631709fac06SJung-uk Kim AcpiUtOsiImplementation (
632709fac06SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
633709fac06SJung-uk Kim 
634709fac06SJung-uk Kim 
635709fac06SJung-uk Kim /*
6369c7c683cSJung-uk Kim  * utpredef - support for predefined names
6379c7c683cSJung-uk Kim  */
6389c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6399c7c683cSJung-uk Kim AcpiUtGetNextPredefinedMethod (
6409c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName);
6419c7c683cSJung-uk Kim 
6429c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6439c7c683cSJung-uk Kim AcpiUtMatchPredefinedMethod (
6449c7c683cSJung-uk Kim     char                        *Name);
6459c7c683cSJung-uk Kim 
6467cf3e94aSJung-uk Kim void
6477cf3e94aSJung-uk Kim AcpiUtGetExpectedReturnTypes (
6487cf3e94aSJung-uk Kim     char                    *Buffer,
6497cf3e94aSJung-uk Kim     UINT32                  ExpectedBtypes);
6507cf3e94aSJung-uk Kim 
6517cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
6529c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6539c7c683cSJung-uk Kim AcpiUtMatchResourceName (
6549c7c683cSJung-uk Kim     char                        *Name);
6559c7c683cSJung-uk Kim 
6569c7c683cSJung-uk Kim void
6579c7c683cSJung-uk Kim AcpiUtDisplayPredefinedMethod (
6589c7c683cSJung-uk Kim     char                        *Buffer,
6599c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName,
6609c7c683cSJung-uk Kim     BOOLEAN                     MultiLine);
6619c7c683cSJung-uk Kim 
6629c7c683cSJung-uk Kim UINT32
6639c7c683cSJung-uk Kim AcpiUtGetResourceBitWidth (
6649c7c683cSJung-uk Kim     char                    *Buffer,
6659c7c683cSJung-uk Kim     UINT16                  Types);
6667cf3e94aSJung-uk Kim #endif
6679c7c683cSJung-uk Kim 
6689c7c683cSJung-uk Kim 
6699c7c683cSJung-uk Kim /*
670a9f12690SJung-uk Kim  * utstate - Generic state creation/cache routines
671a9f12690SJung-uk Kim  */
672a9f12690SJung-uk Kim void
673a9f12690SJung-uk Kim AcpiUtPushGenericState (
674a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead,
675a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
676a9f12690SJung-uk Kim 
677a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
678a9f12690SJung-uk Kim AcpiUtPopGenericState (
679a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead);
680a9f12690SJung-uk Kim 
681a9f12690SJung-uk Kim 
682a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
683a9f12690SJung-uk Kim AcpiUtCreateGenericState (
684a9f12690SJung-uk Kim     void);
685a9f12690SJung-uk Kim 
686a9f12690SJung-uk Kim ACPI_THREAD_STATE *
687a9f12690SJung-uk Kim AcpiUtCreateThreadState (
688a9f12690SJung-uk Kim     void);
689a9f12690SJung-uk Kim 
690a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
691a9f12690SJung-uk Kim AcpiUtCreateUpdateState (
692a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
693a9f12690SJung-uk Kim     UINT16                  Action);
694a9f12690SJung-uk Kim 
695a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
696a9f12690SJung-uk Kim AcpiUtCreatePkgState (
697a9f12690SJung-uk Kim     void                    *InternalObject,
698a9f12690SJung-uk Kim     void                    *ExternalObject,
699a9f12690SJung-uk Kim     UINT16                  Index);
700a9f12690SJung-uk Kim 
701a9f12690SJung-uk Kim ACPI_STATUS
702a9f12690SJung-uk Kim AcpiUtCreateUpdateStateAndPush (
703a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
704a9f12690SJung-uk Kim     UINT16                  Action,
705a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
706a9f12690SJung-uk Kim 
707a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
708a9f12690SJung-uk Kim AcpiUtCreateControlState (
709a9f12690SJung-uk Kim     void);
710a9f12690SJung-uk Kim 
711a9f12690SJung-uk Kim void
712a9f12690SJung-uk Kim AcpiUtDeleteGenericState (
713a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
714a9f12690SJung-uk Kim 
715a9f12690SJung-uk Kim 
716a9f12690SJung-uk Kim /*
717a9f12690SJung-uk Kim  * utmath
718a9f12690SJung-uk Kim  */
719a9f12690SJung-uk Kim ACPI_STATUS
720a9f12690SJung-uk Kim AcpiUtDivide (
7219a179dd8SJung-uk Kim     UINT64                  InDividend,
7229a179dd8SJung-uk Kim     UINT64                  InDivisor,
7239a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
7249a179dd8SJung-uk Kim     UINT64                  *OutRemainder);
725a9f12690SJung-uk Kim 
726a9f12690SJung-uk Kim ACPI_STATUS
727a9f12690SJung-uk Kim AcpiUtShortDivide (
7289a179dd8SJung-uk Kim     UINT64                  InDividend,
729a9f12690SJung-uk Kim     UINT32                  Divisor,
7309a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
731a9f12690SJung-uk Kim     UINT32                  *OutRemainder);
732a9f12690SJung-uk Kim 
7339c48c75eSJung-uk Kim 
734a9f12690SJung-uk Kim /*
735a9f12690SJung-uk Kim  * utmisc
736a9f12690SJung-uk Kim  */
7379c48c75eSJung-uk Kim const ACPI_EXCEPTION_INFO *
738a9f12690SJung-uk Kim AcpiUtValidateException (
739a9f12690SJung-uk Kim     ACPI_STATUS             Status);
740a9f12690SJung-uk Kim 
741a9f12690SJung-uk Kim BOOLEAN
742d6dd1baeSJung-uk Kim AcpiUtIsPciRootBridge (
743d6dd1baeSJung-uk Kim     char                    *Id);
744d6dd1baeSJung-uk Kim 
7457cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP)
746d6dd1baeSJung-uk Kim BOOLEAN
747a9f12690SJung-uk Kim AcpiUtIsAmlTable (
748a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       *Table);
7497cf3e94aSJung-uk Kim #endif
750a9f12690SJung-uk Kim 
751a9f12690SJung-uk Kim ACPI_STATUS
752a9f12690SJung-uk Kim AcpiUtWalkPackageTree (
753a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
754a9f12690SJung-uk Kim     void                    *TargetObject,
755a9f12690SJung-uk Kim     ACPI_PKG_CALLBACK       WalkCallback,
756a9f12690SJung-uk Kim     void                    *Context);
757a9f12690SJung-uk Kim 
758a9f12690SJung-uk Kim /* Values for Base above (16=Hex, 10=Decimal) */
759a9f12690SJung-uk Kim 
760a9f12690SJung-uk Kim #define ACPI_ANY_BASE        0
761a9f12690SJung-uk Kim 
762*fe0f0bbbSJung-uk Kim 
763a9f12690SJung-uk Kim UINT32
764a9f12690SJung-uk Kim AcpiUtDwordByteSwap (
765a9f12690SJung-uk Kim     UINT32                  Value);
766a9f12690SJung-uk Kim 
767a9f12690SJung-uk Kim void
768a9f12690SJung-uk Kim AcpiUtSetIntegerWidth (
769a9f12690SJung-uk Kim     UINT8                   Revision);
770a9f12690SJung-uk Kim 
771a9f12690SJung-uk Kim #ifdef ACPI_DEBUG_OUTPUT
772a9f12690SJung-uk Kim void
773a9f12690SJung-uk Kim AcpiUtDisplayInitPathname (
774a9f12690SJung-uk Kim     UINT8                   Type,
775a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *ObjHandle,
776a9f12690SJung-uk Kim     char                    *Path);
777a9f12690SJung-uk Kim #endif
778a9f12690SJung-uk Kim 
779a9f12690SJung-uk Kim 
780a9f12690SJung-uk Kim /*
781efcc2a30SJung-uk Kim  * utownerid - Support for Table/Method Owner IDs
782efcc2a30SJung-uk Kim  */
783efcc2a30SJung-uk Kim ACPI_STATUS
784efcc2a30SJung-uk Kim AcpiUtAllocateOwnerId (
785efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
786efcc2a30SJung-uk Kim 
787efcc2a30SJung-uk Kim void
788efcc2a30SJung-uk Kim AcpiUtReleaseOwnerId (
789efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
790efcc2a30SJung-uk Kim 
791efcc2a30SJung-uk Kim 
792efcc2a30SJung-uk Kim /*
793a9f12690SJung-uk Kim  * utresrc
794a9f12690SJung-uk Kim  */
795a9f12690SJung-uk Kim ACPI_STATUS
796a9f12690SJung-uk Kim AcpiUtWalkAmlResources (
797ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
798a9f12690SJung-uk Kim     UINT8                   *Aml,
799a9f12690SJung-uk Kim     ACPI_SIZE               AmlLength,
800a9f12690SJung-uk Kim     ACPI_WALK_AML_CALLBACK  UserFunction,
801efcc2a30SJung-uk Kim     void                    **Context);
802a9f12690SJung-uk Kim 
803a9f12690SJung-uk Kim ACPI_STATUS
804a9f12690SJung-uk Kim AcpiUtValidateResource (
805ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
806a9f12690SJung-uk Kim     void                    *Aml,
807a9f12690SJung-uk Kim     UINT8                   *ReturnIndex);
808a9f12690SJung-uk Kim 
809a9f12690SJung-uk Kim UINT32
810a9f12690SJung-uk Kim AcpiUtGetDescriptorLength (
811a9f12690SJung-uk Kim     void                    *Aml);
812a9f12690SJung-uk Kim 
813a9f12690SJung-uk Kim UINT16
814a9f12690SJung-uk Kim AcpiUtGetResourceLength (
815a9f12690SJung-uk Kim     void                    *Aml);
816a9f12690SJung-uk Kim 
817a9f12690SJung-uk Kim UINT8
818a9f12690SJung-uk Kim AcpiUtGetResourceHeaderLength (
819a9f12690SJung-uk Kim     void                    *Aml);
820a9f12690SJung-uk Kim 
821a9f12690SJung-uk Kim UINT8
822a9f12690SJung-uk Kim AcpiUtGetResourceType (
823a9f12690SJung-uk Kim     void                    *Aml);
824a9f12690SJung-uk Kim 
825a9f12690SJung-uk Kim ACPI_STATUS
826a9f12690SJung-uk Kim AcpiUtGetResourceEndTag (
827a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc,
828a9f12690SJung-uk Kim     UINT8                   **EndTag);
829a9f12690SJung-uk Kim 
830a9f12690SJung-uk Kim 
831a9f12690SJung-uk Kim /*
832efcc2a30SJung-uk Kim  * utstring - String and character utilities
833efcc2a30SJung-uk Kim  */
834efcc2a30SJung-uk Kim void
835efcc2a30SJung-uk Kim AcpiUtPrintString (
836efcc2a30SJung-uk Kim     char                    *String,
8378d744e47SJung-uk Kim     UINT16                  MaxLength);
838efcc2a30SJung-uk Kim 
8397cf3e94aSJung-uk Kim #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP
840efcc2a30SJung-uk Kim void
841efcc2a30SJung-uk Kim UtConvertBackslashes (
842efcc2a30SJung-uk Kim     char                    *Pathname);
8437cf3e94aSJung-uk Kim #endif
844efcc2a30SJung-uk Kim 
845efcc2a30SJung-uk Kim BOOLEAN
846efcc2a30SJung-uk Kim AcpiUtValidAcpiName (
847a9d8d09cSJung-uk Kim     char                    *Name);
848efcc2a30SJung-uk Kim 
849efcc2a30SJung-uk Kim BOOLEAN
850efcc2a30SJung-uk Kim AcpiUtValidAcpiChar (
851efcc2a30SJung-uk Kim     char                    Character,
852efcc2a30SJung-uk Kim     UINT32                  Position);
853efcc2a30SJung-uk Kim 
854efcc2a30SJung-uk Kim void
855efcc2a30SJung-uk Kim AcpiUtRepairName (
856efcc2a30SJung-uk Kim     char                    *Name);
857efcc2a30SJung-uk Kim 
858313a0c13SJung-uk Kim #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION)
859313a0c13SJung-uk Kim BOOLEAN
860313a0c13SJung-uk Kim AcpiUtSafeStrcpy (
861313a0c13SJung-uk Kim     char                    *Dest,
862313a0c13SJung-uk Kim     ACPI_SIZE               DestSize,
863313a0c13SJung-uk Kim     char                    *Source);
864313a0c13SJung-uk Kim 
865313a0c13SJung-uk Kim BOOLEAN
866313a0c13SJung-uk Kim AcpiUtSafeStrcat (
867313a0c13SJung-uk Kim     char                    *Dest,
868313a0c13SJung-uk Kim     ACPI_SIZE               DestSize,
869313a0c13SJung-uk Kim     char                    *Source);
870313a0c13SJung-uk Kim 
871313a0c13SJung-uk Kim #ifndef _KERNEL
872313a0c13SJung-uk Kim BOOLEAN
873313a0c13SJung-uk Kim AcpiUtSafeStrncat (
874313a0c13SJung-uk Kim     char                    *Dest,
875313a0c13SJung-uk Kim     ACPI_SIZE               DestSize,
876313a0c13SJung-uk Kim     char                    *Source,
877313a0c13SJung-uk Kim     ACPI_SIZE               MaxTransferLength);
878313a0c13SJung-uk Kim #endif
879313a0c13SJung-uk Kim #endif
880313a0c13SJung-uk Kim 
881efcc2a30SJung-uk Kim 
882efcc2a30SJung-uk Kim /*
883a9f12690SJung-uk Kim  * utmutex - mutex support
884a9f12690SJung-uk Kim  */
885a9f12690SJung-uk Kim ACPI_STATUS
886a9f12690SJung-uk Kim AcpiUtMutexInitialize (
887a9f12690SJung-uk Kim     void);
888a9f12690SJung-uk Kim 
889a9f12690SJung-uk Kim void
890a9f12690SJung-uk Kim AcpiUtMutexTerminate (
891a9f12690SJung-uk Kim     void);
892a9f12690SJung-uk Kim 
893a9f12690SJung-uk Kim ACPI_STATUS
894a9f12690SJung-uk Kim AcpiUtAcquireMutex (
895a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
896a9f12690SJung-uk Kim 
897a9f12690SJung-uk Kim ACPI_STATUS
898a9f12690SJung-uk Kim AcpiUtReleaseMutex (
899a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
900a9f12690SJung-uk Kim 
901a9f12690SJung-uk Kim 
902a9f12690SJung-uk Kim /*
903a9f12690SJung-uk Kim  * utalloc - memory allocation and object caching
904a9f12690SJung-uk Kim  */
905a9f12690SJung-uk Kim ACPI_STATUS
906a9f12690SJung-uk Kim AcpiUtCreateCaches (
907a9f12690SJung-uk Kim     void);
908a9f12690SJung-uk Kim 
909a9f12690SJung-uk Kim ACPI_STATUS
910a9f12690SJung-uk Kim AcpiUtDeleteCaches (
911a9f12690SJung-uk Kim     void);
912a9f12690SJung-uk Kim 
913a9f12690SJung-uk Kim ACPI_STATUS
914a9f12690SJung-uk Kim AcpiUtValidateBuffer (
915a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer);
916a9f12690SJung-uk Kim 
917a9f12690SJung-uk Kim ACPI_STATUS
918a9f12690SJung-uk Kim AcpiUtInitializeBuffer (
919a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer,
920a9f12690SJung-uk Kim     ACPI_SIZE               RequiredLength);
921a9f12690SJung-uk Kim 
922a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS
923a9f12690SJung-uk Kim void *
924a9f12690SJung-uk Kim AcpiUtAllocateAndTrack (
925a9f12690SJung-uk Kim     ACPI_SIZE               Size,
926a9f12690SJung-uk Kim     UINT32                  Component,
927a9f12690SJung-uk Kim     const char              *Module,
928a9f12690SJung-uk Kim     UINT32                  Line);
929a9f12690SJung-uk Kim 
930a9f12690SJung-uk Kim void *
931a9f12690SJung-uk Kim AcpiUtAllocateZeroedAndTrack (
932a9f12690SJung-uk Kim     ACPI_SIZE               Size,
933a9f12690SJung-uk Kim     UINT32                  Component,
934a9f12690SJung-uk Kim     const char              *Module,
935a9f12690SJung-uk Kim     UINT32                  Line);
936a9f12690SJung-uk Kim 
937a9f12690SJung-uk Kim void
938a9f12690SJung-uk Kim AcpiUtFreeAndTrack (
939a9f12690SJung-uk Kim     void                    *Address,
940a9f12690SJung-uk Kim     UINT32                  Component,
941a9f12690SJung-uk Kim     const char              *Module,
942a9f12690SJung-uk Kim     UINT32                  Line);
943a9f12690SJung-uk Kim 
944a9f12690SJung-uk Kim void
945a9f12690SJung-uk Kim AcpiUtDumpAllocationInfo (
946a9f12690SJung-uk Kim     void);
947a9f12690SJung-uk Kim 
948a9f12690SJung-uk Kim void
949a9f12690SJung-uk Kim AcpiUtDumpAllocations (
950a9f12690SJung-uk Kim     UINT32                  Component,
951a9f12690SJung-uk Kim     const char              *Module);
952a9f12690SJung-uk Kim 
953a9f12690SJung-uk Kim ACPI_STATUS
954a9f12690SJung-uk Kim AcpiUtCreateList (
955a9f12690SJung-uk Kim     char                    *ListName,
956a9f12690SJung-uk Kim     UINT16                  ObjectSize,
957a9f12690SJung-uk Kim     ACPI_MEMORY_LIST        **ReturnCache);
958a9f12690SJung-uk Kim 
95942fecd12SJung-uk Kim #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
960a9f12690SJung-uk Kim 
961*fe0f0bbbSJung-uk Kim 
962ec3fc72fSJung-uk Kim /*
963ec3fc72fSJung-uk Kim  * utaddress - address range check
964ec3fc72fSJung-uk Kim  */
965ec3fc72fSJung-uk Kim ACPI_STATUS
966ec3fc72fSJung-uk Kim AcpiUtAddAddressRange (
967ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
968ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
969ec3fc72fSJung-uk Kim     UINT32                  Length,
970ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
971ec3fc72fSJung-uk Kim 
972ec3fc72fSJung-uk Kim void
973ec3fc72fSJung-uk Kim AcpiUtRemoveAddressRange (
974ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
975ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
976ec3fc72fSJung-uk Kim 
977ec3fc72fSJung-uk Kim UINT32
978ec3fc72fSJung-uk Kim AcpiUtCheckAddressRange (
979ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
980ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
981ec3fc72fSJung-uk Kim     UINT32                  Length,
982ec3fc72fSJung-uk Kim     BOOLEAN                 Warn);
983ec3fc72fSJung-uk Kim 
984ec3fc72fSJung-uk Kim void
985ec3fc72fSJung-uk Kim AcpiUtDeleteAddressLists (
986ec3fc72fSJung-uk Kim     void);
98742fecd12SJung-uk Kim 
988*fe0f0bbbSJung-uk Kim 
98942fecd12SJung-uk Kim /*
99042fecd12SJung-uk Kim  * utxferror - various error/warning output functions
99142fecd12SJung-uk Kim  */
99242fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
99342fecd12SJung-uk Kim AcpiUtPredefinedWarning (
99442fecd12SJung-uk Kim     const char              *ModuleName,
99542fecd12SJung-uk Kim     UINT32                  LineNumber,
99642fecd12SJung-uk Kim     char                    *Pathname,
99742fecd12SJung-uk Kim     UINT8                   NodeFlags,
99842fecd12SJung-uk Kim     const char              *Format,
99942fecd12SJung-uk Kim     ...);
100042fecd12SJung-uk Kim 
100142fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
100242fecd12SJung-uk Kim AcpiUtPredefinedInfo (
100342fecd12SJung-uk Kim     const char              *ModuleName,
100442fecd12SJung-uk Kim     UINT32                  LineNumber,
100542fecd12SJung-uk Kim     char                    *Pathname,
100642fecd12SJung-uk Kim     UINT8                   NodeFlags,
100742fecd12SJung-uk Kim     const char              *Format,
100842fecd12SJung-uk Kim     ...);
100942fecd12SJung-uk Kim 
1010895f26a9SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
1011895f26a9SJung-uk Kim AcpiUtPredefinedBiosError (
1012895f26a9SJung-uk Kim     const char              *ModuleName,
1013895f26a9SJung-uk Kim     UINT32                  LineNumber,
1014895f26a9SJung-uk Kim     char                    *Pathname,
1015895f26a9SJung-uk Kim     UINT8                   NodeFlags,
1016895f26a9SJung-uk Kim     const char              *Format,
1017895f26a9SJung-uk Kim     ...);
1018895f26a9SJung-uk Kim 
101942fecd12SJung-uk Kim void
102042fecd12SJung-uk Kim AcpiUtNamespaceError (
102142fecd12SJung-uk Kim     const char              *ModuleName,
102242fecd12SJung-uk Kim     UINT32                  LineNumber,
102342fecd12SJung-uk Kim     const char              *InternalName,
102442fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
102542fecd12SJung-uk Kim 
102642fecd12SJung-uk Kim void
102742fecd12SJung-uk Kim AcpiUtMethodError (
102842fecd12SJung-uk Kim     const char              *ModuleName,
102942fecd12SJung-uk Kim     UINT32                  LineNumber,
103042fecd12SJung-uk Kim     const char              *Message,
103142fecd12SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
103242fecd12SJung-uk Kim     const char              *Path,
103342fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
1034a9f12690SJung-uk Kim 
1035*fe0f0bbbSJung-uk Kim 
1036313a0c13SJung-uk Kim /*
1037313a0c13SJung-uk Kim  * Utility functions for ACPI names and IDs
1038313a0c13SJung-uk Kim  */
1039313a0c13SJung-uk Kim const AH_PREDEFINED_NAME *
1040313a0c13SJung-uk Kim AcpiAhMatchPredefinedName (
1041313a0c13SJung-uk Kim     char                    *Nameseg);
1042313a0c13SJung-uk Kim 
1043313a0c13SJung-uk Kim const AH_DEVICE_ID *
1044313a0c13SJung-uk Kim AcpiAhMatchHardwareId (
1045313a0c13SJung-uk Kim     char                    *Hid);
1046313a0c13SJung-uk Kim 
1047313a0c13SJung-uk Kim const char *
1048313a0c13SJung-uk Kim AcpiAhMatchUuid (
1049313a0c13SJung-uk Kim     UINT8                   *Data);
1050313a0c13SJung-uk Kim 
1051*fe0f0bbbSJung-uk Kim 
1052313a0c13SJung-uk Kim /*
1053313a0c13SJung-uk Kim  * utprint - printf/vprintf output functions
1054313a0c13SJung-uk Kim  */
1055313a0c13SJung-uk Kim const char *
1056313a0c13SJung-uk Kim AcpiUtScanNumber (
1057313a0c13SJung-uk Kim     const char              *String,
1058313a0c13SJung-uk Kim     UINT64                  *NumberPtr);
1059313a0c13SJung-uk Kim 
1060313a0c13SJung-uk Kim const char *
1061313a0c13SJung-uk Kim AcpiUtPrintNumber (
1062313a0c13SJung-uk Kim     char                    *String,
1063313a0c13SJung-uk Kim     UINT64                  Number);
1064313a0c13SJung-uk Kim 
1065313a0c13SJung-uk Kim int
1066313a0c13SJung-uk Kim AcpiUtVsnprintf (
1067313a0c13SJung-uk Kim     char                    *String,
1068313a0c13SJung-uk Kim     ACPI_SIZE               Size,
1069313a0c13SJung-uk Kim     const char              *Format,
1070313a0c13SJung-uk Kim     va_list                 Args);
1071313a0c13SJung-uk Kim 
1072313a0c13SJung-uk Kim int
1073313a0c13SJung-uk Kim AcpiUtSnprintf (
1074313a0c13SJung-uk Kim     char                    *String,
1075313a0c13SJung-uk Kim     ACPI_SIZE               Size,
1076313a0c13SJung-uk Kim     const char              *Format,
1077313a0c13SJung-uk Kim     ...);
1078313a0c13SJung-uk Kim 
1079313a0c13SJung-uk Kim #ifdef ACPI_APPLICATION
1080313a0c13SJung-uk Kim int
1081313a0c13SJung-uk Kim AcpiUtFileVprintf (
1082313a0c13SJung-uk Kim     ACPI_FILE               File,
1083313a0c13SJung-uk Kim     const char              *Format,
1084313a0c13SJung-uk Kim     va_list                 Args);
1085313a0c13SJung-uk Kim 
1086313a0c13SJung-uk Kim int
1087313a0c13SJung-uk Kim AcpiUtFilePrintf (
1088313a0c13SJung-uk Kim     ACPI_FILE               File,
1089313a0c13SJung-uk Kim     const char              *Format,
1090313a0c13SJung-uk Kim     ...);
1091313a0c13SJung-uk Kim #endif
1092313a0c13SJung-uk Kim 
1093*fe0f0bbbSJung-uk Kim 
1094313a0c13SJung-uk Kim /*
1095313a0c13SJung-uk Kim  * utuuid -- UUID support functions
1096313a0c13SJung-uk Kim  */
10977cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP)
1098313a0c13SJung-uk Kim void
1099313a0c13SJung-uk Kim AcpiUtConvertStringToUuid (
1100313a0c13SJung-uk Kim     char                    *InString,
1101313a0c13SJung-uk Kim     UINT8                   *UuidBuffer);
11027cf3e94aSJung-uk Kim #endif
1103313a0c13SJung-uk Kim 
1104a9f12690SJung-uk Kim #endif /* _ACUTILS_H */
1105