acutils.h revision 151937
1264790Sbapt/******************************************************************************
2264790Sbapt *
3272655Sbapt * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
4264790Sbapt *       $Revision: 1.182 $
5264790Sbapt *
6264790Sbapt *****************************************************************************/
7264790Sbapt
8264790Sbapt/******************************************************************************
9264790Sbapt *
10264790Sbapt * 1. Copyright Notice
11264790Sbapt *
12264790Sbapt * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
13264790Sbapt * All rights reserved.
14264790Sbapt *
15264790Sbapt * 2. License
16264790Sbapt *
17264790Sbapt * 2.1. This is your license from Intel Corp. under its intellectual property
18264790Sbapt * rights.  You may have additional license terms from the party that provided
19264790Sbapt * you this software, covering your right to use that party's intellectual
20264790Sbapt * property rights.
21264790Sbapt *
22264790Sbapt * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23264790Sbapt * copy of the source code appearing in this file ("Covered Code") an
24264790Sbapt * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25264790Sbapt * base code distributed originally by Intel ("Original Intel Code") to copy,
26264790Sbapt * make derivatives, distribute, use and display any portion of the Covered
27264790Sbapt * Code in any form, with the right to sublicense such rights; and
28264790Sbapt *
29264790Sbapt * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30264790Sbapt * license (with the right to sublicense), under only those claims of Intel
31264790Sbapt * patents that are infringed by the Original Intel Code, to make, use, sell,
32264790Sbapt * offer to sell, and import the Covered Code and derivative works thereof
33264790Sbapt * solely to the minimum extent necessary to exercise the above copyright
34264790Sbapt * license, and in no event shall the patent license extend to any additions
35264790Sbapt * to or modifications of the Original Intel Code.  No other license or right
36264790Sbapt * is granted directly or by implication, estoppel or otherwise;
37264790Sbapt *
38264790Sbapt * The above copyright and patent license is granted only if the following
39264790Sbapt * conditions are met:
40264790Sbapt *
41264790Sbapt * 3. Conditions
42264790Sbapt *
43264790Sbapt * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44264790Sbapt * Redistribution of source code of any substantial portion of the Covered
45264790Sbapt * Code or modification with rights to further distribute source must include
46264790Sbapt * the above Copyright Notice, the above License, this list of Conditions,
47264790Sbapt * and the following Disclaimer and Export Compliance provision.  In addition,
48264790Sbapt * Licensee must cause all Covered Code to which Licensee contributes to
49264790Sbapt * contain a file documenting the changes Licensee made to create that Covered
50264790Sbapt * Code and the date of any change.  Licensee must include in that file the
51264790Sbapt * documentation of any changes made by any predecessor Licensee.  Licensee
52264790Sbapt * must include a prominent statement that the modification is derived,
53264790Sbapt * directly or indirectly, from Original Intel Code.
54264790Sbapt *
55264790Sbapt * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56264790Sbapt * Redistribution of source code of any substantial portion of the Covered
57264790Sbapt * Code or modification without rights to further distribute source must
58264790Sbapt * include the following Disclaimer and Export Compliance provision in the
59264790Sbapt * documentation and/or other materials provided with distribution.  In
60264790Sbapt * addition, Licensee may not authorize further sublicense of source of any
61264790Sbapt * portion of the Covered Code, and must include terms to the effect that the
62264790Sbapt * license from Licensee to its licensee is limited to the intellectual
63264790Sbapt * property embodied in the software Licensee provides to its licensee, and
64264790Sbapt * not to intellectual property embodied in modifications its licensee may
65264790Sbapt * make.
66264790Sbapt *
67264790Sbapt * 3.3. Redistribution of Executable. Redistribution in executable form of any
68264790Sbapt * substantial portion of the Covered Code or modification must reproduce the
69264790Sbapt * above Copyright Notice, and the following Disclaimer and Export Compliance
70264790Sbapt * provision in the documentation and/or other materials provided with the
71264790Sbapt * distribution.
72264790Sbapt *
73264790Sbapt * 3.4. Intel retains all right, title, and interest in and to the Original
74264790Sbapt * Intel Code.
75264790Sbapt *
76264790Sbapt * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77264790Sbapt * Intel shall be used in advertising or otherwise to promote the sale, use or
78264790Sbapt * other dealings in products derived from or relating to the Covered Code
79264790Sbapt * without prior written authorization from Intel.
80264790Sbapt *
81264790Sbapt * 4. Disclaimer and Export Compliance
82264790Sbapt *
83264790Sbapt * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84264790Sbapt * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85264790Sbapt * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
86264790Sbapt * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
87264790Sbapt * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
88264790Sbapt * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89264790Sbapt * PARTICULAR PURPOSE.
90264790Sbapt *
91264790Sbapt * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92264790Sbapt * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93264790Sbapt * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94264790Sbapt * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95264790Sbapt * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96264790Sbapt * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
97264790Sbapt * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98264790Sbapt * LIMITED REMEDY.
99264790Sbapt *
100264790Sbapt * 4.3. Licensee shall not export, either directly or indirectly, any of this
101264790Sbapt * software or system incorporating such software without first obtaining any
102264790Sbapt * required license or other approval from the U. S. Department of Commerce or
103264790Sbapt * any other agency or department of the United States Government.  In the
104264790Sbapt * event Licensee exports any such software from the United States or
105264790Sbapt * re-exports any such software from a foreign destination, Licensee shall
106264790Sbapt * ensure that the distribution and export/re-export of the software is in
107264790Sbapt * compliance with all laws, regulations, orders, or other restrictions of the
108264790Sbapt * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109264790Sbapt * any of its subsidiaries will export/re-export any technical data, process,
110264790Sbapt * software, or service, directly or indirectly, to any country for which the
111264790Sbapt * United States government or any agency thereof requires an export license,
112264790Sbapt * other governmental approval, or letter of assurance, without first obtaining
113264790Sbapt * such license, approval or letter.
114264790Sbapt *
115264790Sbapt *****************************************************************************/
116264790Sbapt
117264790Sbapt#ifndef _ACUTILS_H
118264790Sbapt#define _ACUTILS_H
119264790Sbapt
120264790Sbapt
121264790Sbapttypedef
122264790SbaptACPI_STATUS (*ACPI_PKG_CALLBACK) (
123264790Sbapt    UINT8                   ObjectType,
124264790Sbapt    ACPI_OPERAND_OBJECT     *SourceObject,
125264790Sbapt    ACPI_GENERIC_STATE      *State,
126264790Sbapt    void                    *Context);
127264790Sbapt
128264790Sbapttypedef struct acpi_pkg_info
129264790Sbapt{
130264790Sbapt    UINT8                   *FreeSpace;
131264790Sbapt    ACPI_SIZE               Length;
132264790Sbapt    UINT32                  ObjectSpace;
133264790Sbapt    UINT32                  NumPackages;
134264790Sbapt
135264790Sbapt} ACPI_PKG_INFO;
136264790Sbapt
137264790Sbapt#define REF_INCREMENT       (UINT16) 0
138264790Sbapt#define REF_DECREMENT       (UINT16) 1
139264790Sbapt#define REF_FORCE_DELETE    (UINT16) 2
140264790Sbapt
141264790Sbapt/* AcpiUtDumpBuffer */
142264790Sbapt
143264790Sbapt#define DB_BYTE_DISPLAY     1
144264790Sbapt#define DB_WORD_DISPLAY     2
145264790Sbapt#define DB_DWORD_DISPLAY    4
146264790Sbapt#define DB_QWORD_DISPLAY    8
147264790Sbapt
148264790Sbapt
149264790Sbapt/*
150264790Sbapt * utglobal - Global data structures and procedures
151264790Sbapt */
152264790Sbaptvoid
153264790SbaptAcpiUtInitGlobals (
154264790Sbapt    void);
155264790Sbapt
156264790Sbapt#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
157264790Sbapt
158264790Sbaptchar *
159264790SbaptAcpiUtGetMutexName (
160264790Sbapt    UINT32                  MutexId);
161264790Sbapt
162264790Sbapt#endif
163264790Sbapt
164264790Sbaptchar *
165264790SbaptAcpiUtGetTypeName (
166264790Sbapt    ACPI_OBJECT_TYPE        Type);
167264790Sbapt
168264790Sbaptchar *
169264790SbaptAcpiUtGetNodeName (
170264790Sbapt    void                    *Object);
171264790Sbapt
172264790Sbaptchar *
173264790SbaptAcpiUtGetDescriptorName (
174264790Sbapt    void                    *Object);
175264790Sbapt
176264790Sbaptchar *
177264790SbaptAcpiUtGetObjectTypeName (
178264790Sbapt    ACPI_OPERAND_OBJECT     *ObjDesc);
179264790Sbapt
180264790Sbaptchar *
181264790SbaptAcpiUtGetRegionName (
182264790Sbapt    UINT8                   SpaceId);
183264790Sbapt
184264790Sbaptchar *
185264790SbaptAcpiUtGetEventName (
186264790Sbapt    UINT32                  EventId);
187264790Sbapt
188264790Sbaptchar
189264790SbaptAcpiUtHexToAsciiChar (
190264790Sbapt    ACPI_INTEGER            Integer,
191264790Sbapt    UINT32                  Position);
192264790Sbapt
193264790SbaptBOOLEAN
194264790SbaptAcpiUtValidObjectType (
195264790Sbapt    ACPI_OBJECT_TYPE        Type);
196264790Sbapt
197264790Sbapt
198264790Sbapt/*
199264790Sbapt * utinit - miscellaneous initialization and shutdown
200264790Sbapt */
201264790SbaptACPI_STATUS
202264790SbaptAcpiUtHardwareInitialize (
203264790Sbapt    void);
204264790Sbapt
205264790Sbaptvoid
206264790SbaptAcpiUtSubsystemShutdown (
207264790Sbapt    void);
208264790Sbapt
209264790SbaptACPI_STATUS
210264790SbaptAcpiUtValidateFadt (
211264790Sbapt    void);
212264790Sbapt
213264790Sbapt
214264790Sbapt/*
215264790Sbapt * utclib - Local implementations of C library functions
216264790Sbapt */
217264790Sbapt#ifndef ACPI_USE_SYSTEM_CLIBRARY
218264790Sbapt
219264790SbaptACPI_SIZE
220264790SbaptAcpiUtStrlen (
221264790Sbapt    const char              *String);
222264790Sbapt
223264790Sbaptchar *
224264790SbaptAcpiUtStrcpy (
225264790Sbapt    char                    *DstString,
226264790Sbapt    const char              *SrcString);
227264790Sbapt
228264790Sbaptchar *
229264790SbaptAcpiUtStrncpy (
230264790Sbapt    char                    *DstString,
231264790Sbapt    const char              *SrcString,
232264790Sbapt    ACPI_SIZE               Count);
233264790Sbapt
234264790Sbaptint
235264790SbaptAcpiUtMemcmp (
236264790Sbapt    const char              *Buffer1,
237264790Sbapt    const char              *Buffer2,
238264790Sbapt    ACPI_SIZE               Count);
239264790Sbapt
240264790Sbaptint
241264790SbaptAcpiUtStrncmp (
242264790Sbapt    const char              *String1,
243264790Sbapt    const char              *String2,
244264790Sbapt    ACPI_SIZE               Count);
245264790Sbapt
246264790Sbaptint
247264790SbaptAcpiUtStrcmp (
248264790Sbapt    const char              *String1,
249264790Sbapt    const char              *String2);
250264790Sbapt
251264790Sbaptchar *
252264790SbaptAcpiUtStrcat (
253264790Sbapt    char                    *DstString,
254264790Sbapt    const char              *SrcString);
255264790Sbapt
256264790Sbaptchar *
257264790SbaptAcpiUtStrncat (
258264790Sbapt    char                    *DstString,
259264790Sbapt    const char              *SrcString,
260264790Sbapt    ACPI_SIZE               Count);
261264790Sbapt
262264790SbaptUINT32
263264790SbaptAcpiUtStrtoul (
264264790Sbapt    const char              *String,
265264790Sbapt    char                    **Terminator,
266264790Sbapt    UINT32                  Base);
267264790Sbapt
268264790Sbaptchar *
269264790SbaptAcpiUtStrstr (
270264790Sbapt    char                    *String1,
271264790Sbapt    char                    *String2);
272264790Sbapt
273264790Sbaptvoid *
274264790SbaptAcpiUtMemcpy (
275264790Sbapt    void                    *Dest,
276264790Sbapt    const void              *Src,
277264790Sbapt    ACPI_SIZE               Count);
278264790Sbapt
279264790Sbaptvoid *
280264790SbaptAcpiUtMemset (
281264790Sbapt    void                    *Dest,
282264790Sbapt    ACPI_NATIVE_UINT        Value,
283264790Sbapt    ACPI_SIZE               Count);
284264790Sbapt
285264790Sbaptint
286264790SbaptAcpiUtToUpper (
287264790Sbapt    int                     c);
288264790Sbapt
289264790Sbaptint
290264790SbaptAcpiUtToLower (
291264790Sbapt    int                     c);
292264790Sbapt
293264790Sbaptextern const UINT8 _acpi_ctype[];
294264790Sbapt
295264790Sbapt#define _ACPI_XA     0x00    /* extra alphabetic - not supported */
296264790Sbapt#define _ACPI_XS     0x40    /* extra space */
297264790Sbapt#define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
298264790Sbapt#define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
299264790Sbapt#define _ACPI_DI     0x04    /* '0'-'9' */
300264790Sbapt#define _ACPI_LO     0x02    /* 'a'-'z' */
301264790Sbapt#define _ACPI_PU     0x10    /* punctuation */
302264790Sbapt#define _ACPI_SP     0x08    /* space */
303264790Sbapt#define _ACPI_UP     0x01    /* 'A'-'Z' */
304264790Sbapt#define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
305264790Sbapt
306264790Sbapt#define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
307264790Sbapt#define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
308264790Sbapt#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
309264790Sbapt#define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
310264790Sbapt#define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
311264790Sbapt#define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
312264790Sbapt#define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
313272655Sbapt
314272655Sbapt#endif /* ACPI_USE_SYSTEM_CLIBRARY */
315272655Sbapt
316272655Sbapt
317272655Sbapt/*
318272655Sbapt * utcopy - Object construction and conversion interfaces
319272655Sbapt */
320272655SbaptACPI_STATUS
321272655SbaptAcpiUtBuildSimpleObject(
322272655Sbapt    ACPI_OPERAND_OBJECT     *Obj,
323272655Sbapt    ACPI_OBJECT             *UserObj,
324272655Sbapt    UINT8                   *DataSpace,
325272655Sbapt    UINT32                  *BufferSpaceUsed);
326272655Sbapt
327272655SbaptACPI_STATUS
328272655SbaptAcpiUtBuildPackageObject (
329272655Sbapt    ACPI_OPERAND_OBJECT     *Obj,
330272655Sbapt    UINT8                   *Buffer,
331272655Sbapt    UINT32                  *SpaceUsed);
332272655Sbapt
333272655SbaptACPI_STATUS
334272655SbaptAcpiUtCopyIobjectToEobject (
335272655Sbapt    ACPI_OPERAND_OBJECT     *Obj,
336272655Sbapt    ACPI_BUFFER             *RetBuffer);
337272655Sbapt
338272655SbaptACPI_STATUS
339272655SbaptAcpiUtCopyEobjectToIobject (
340264790Sbapt    ACPI_OBJECT             *Obj,
341264790Sbapt    ACPI_OPERAND_OBJECT     **InternalObj);
342264790Sbapt
343264790SbaptACPI_STATUS
344264790SbaptAcpiUtCopyISimpleToIsimple (
345264790Sbapt    ACPI_OPERAND_OBJECT     *SourceObj,
346264790Sbapt    ACPI_OPERAND_OBJECT     *DestObj);
347264790Sbapt
348264790SbaptACPI_STATUS
349264790SbaptAcpiUtCopyIobjectToIobject (
350264790Sbapt    ACPI_OPERAND_OBJECT     *SourceDesc,
351264790Sbapt    ACPI_OPERAND_OBJECT     **DestDesc,
352264790Sbapt    ACPI_WALK_STATE         *WalkState);
353264790Sbapt
354264790Sbapt
355264790Sbapt/*
356264790Sbapt * utcreate - Object creation
357264790Sbapt */
358264790SbaptACPI_STATUS
359264790SbaptAcpiUtUpdateObjectReference (
360264790Sbapt    ACPI_OPERAND_OBJECT     *Object,
361264790Sbapt    UINT16                  Action);
362264790Sbapt
363264790Sbapt
364264790Sbapt/*
365264790Sbapt * utdebug - Debug interfaces
366264790Sbapt */
367264790Sbaptvoid
368264790SbaptAcpiUtInitStackPtrTrace (
369264790Sbapt    void);
370264790Sbapt
371264790Sbaptvoid
372264790SbaptAcpiUtTrackStackPtr (
373264790Sbapt    void);
374264790Sbapt
375264790Sbaptvoid
376264790SbaptAcpiUtTrace (
377264790Sbapt    UINT32                  LineNumber,
378264790Sbapt    const char              *FunctionName,
379264790Sbapt    char                    *ModuleName,
380264790Sbapt    UINT32                  ComponentId);
381264790Sbapt
382264790Sbaptvoid
383264790SbaptAcpiUtTracePtr (
384264790Sbapt    UINT32                  LineNumber,
385264790Sbapt    const char              *FunctionName,
386264790Sbapt    char                    *ModuleName,
387264790Sbapt    UINT32                  ComponentId,
388264790Sbapt    void                    *Pointer);
389264790Sbapt
390264790Sbaptvoid
391264790SbaptAcpiUtTraceU32 (
392264790Sbapt    UINT32                  LineNumber,
393264790Sbapt    const char              *FunctionName,
394264790Sbapt    char                    *ModuleName,
395264790Sbapt    UINT32                  ComponentId,
396264790Sbapt    UINT32                  Integer);
397264790Sbapt
398264790Sbaptvoid
399264790SbaptAcpiUtTraceStr (
400264790Sbapt    UINT32                  LineNumber,
401264790Sbapt    const char              *FunctionName,
402264790Sbapt    char                    *ModuleName,
403264790Sbapt    UINT32                  ComponentId,
404264790Sbapt    char                    *String);
405264790Sbapt
406264790Sbaptvoid
407264790SbaptAcpiUtExit (
408264790Sbapt    UINT32                  LineNumber,
409264790Sbapt    const char              *FunctionName,
410264790Sbapt    char                    *ModuleName,
411264790Sbapt    UINT32                  ComponentId);
412264790Sbapt
413264790Sbaptvoid
414264790SbaptAcpiUtStatusExit (
415264790Sbapt    UINT32                  LineNumber,
416264790Sbapt    const char              *FunctionName,
417264790Sbapt    char                    *ModuleName,
418264790Sbapt    UINT32                  ComponentId,
419264790Sbapt    ACPI_STATUS             Status);
420264790Sbapt
421264790Sbaptvoid
422264790SbaptAcpiUtValueExit (
423264790Sbapt    UINT32                  LineNumber,
424264790Sbapt    const char              *FunctionName,
425264790Sbapt    char                    *ModuleName,
426264790Sbapt    UINT32                  ComponentId,
427264790Sbapt    ACPI_INTEGER            Value);
428264790Sbapt
429264790Sbaptvoid
430264790SbaptAcpiUtPtrExit (
431264790Sbapt    UINT32                  LineNumber,
432264790Sbapt    const char              *FunctionName,
433264790Sbapt    char                    *ModuleName,
434264790Sbapt    UINT32                  ComponentId,
435264790Sbapt    UINT8                   *Ptr);
436264790Sbapt
437264790Sbaptvoid
438264790SbaptAcpiUtReportInfo (
439264790Sbapt    char                    *ModuleName,
440264790Sbapt    UINT32                  LineNumber,
441264790Sbapt    UINT32                  ComponentId);
442264790Sbapt
443264790Sbaptvoid
444264790SbaptAcpiUtReportError (
445264790Sbapt    char                    *ModuleName,
446264790Sbapt    UINT32                  LineNumber,
447264790Sbapt    UINT32                  ComponentId);
448264790Sbapt
449264790Sbaptvoid
450264790SbaptAcpiUtReportWarning (
451264790Sbapt    char                    *ModuleName,
452264790Sbapt    UINT32                  LineNumber,
453264790Sbapt    UINT32                  ComponentId);
454264790Sbapt
455264790Sbaptvoid
456264790SbaptAcpiUtDumpBuffer (
457264790Sbapt    UINT8                   *Buffer,
458264790Sbapt    UINT32                  Count,
459264790Sbapt    UINT32                  Display,
460264790Sbapt    UINT32                  componentId);
461264790Sbapt
462264790Sbaptvoid ACPI_INTERNAL_VAR_XFACE
463264790SbaptAcpiUtDebugPrint (
464264790Sbapt    UINT32                  RequestedDebugLevel,
465264790Sbapt    UINT32                  LineNumber,
466264790Sbapt    const char              *FunctionName,
467264790Sbapt    char                    *ModuleName,
468264790Sbapt    UINT32                  ComponentId,
469264790Sbapt    char                    *Format,
470264790Sbapt    ...) ACPI_PRINTF_LIKE_FUNC;
471264790Sbapt
472264790Sbaptvoid ACPI_INTERNAL_VAR_XFACE
473264790SbaptAcpiUtDebugPrintRaw (
474264790Sbapt    UINT32                  RequestedDebugLevel,
475264790Sbapt    UINT32                  LineNumber,
476264790Sbapt    const char              *FunctionName,
477264790Sbapt    char                    *ModuleName,
478264790Sbapt    UINT32                  ComponentId,
479264790Sbapt    char                    *Format,
480264790Sbapt    ...) ACPI_PRINTF_LIKE_FUNC;
481264790Sbapt
482264790Sbapt
483264790Sbapt/*
484264790Sbapt * utdelete - Object deletion and reference counts
485264790Sbapt */
486264790Sbaptvoid
487264790SbaptAcpiUtAddReference (
488264790Sbapt    ACPI_OPERAND_OBJECT     *Object);
489264790Sbapt
490264790Sbaptvoid
491264790SbaptAcpiUtRemoveReference (
492264790Sbapt    ACPI_OPERAND_OBJECT     *Object);
493264790Sbapt
494264790Sbaptvoid
495264790SbaptAcpiUtDeleteInternalPackageObject (
496264790Sbapt    ACPI_OPERAND_OBJECT     *Object);
497264790Sbapt
498264790Sbaptvoid
499264790SbaptAcpiUtDeleteInternalSimpleObject (
500264790Sbapt    ACPI_OPERAND_OBJECT     *Object);
501264790Sbapt
502264790Sbaptvoid
503264790SbaptAcpiUtDeleteInternalObjectList (
504264790Sbapt    ACPI_OPERAND_OBJECT     **ObjList);
505264790Sbapt
506264790Sbapt
507264790Sbapt/*
508264790Sbapt * uteval - object evaluation
509264790Sbapt */
510264790SbaptACPI_STATUS
511264790SbaptAcpiUtOsiImplementation (
512264790Sbapt    ACPI_WALK_STATE         *WalkState);
513264790Sbapt
514264790SbaptACPI_STATUS
515264790SbaptAcpiUtEvaluateObject (
516264790Sbapt    ACPI_NAMESPACE_NODE     *PrefixNode,
517264790Sbapt    char                    *Path,
518264790Sbapt    UINT32                  ExpectedReturnBtypes,
519264790Sbapt    ACPI_OPERAND_OBJECT     **ReturnDesc);
520264790Sbapt
521264790SbaptACPI_STATUS
522264790SbaptAcpiUtEvaluateNumericObject (
523264790Sbapt    char                    *ObjectName,
524264790Sbapt    ACPI_NAMESPACE_NODE     *DeviceNode,
525264790Sbapt    ACPI_INTEGER            *Address);
526264790Sbapt
527264790SbaptACPI_STATUS
528264790SbaptAcpiUtExecute_HID (
529264790Sbapt    ACPI_NAMESPACE_NODE     *DeviceNode,
530264790Sbapt    ACPI_DEVICE_ID          *Hid);
531264790Sbapt
532264790SbaptACPI_STATUS
533264790SbaptAcpiUtExecute_CID (
534264790Sbapt    ACPI_NAMESPACE_NODE     *DeviceNode,
535264790Sbapt    ACPI_COMPATIBLE_ID_LIST **ReturnCidList);
536264790Sbapt
537264790SbaptACPI_STATUS
538264790SbaptAcpiUtExecute_STA (
539264790Sbapt    ACPI_NAMESPACE_NODE     *DeviceNode,
540264790Sbapt    UINT32                  *StatusFlags);
541264790Sbapt
542264790SbaptACPI_STATUS
543264790SbaptAcpiUtExecute_UID (
544264790Sbapt    ACPI_NAMESPACE_NODE     *DeviceNode,
545264790Sbapt    ACPI_DEVICE_ID          *Uid);
546264790Sbapt
547264790SbaptACPI_STATUS
548264790SbaptAcpiUtExecute_Sxds (
549264790Sbapt    ACPI_NAMESPACE_NODE     *DeviceNode,
550264790Sbapt    UINT8                   *Highest);
551264790Sbapt
552264790Sbapt
553264790Sbapt/*
554264790Sbapt * utobject - internal object create/delete/cache routines
555264790Sbapt */
556264790SbaptACPI_OPERAND_OBJECT  *
557264790SbaptAcpiUtCreateInternalObjectDbg (
558264790Sbapt    char                    *ModuleName,
559264790Sbapt    UINT32                  LineNumber,
560264790Sbapt    UINT32                  ComponentId,
561264790Sbapt    ACPI_OBJECT_TYPE        Type);
562264790Sbapt
563264790Sbaptvoid *
564264790SbaptAcpiUtAllocateObjectDescDbg (
565264790Sbapt    char                    *ModuleName,
566264790Sbapt    UINT32                  LineNumber,
567264790Sbapt    UINT32                  ComponentId);
568264790Sbapt
569264790Sbapt#define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
570264790Sbapt#define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
571264790Sbapt
572264790Sbaptvoid
573264790SbaptAcpiUtDeleteObjectDesc (
574264790Sbapt    ACPI_OPERAND_OBJECT     *Object);
575264790Sbapt
576264790SbaptBOOLEAN
577264790SbaptAcpiUtValidInternalObject (
578264790Sbapt    void                    *Object);
579264790Sbapt
580264790SbaptACPI_OPERAND_OBJECT *
581264790SbaptAcpiUtCreateBufferObject (
582264790Sbapt    ACPI_SIZE               BufferSize);
583264790Sbapt
584264790SbaptACPI_OPERAND_OBJECT *
585264790SbaptAcpiUtCreateStringObject (
586264790Sbapt    ACPI_SIZE               StringSize);
587264790Sbapt
588264790SbaptACPI_STATUS
589264790SbaptAcpiUtGetObjectSize(
590264790Sbapt    ACPI_OPERAND_OBJECT     *Obj,
591264790Sbapt    ACPI_SIZE               *ObjLength);
592264790Sbapt
593264790Sbapt
594264790Sbapt/*
595264790Sbapt * utstate - Generic state creation/cache routines
596264790Sbapt */
597264790Sbaptvoid
598264790SbaptAcpiUtPushGenericState (
599264790Sbapt    ACPI_GENERIC_STATE      **ListHead,
600264790Sbapt    ACPI_GENERIC_STATE      *State);
601264790Sbapt
602264790SbaptACPI_GENERIC_STATE *
603264790SbaptAcpiUtPopGenericState (
604264790Sbapt    ACPI_GENERIC_STATE      **ListHead);
605264790Sbapt
606264790Sbapt
607264790SbaptACPI_GENERIC_STATE *
608264790SbaptAcpiUtCreateGenericState (
609264790Sbapt    void);
610264790Sbapt
611264790SbaptACPI_THREAD_STATE *
612264790SbaptAcpiUtCreateThreadState (
613264790Sbapt    void);
614264790Sbapt
615264790SbaptACPI_GENERIC_STATE *
616264790SbaptAcpiUtCreateUpdateState (
617264790Sbapt    ACPI_OPERAND_OBJECT     *Object,
618264790Sbapt    UINT16                  Action);
619264790Sbapt
620264790SbaptACPI_GENERIC_STATE *
621264790SbaptAcpiUtCreatePkgState (
622264790Sbapt    void                    *InternalObject,
623264790Sbapt    void                    *ExternalObject,
624264790Sbapt    UINT16                  Index);
625264790Sbapt
626264790SbaptACPI_STATUS
627264790SbaptAcpiUtCreateUpdateStateAndPush (
628264790Sbapt    ACPI_OPERAND_OBJECT     *Object,
629264790Sbapt    UINT16                  Action,
630264790Sbapt    ACPI_GENERIC_STATE      **StateList);
631264790Sbapt
632264790SbaptACPI_STATUS
633264790SbaptAcpiUtCreatePkgStateAndPush (
634264790Sbapt    void                    *InternalObject,
635264790Sbapt    void                    *ExternalObject,
636264790Sbapt    UINT16                  Index,
637264790Sbapt    ACPI_GENERIC_STATE      **StateList);
638264790Sbapt
639264790SbaptACPI_GENERIC_STATE *
640264790SbaptAcpiUtCreateControlState (
641264790Sbapt    void);
642264790Sbapt
643264790Sbaptvoid
644264790SbaptAcpiUtDeleteGenericState (
645264790Sbapt    ACPI_GENERIC_STATE      *State);
646264790Sbapt
647264790Sbapt
648264790Sbapt/*
649272655Sbapt * utmath
650264790Sbapt */
651264790SbaptACPI_STATUS
652264790SbaptAcpiUtDivide (
653264790Sbapt    ACPI_INTEGER            InDividend,
654264790Sbapt    ACPI_INTEGER            InDivisor,
655264790Sbapt    ACPI_INTEGER            *OutQuotient,
656264790Sbapt    ACPI_INTEGER            *OutRemainder);
657264790Sbapt
658272655SbaptACPI_STATUS
659264790SbaptAcpiUtShortDivide (
660264790Sbapt    ACPI_INTEGER            InDividend,
661272655Sbapt    UINT32                  Divisor,
662272655Sbapt    ACPI_INTEGER            *OutQuotient,
663264790Sbapt    UINT32                  *OutRemainder);
664264790Sbapt
665264790Sbapt/*
666264790Sbapt * utmisc
667264790Sbapt */
668264790SbaptACPI_STATUS
669264790SbaptAcpiUtAllocateOwnerId (
670264790Sbapt    ACPI_OWNER_ID           *OwnerId);
671264790Sbapt
672264790Sbaptvoid
673264790SbaptAcpiUtReleaseOwnerId (
674264790Sbapt    ACPI_OWNER_ID           *OwnerId);
675264790Sbapt
676264790SbaptACPI_STATUS
677264790SbaptAcpiUtWalkPackageTree (
678264790Sbapt    ACPI_OPERAND_OBJECT     *SourceObject,
679264790Sbapt    void                    *TargetObject,
680264790Sbapt    ACPI_PKG_CALLBACK       WalkCallback,
681264790Sbapt    void                    *Context);
682264790Sbapt
683264790Sbaptvoid
684264790SbaptAcpiUtStrupr (
685264790Sbapt    char                    *SrcString);
686264790Sbapt
687264790Sbaptvoid
688264790SbaptAcpiUtPrintString (
689264790Sbapt    char                    *String,
690264790Sbapt    UINT8                   MaxLength);
691264790Sbapt
692264790SbaptBOOLEAN
693264790SbaptAcpiUtValidAcpiName (
694264790Sbapt    UINT32                  Name);
695264790Sbapt
696264790SbaptBOOLEAN
697264790SbaptAcpiUtValidAcpiCharacter (
698264790Sbapt    char                    Character);
699264790Sbapt
700264790SbaptACPI_STATUS
701264790SbaptAcpiUtStrtoul64 (
702264790Sbapt    char                    *String,
703264790Sbapt    UINT32                  Base,
704264790Sbapt    ACPI_INTEGER            *RetInteger);
705264790Sbapt
706264790Sbapt/* Values for Base above (16=Hex, 10=Decimal) */
707264790Sbapt
708264790Sbapt#define ACPI_ANY_BASE        0
709264790Sbapt
710264790SbaptUINT32
711264790SbaptAcpiUtGetDescriptorLength (
712264790Sbapt    void                    *Aml);
713264790Sbapt
714264790SbaptUINT16
715264790SbaptAcpiUtGetResourceLength (
716264790Sbapt    void                    *Aml);
717264790Sbapt
718264790SbaptUINT8
719264790SbaptAcpiUtGetResourceType (
720264790Sbapt    void                    *Aml);
721264790Sbapt
722264790SbaptUINT8 *
723264790SbaptAcpiUtGetResourceEndTag (
724264790Sbapt    ACPI_OPERAND_OBJECT     *ObjDesc);
725264790Sbapt
726264790SbaptUINT8
727264790SbaptAcpiUtGenerateChecksum (
728264790Sbapt    UINT8                   *Buffer,
729264790Sbapt    UINT32                  Length);
730264790Sbapt
731264790SbaptUINT32
732264790SbaptAcpiUtDwordByteSwap (
733264790Sbapt    UINT32                  Value);
734264790Sbapt
735264790Sbaptvoid
736264790SbaptAcpiUtSetIntegerWidth (
737264790Sbapt    UINT8                   Revision);
738264790Sbapt
739264790Sbapt#ifdef ACPI_DEBUG_OUTPUT
740264790Sbaptvoid
741264790SbaptAcpiUtDisplayInitPathname (
742264790Sbapt    UINT8                   Type,
743264790Sbapt    ACPI_NAMESPACE_NODE     *ObjHandle,
744264790Sbapt    char                    *Path);
745264790Sbapt
746264790Sbapt#endif
747264790Sbapt
748264790Sbapt
749264790Sbapt/*
750264790Sbapt * utmutex - mutex support
751264790Sbapt */
752264790SbaptACPI_STATUS
753264790SbaptAcpiUtMutexInitialize (
754264790Sbapt    void);
755264790Sbapt
756264790Sbaptvoid
757264790SbaptAcpiUtMutexTerminate (
758264790Sbapt    void);
759264790Sbapt
760264790SbaptACPI_STATUS
761264790SbaptAcpiUtAcquireMutex (
762264790Sbapt    ACPI_MUTEX_HANDLE       MutexId);
763264790Sbapt
764264790SbaptACPI_STATUS
765264790SbaptAcpiUtReleaseMutex (
766264790Sbapt    ACPI_MUTEX_HANDLE       MutexId);
767264790Sbapt
768264790Sbapt
769264790Sbapt/*
770264790Sbapt * utalloc - memory allocation and object caching
771264790Sbapt */
772264790SbaptACPI_STATUS
773264790SbaptAcpiUtCreateCaches (
774264790Sbapt    void);
775264790Sbapt
776264790SbaptACPI_STATUS
777264790SbaptAcpiUtDeleteCaches (
778264790Sbapt    void);
779264790Sbapt
780264790SbaptACPI_STATUS
781264790SbaptAcpiUtValidateBuffer (
782264790Sbapt    ACPI_BUFFER             *Buffer);
783264790Sbapt
784264790SbaptACPI_STATUS
785264790SbaptAcpiUtInitializeBuffer (
786264790Sbapt    ACPI_BUFFER             *Buffer,
787264790Sbapt    ACPI_SIZE               RequiredLength);
788264790Sbapt
789264790Sbaptvoid *
790264790SbaptAcpiUtAllocate (
791264790Sbapt    ACPI_SIZE               Size,
792264790Sbapt    UINT32                  Component,
793264790Sbapt    char                    *Module,
794264790Sbapt    UINT32                  Line);
795264790Sbapt
796264790Sbaptvoid *
797264790SbaptAcpiUtCallocate (
798264790Sbapt    ACPI_SIZE               Size,
799264790Sbapt    UINT32                  Component,
800264790Sbapt    char                    *Module,
801264790Sbapt    UINT32                  Line);
802264790Sbapt
803264790Sbapt#ifdef ACPI_DBG_TRACK_ALLOCATIONS
804264790Sbaptvoid *
805264790SbaptAcpiUtAllocateAndTrack (
806264790Sbapt    ACPI_SIZE               Size,
807264790Sbapt    UINT32                  Component,
808264790Sbapt    char                    *Module,
809264790Sbapt    UINT32                  Line);
810264790Sbapt
811264790Sbaptvoid *
812264790SbaptAcpiUtCallocateAndTrack (
813264790Sbapt    ACPI_SIZE               Size,
814264790Sbapt    UINT32                  Component,
815264790Sbapt    char                    *Module,
816264790Sbapt    UINT32                  Line);
817264790Sbapt
818264790Sbaptvoid
819264790SbaptAcpiUtFreeAndTrack (
820264790Sbapt    void                    *Address,
821264790Sbapt    UINT32                  Component,
822264790Sbapt    char                    *Module,
823264790Sbapt    UINT32                  Line);
824264790Sbapt
825264790Sbaptvoid
826264790SbaptAcpiUtDumpAllocationInfo (
827264790Sbapt    void);
828264790Sbapt
829264790Sbaptvoid
830264790SbaptAcpiUtDumpAllocations (
831264790Sbapt    UINT32                  Component,
832264790Sbapt    char                    *Module);
833264790Sbapt#endif
834264790Sbapt
835264790Sbapt#endif /* _ACUTILS_H */
836264790Sbapt