acutils.h revision 272444
167754Smsmith/******************************************************************************
267754Smsmith *
377424Smsmith * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
467754Smsmith *
567754Smsmith *****************************************************************************/
667754Smsmith
7217365Sjkim/*
8272444Sjkim * Copyright (C) 2000 - 2014, Intel Corp.
970243Smsmith * All rights reserved.
1067754Smsmith *
11217365Sjkim * Redistribution and use in source and binary forms, with or without
12217365Sjkim * modification, are permitted provided that the following conditions
13217365Sjkim * are met:
14217365Sjkim * 1. Redistributions of source code must retain the above copyright
15217365Sjkim *    notice, this list of conditions, and the following disclaimer,
16217365Sjkim *    without modification.
17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18217365Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
19217365Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
20217365Sjkim *    including a substantially similar Disclaimer requirement for further
21217365Sjkim *    binary redistribution.
22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
23217365Sjkim *    of any contributors may be used to endorse or promote products derived
24217365Sjkim *    from this software without specific prior written permission.
2567754Smsmith *
26217365Sjkim * Alternatively, this software may be distributed under the terms of the
27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
28217365Sjkim * Software Foundation.
2967754Smsmith *
30217365Sjkim * NO WARRANTY
31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41217365Sjkim * POSSIBILITY OF SUCH DAMAGES.
42217365Sjkim */
4367754Smsmith
4477424Smsmith#ifndef _ACUTILS_H
4577424Smsmith#define _ACUTILS_H
4667754Smsmith
4767754Smsmith
48167802Sjkimextern const UINT8                      AcpiGbl_ResourceAmlSizes[];
49228110Sjkimextern const UINT8                      AcpiGbl_ResourceAmlSerialBusSizes[];
50167802Sjkim
51167802Sjkim/* Strings used by the disassembler and debugger resource dump routines */
52167802Sjkim
53272444Sjkim#if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
54167802Sjkim
55167802Sjkimextern const char                       *AcpiGbl_BmDecode[];
56167802Sjkimextern const char                       *AcpiGbl_ConfigDecode[];
57167802Sjkimextern const char                       *AcpiGbl_ConsumeDecode[];
58167802Sjkimextern const char                       *AcpiGbl_DecDecode[];
59167802Sjkimextern const char                       *AcpiGbl_HeDecode[];
60167802Sjkimextern const char                       *AcpiGbl_IoDecode[];
61167802Sjkimextern const char                       *AcpiGbl_LlDecode[];
62167802Sjkimextern const char                       *AcpiGbl_MaxDecode[];
63167802Sjkimextern const char                       *AcpiGbl_MemDecode[];
64167802Sjkimextern const char                       *AcpiGbl_MinDecode[];
65167802Sjkimextern const char                       *AcpiGbl_MtpDecode[];
66167802Sjkimextern const char                       *AcpiGbl_RngDecode[];
67167802Sjkimextern const char                       *AcpiGbl_RwDecode[];
68167802Sjkimextern const char                       *AcpiGbl_ShrDecode[];
69167802Sjkimextern const char                       *AcpiGbl_SizDecode[];
70167802Sjkimextern const char                       *AcpiGbl_TrsDecode[];
71167802Sjkimextern const char                       *AcpiGbl_TtpDecode[];
72167802Sjkimextern const char                       *AcpiGbl_TypDecode[];
73228110Sjkimextern const char                       *AcpiGbl_PpcDecode[];
74228110Sjkimextern const char                       *AcpiGbl_IorDecode[];
75228110Sjkimextern const char                       *AcpiGbl_DtsDecode[];
76228110Sjkimextern const char                       *AcpiGbl_CtDecode[];
77228110Sjkimextern const char                       *AcpiGbl_SbtDecode[];
78228110Sjkimextern const char                       *AcpiGbl_AmDecode[];
79228110Sjkimextern const char                       *AcpiGbl_SmDecode[];
80228110Sjkimextern const char                       *AcpiGbl_WmDecode[];
81228110Sjkimextern const char                       *AcpiGbl_CphDecode[];
82228110Sjkimextern const char                       *AcpiGbl_CpoDecode[];
83228110Sjkimextern const char                       *AcpiGbl_DpDecode[];
84228110Sjkimextern const char                       *AcpiGbl_EdDecode[];
85228110Sjkimextern const char                       *AcpiGbl_BpbDecode[];
86228110Sjkimextern const char                       *AcpiGbl_SbDecode[];
87228110Sjkimextern const char                       *AcpiGbl_FcDecode[];
88228110Sjkimextern const char                       *AcpiGbl_PtDecode[];
89167802Sjkim#endif
90167802Sjkim
91250838Sjkim/*
92250838Sjkim * For the iASL compiler case, the output is redirected to stderr so that
93250838Sjkim * any of the various ACPI errors and warnings do not appear in the output
94250838Sjkim * files, for either the compiler or disassembler portions of the tool.
95250838Sjkim */
96250838Sjkim#ifdef ACPI_ASL_COMPILER
97250838Sjkim
98250838Sjkim#include <stdio.h>
99250838Sjkim
100250838Sjkim#define ACPI_MSG_REDIRECT_BEGIN \
101250838Sjkim    FILE                    *OutputFile = AcpiGbl_OutputFile; \
102250838Sjkim    AcpiOsRedirectOutput (stderr);
103250838Sjkim
104250838Sjkim#define ACPI_MSG_REDIRECT_END \
105250838Sjkim    AcpiOsRedirectOutput (OutputFile);
106250838Sjkim
107250838Sjkim#else
108250838Sjkim/*
109250838Sjkim * non-iASL case - no redirection, nothing to do
110250838Sjkim */
111250838Sjkim#define ACPI_MSG_REDIRECT_BEGIN
112250838Sjkim#define ACPI_MSG_REDIRECT_END
113250838Sjkim#endif
114250838Sjkim
115250838Sjkim/*
116250838Sjkim * Common error message prefixes
117250838Sjkim */
118250838Sjkim#define ACPI_MSG_ERROR          "ACPI Error: "
119250838Sjkim#define ACPI_MSG_EXCEPTION      "ACPI Exception: "
120250838Sjkim#define ACPI_MSG_WARNING        "ACPI Warning: "
121250838Sjkim#define ACPI_MSG_INFO           "ACPI: "
122250838Sjkim
123250838Sjkim#define ACPI_MSG_BIOS_ERROR     "ACPI BIOS Error (bug): "
124250838Sjkim#define ACPI_MSG_BIOS_WARNING   "ACPI BIOS Warning (bug): "
125250838Sjkim
126250838Sjkim/*
127250838Sjkim * Common message suffix
128250838Sjkim */
129250838Sjkim#define ACPI_MSG_SUFFIX \
130250838Sjkim    AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
131250838Sjkim
132250838Sjkim
133167802Sjkim/* Types for Resource descriptor entries */
134167802Sjkim
135167802Sjkim#define ACPI_INVALID_RESOURCE           0
136167802Sjkim#define ACPI_FIXED_LENGTH               1
137167802Sjkim#define ACPI_VARIABLE_LENGTH            2
138167802Sjkim#define ACPI_SMALL_VARIABLE_LENGTH      3
139167802Sjkim
14073561Smsmithtypedef
141167802SjkimACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
142167802Sjkim    UINT8                   *Aml,
143167802Sjkim    UINT32                  Length,
144167802Sjkim    UINT32                  Offset,
145167802Sjkim    UINT8                   ResourceIndex,
146245582Sjkim    void                    **Context);
147167802Sjkim
148167802Sjkimtypedef
14973561SmsmithACPI_STATUS (*ACPI_PKG_CALLBACK) (
15073561Smsmith    UINT8                   ObjectType,
15173561Smsmith    ACPI_OPERAND_OBJECT     *SourceObject,
15273561Smsmith    ACPI_GENERIC_STATE      *State,
15373561Smsmith    void                    *Context);
15473561Smsmith
15573561Smsmithtypedef struct acpi_pkg_info
15673561Smsmith{
15773561Smsmith    UINT8                   *FreeSpace;
15891116Smsmith    ACPI_SIZE               Length;
15973561Smsmith    UINT32                  ObjectSpace;
16073561Smsmith    UINT32                  NumPackages;
161114237Snjl
16273561Smsmith} ACPI_PKG_INFO;
16373561Smsmith
164249112Sjkim/* Object reference counts */
165249112Sjkim
16667754Smsmith#define REF_INCREMENT       (UINT16) 0
16767754Smsmith#define REF_DECREMENT       (UINT16) 1
16867754Smsmith
16977424Smsmith/* AcpiUtDumpBuffer */
17067754Smsmith
17167754Smsmith#define DB_BYTE_DISPLAY     1
17267754Smsmith#define DB_WORD_DISPLAY     2
17367754Smsmith#define DB_DWORD_DISPLAY    4
17467754Smsmith#define DB_QWORD_DISPLAY    8
17567754Smsmith
17667754Smsmith/*
177151937Sjkim * utglobal - Global data structures and procedures
17867754Smsmith */
179193267SjkimACPI_STATUS
180151937SjkimAcpiUtInitGlobals (
18167754Smsmith    void);
18267754Smsmith
183102550Siwasaki#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
18469746Smsmith
185114237Snjlchar *
18677424SmsmithAcpiUtGetMutexName (
18767754Smsmith    UINT32                  MutexId);
18867754Smsmith
189193267Sjkimconst char *
190193267SjkimAcpiUtGetNotifyName (
191272444Sjkim    UINT32                  NotifyValue,
192272444Sjkim    ACPI_OBJECT_TYPE        Type);
193100966Siwasaki#endif
194100966Siwasaki
195114237Snjlchar *
19677424SmsmithAcpiUtGetTypeName (
19791116Smsmith    ACPI_OBJECT_TYPE        Type);
19867754Smsmith
199114237Snjlchar *
200123315SnjlAcpiUtGetNodeName (
201123315Snjl    void                    *Object);
202123315Snjl
203123315Snjlchar *
204123315SnjlAcpiUtGetDescriptorName (
205123315Snjl    void                    *Object);
206123315Snjl
207193267Sjkimconst char *
208193267SjkimAcpiUtGetReferenceName (
209193267Sjkim    ACPI_OPERAND_OBJECT     *Object);
210193267Sjkim
211123315Snjlchar *
21299679SiwasakiAcpiUtGetObjectTypeName (
21399679Siwasaki    ACPI_OPERAND_OBJECT     *ObjDesc);
21499679Siwasaki
215114237Snjlchar *
21677424SmsmithAcpiUtGetRegionName (
21769746Smsmith    UINT8                   SpaceId);
21869746Smsmith
219114237Snjlchar *
22091116SmsmithAcpiUtGetEventName (
22191116Smsmith    UINT32                  EventId);
22269746Smsmith
22399679Siwasakichar
22482367SmsmithAcpiUtHexToAsciiChar (
225202771Sjkim    UINT64                  Integer,
22682367Smsmith    UINT32                  Position);
22782367Smsmith
228272444SjkimUINT8
229272444SjkimAcpiUtAsciiCharToHex (
230272444Sjkim    int                     HexChar);
231272444Sjkim
23267754SmsmithBOOLEAN
23377424SmsmithAcpiUtValidObjectType (
23491116Smsmith    ACPI_OBJECT_TYPE        Type);
23567754Smsmith
23667754Smsmith
237151937Sjkim/*
238151937Sjkim * utinit - miscellaneous initialization and shutdown
239151937Sjkim */
240151937SjkimACPI_STATUS
241151937SjkimAcpiUtHardwareInitialize (
242151937Sjkim    void);
24367754Smsmith
244151937Sjkimvoid
245151937SjkimAcpiUtSubsystemShutdown (
246151937Sjkim    void);
247151937Sjkim
248151937Sjkim
24967754Smsmith/*
250151937Sjkim * utclib - Local implementations of C library functions
25167754Smsmith */
25271867Smsmith#ifndef ACPI_USE_SYSTEM_CLIBRARY
25371867Smsmith
254104470SiwasakiACPI_SIZE
25577424SmsmithAcpiUtStrlen (
256114237Snjl    const char              *String);
25767754Smsmith
258114237Snjlchar *
259272444SjkimAcpiUtStrchr (
260272444Sjkim    const char              *String,
261272444Sjkim    int                     ch);
262272444Sjkim
263272444Sjkimchar *
26477424SmsmithAcpiUtStrcpy (
265114237Snjl    char                    *DstString,
266114237Snjl    const char              *SrcString);
26767754Smsmith
268114237Snjlchar *
26977424SmsmithAcpiUtStrncpy (
270114237Snjl    char                    *DstString,
271114237Snjl    const char              *SrcString,
272104470Siwasaki    ACPI_SIZE               Count);
27367754Smsmith
27499679Siwasakiint
275138287SmarksAcpiUtMemcmp (
276138287Smarks    const char              *Buffer1,
277138287Smarks    const char              *Buffer2,
278138287Smarks    ACPI_SIZE               Count);
279138287Smarks
280138287Smarksint
28177424SmsmithAcpiUtStrncmp (
282114237Snjl    const char              *String1,
283114237Snjl    const char              *String2,
284104470Siwasaki    ACPI_SIZE               Count);
28567754Smsmith
286104470Siwasakiint
28777424SmsmithAcpiUtStrcmp (
288114237Snjl    const char              *String1,
289114237Snjl    const char              *String2);
29067754Smsmith
291114237Snjlchar *
29277424SmsmithAcpiUtStrcat (
293114237Snjl    char                    *DstString,
294114237Snjl    const char              *SrcString);
29567754Smsmith
296114237Snjlchar *
29777424SmsmithAcpiUtStrncat (
298114237Snjl    char                    *DstString,
299114237Snjl    const char              *SrcString,
300104470Siwasaki    ACPI_SIZE               Count);
30167754Smsmith
30267754SmsmithUINT32
30377424SmsmithAcpiUtStrtoul (
304114237Snjl    const char              *String,
305114237Snjl    char                    **Terminator,
30677424Smsmith    UINT32                  Base);
30767754Smsmith
308114237Snjlchar *
30977424SmsmithAcpiUtStrstr (
310114237Snjl    char                    *String1,
311114237Snjl    char                    *String2);
31267754Smsmith
31367754Smsmithvoid *
31477424SmsmithAcpiUtMemcpy (
31567754Smsmith    void                    *Dest,
31667754Smsmith    const void              *Src,
317104470Siwasaki    ACPI_SIZE               Count);
31867754Smsmith
31967754Smsmithvoid *
32077424SmsmithAcpiUtMemset (
32167754Smsmith    void                    *Dest,
322193267Sjkim    UINT8                   Value,
323104470Siwasaki    ACPI_SIZE               Count);
32467754Smsmith
32599679Siwasakiint
32677424SmsmithAcpiUtToUpper (
32799679Siwasaki    int                     c);
32867754Smsmith
32999679Siwasakiint
33077424SmsmithAcpiUtToLower (
33199679Siwasaki    int                     c);
33267754Smsmith
33399679Siwasakiextern const UINT8 _acpi_ctype[];
33499679Siwasaki
33599679Siwasaki#define _ACPI_XA     0x00    /* extra alphabetic - not supported */
33699679Siwasaki#define _ACPI_XS     0x40    /* extra space */
33799679Siwasaki#define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
33899679Siwasaki#define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
33999679Siwasaki#define _ACPI_DI     0x04    /* '0'-'9' */
34099679Siwasaki#define _ACPI_LO     0x02    /* 'a'-'z' */
34199679Siwasaki#define _ACPI_PU     0x10    /* punctuation */
34299679Siwasaki#define _ACPI_SP     0x08    /* space */
34399679Siwasaki#define _ACPI_UP     0x01    /* 'A'-'Z' */
34499679Siwasaki#define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
34599679Siwasaki
34699679Siwasaki#define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
34799679Siwasaki#define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
34899679Siwasaki#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
34999679Siwasaki#define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
35099679Siwasaki#define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
351272444Sjkim#define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU))
352100966Siwasaki#define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
35399679Siwasaki
354193267Sjkim#endif /* !ACPI_USE_SYSTEM_CLIBRARY */
35567754Smsmith
356193267Sjkim#define ACPI_IS_ASCII(c)  ((c) < 0x80)
357151937Sjkim
358193267Sjkim
35967754Smsmith/*
360151937Sjkim * utcopy - Object construction and conversion interfaces
36167754Smsmith */
36267754SmsmithACPI_STATUS
36377424SmsmithAcpiUtBuildSimpleObject(
36467754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
36567754Smsmith    ACPI_OBJECT             *UserObj,
36667754Smsmith    UINT8                   *DataSpace,
36767754Smsmith    UINT32                  *BufferSpaceUsed);
36867754Smsmith
36967754SmsmithACPI_STATUS
37077424SmsmithAcpiUtBuildPackageObject (
37167754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
37267754Smsmith    UINT8                   *Buffer,
37367754Smsmith    UINT32                  *SpaceUsed);
37467754Smsmith
37567754SmsmithACPI_STATUS
37677424SmsmithAcpiUtCopyIobjectToEobject (
37767754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
37867754Smsmith    ACPI_BUFFER             *RetBuffer);
37967754Smsmith
38067754SmsmithACPI_STATUS
38177424SmsmithAcpiUtCopyEobjectToIobject (
38267754Smsmith    ACPI_OBJECT             *Obj,
38384491Smsmith    ACPI_OPERAND_OBJECT     **InternalObj);
38467754Smsmith
38567754SmsmithACPI_STATUS
38677424SmsmithAcpiUtCopyISimpleToIsimple (
38767754Smsmith    ACPI_OPERAND_OBJECT     *SourceObj,
38867754Smsmith    ACPI_OPERAND_OBJECT     *DestObj);
38967754Smsmith
39067754SmsmithACPI_STATUS
39191116SmsmithAcpiUtCopyIobjectToIobject (
39291116Smsmith    ACPI_OPERAND_OBJECT     *SourceDesc,
39391116Smsmith    ACPI_OPERAND_OBJECT     **DestDesc,
39491116Smsmith    ACPI_WALK_STATE         *WalkState);
39591116Smsmith
39691116Smsmith
39767754Smsmith/*
398151937Sjkim * utcreate - Object creation
39967754Smsmith */
40067754SmsmithACPI_STATUS
40177424SmsmithAcpiUtUpdateObjectReference (
40267754Smsmith    ACPI_OPERAND_OBJECT     *Object,
40367754Smsmith    UINT16                  Action);
40467754Smsmith
40567754Smsmith
40667754Smsmith/*
407151937Sjkim * utdebug - Debug interfaces
40867754Smsmith */
40983174Smsmithvoid
41083174SmsmithAcpiUtInitStackPtrTrace (
41167754Smsmith    void);
41267754Smsmith
41367754Smsmithvoid
41483174SmsmithAcpiUtTrackStackPtr (
41583174Smsmith    void);
41667754Smsmith
41767754Smsmithvoid
41883174SmsmithAcpiUtTrace (
41967754Smsmith    UINT32                  LineNumber,
420151937Sjkim    const char              *FunctionName,
421193267Sjkim    const char              *ModuleName,
422151937Sjkim    UINT32                  ComponentId);
42367754Smsmith
42467754Smsmithvoid
42583174SmsmithAcpiUtTracePtr (
42667754Smsmith    UINT32                  LineNumber,
427151937Sjkim    const char              *FunctionName,
428193267Sjkim    const char              *ModuleName,
429151937Sjkim    UINT32                  ComponentId,
43067754Smsmith    void                    *Pointer);
43167754Smsmith
43267754Smsmithvoid
43383174SmsmithAcpiUtTraceU32 (
43467754Smsmith    UINT32                  LineNumber,
435151937Sjkim    const char              *FunctionName,
436193267Sjkim    const char              *ModuleName,
437151937Sjkim    UINT32                  ComponentId,
43867754Smsmith    UINT32                  Integer);
43967754Smsmith
44067754Smsmithvoid
44183174SmsmithAcpiUtTraceStr (
44267754Smsmith    UINT32                  LineNumber,
443151937Sjkim    const char              *FunctionName,
444193267Sjkim    const char              *ModuleName,
445151937Sjkim    UINT32                  ComponentId,
446114237Snjl    char                    *String);
44767754Smsmith
44867754Smsmithvoid
44983174SmsmithAcpiUtExit (
45067754Smsmith    UINT32                  LineNumber,
451151937Sjkim    const char              *FunctionName,
452193267Sjkim    const char              *ModuleName,
453151937Sjkim    UINT32                  ComponentId);
45467754Smsmith
45567754Smsmithvoid
45683174SmsmithAcpiUtStatusExit (
45767754Smsmith    UINT32                  LineNumber,
458151937Sjkim    const char              *FunctionName,
459193267Sjkim    const char              *ModuleName,
460151937Sjkim    UINT32                  ComponentId,
46167754Smsmith    ACPI_STATUS             Status);
46267754Smsmith
46367754Smsmithvoid
46483174SmsmithAcpiUtValueExit (
46567754Smsmith    UINT32                  LineNumber,
466151937Sjkim    const char              *FunctionName,
467193267Sjkim    const char              *ModuleName,
468151937Sjkim    UINT32                  ComponentId,
469202771Sjkim    UINT64                  Value);
47067754Smsmith
47167754Smsmithvoid
47283174SmsmithAcpiUtPtrExit (
47367754Smsmith    UINT32                  LineNumber,
474151937Sjkim    const char              *FunctionName,
475193267Sjkim    const char              *ModuleName,
476151937Sjkim    UINT32                  ComponentId,
47767754Smsmith    UINT8                   *Ptr);
47867754Smsmith
47967754Smsmithvoid
480241973SjkimAcpiUtDebugDumpBuffer (
481167802Sjkim    UINT8                   *Buffer,
482167802Sjkim    UINT32                  Count,
483167802Sjkim    UINT32                  Display,
484237412Sjkim    UINT32                  ComponentId);
48567754Smsmith
48667754Smsmithvoid
487241973SjkimAcpiUtDumpBuffer (
488167802Sjkim    UINT8                   *Buffer,
489167802Sjkim    UINT32                  Count,
490241973Sjkim    UINT32                  Display,
491241973Sjkim    UINT32                  Offset);
492167802Sjkim
493272444Sjkim#ifdef ACPI_APPLICATION
494167802Sjkimvoid
495272444SjkimAcpiUtDumpBufferToFile (
496272444Sjkim    ACPI_FILE               File,
497272444Sjkim    UINT8                   *Buffer,
498272444Sjkim    UINT32                  Count,
499272444Sjkim    UINT32                  Display,
500272444Sjkim    UINT32                  BaseOffset);
501272444Sjkim#endif
502272444Sjkim
503272444Sjkimvoid
50483174SmsmithAcpiUtReportError (
505114237Snjl    char                    *ModuleName,
506167802Sjkim    UINT32                  LineNumber);
50767754Smsmith
50867754Smsmithvoid
509167802SjkimAcpiUtReportInfo (
510114237Snjl    char                    *ModuleName,
511167802Sjkim    UINT32                  LineNumber);
51267754Smsmith
51367754Smsmithvoid
514167802SjkimAcpiUtReportWarning (
515167802Sjkim    char                    *ModuleName,
516167802Sjkim    UINT32                  LineNumber);
51767754Smsmith
51867754Smsmith/*
519151937Sjkim * utdelete - Object deletion and reference counts
52067754Smsmith */
521151937Sjkimvoid
522151937SjkimAcpiUtAddReference (
523151937Sjkim    ACPI_OPERAND_OBJECT     *Object);
52467754Smsmith
52567754Smsmithvoid
526151937SjkimAcpiUtRemoveReference (
52767754Smsmith    ACPI_OPERAND_OBJECT     *Object);
52867754Smsmith
52967754Smsmithvoid
53077424SmsmithAcpiUtDeleteInternalPackageObject (
53167754Smsmith    ACPI_OPERAND_OBJECT     *Object);
53267754Smsmith
53367754Smsmithvoid
53477424SmsmithAcpiUtDeleteInternalSimpleObject (
53567754Smsmith    ACPI_OPERAND_OBJECT     *Object);
53667754Smsmith
53799679Siwasakivoid
53877424SmsmithAcpiUtDeleteInternalObjectList (
53967754Smsmith    ACPI_OPERAND_OBJECT     **ObjList);
54067754Smsmith
54167754Smsmith
54267754Smsmith/*
543151937Sjkim * uteval - object evaluation
54467754Smsmith */
54567754SmsmithACPI_STATUS
546114237SnjlAcpiUtEvaluateObject (
547114237Snjl    ACPI_NAMESPACE_NODE     *PrefixNode,
548114237Snjl    char                    *Path,
549114237Snjl    UINT32                  ExpectedReturnBtypes,
550114237Snjl    ACPI_OPERAND_OBJECT     **ReturnDesc);
551114237Snjl
552114237SnjlACPI_STATUS
55377424SmsmithAcpiUtEvaluateNumericObject (
554114237Snjl    char                    *ObjectName,
55567754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
556202771Sjkim    UINT64                  *Value);
55767754Smsmith
55867754SmsmithACPI_STATUS
559197104SjkimAcpiUtExecute_STA (
56067754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
561197104Sjkim    UINT32                  *StatusFlags);
56267754Smsmith
56367754SmsmithACPI_STATUS
564197104SjkimAcpiUtExecutePowerMethods (
56587031Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
566197104Sjkim    const char              **MethodNames,
567197104Sjkim    UINT8                   MethodCount,
568197104Sjkim    UINT8                   *OutValues);
56987031Smsmith
570197104Sjkim
571197104Sjkim/*
572272444Sjkim * utfileio - file operations
573272444Sjkim */
574272444Sjkim#ifdef ACPI_APPLICATION
575272444SjkimACPI_STATUS
576272444SjkimAcpiUtReadTableFromFile (
577272444Sjkim    char                    *Filename,
578272444Sjkim    ACPI_TABLE_HEADER       **Table);
579272444Sjkim#endif
580272444Sjkim
581272444Sjkim
582272444Sjkim/*
583197104Sjkim * utids - device ID support
584197104Sjkim */
58587031SmsmithACPI_STATUS
586197104SjkimAcpiUtExecute_HID (
58767754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
588241973Sjkim    ACPI_PNP_DEVICE_ID      **ReturnId);
58967754Smsmith
59067754SmsmithACPI_STATUS
59177424SmsmithAcpiUtExecute_UID (
59267754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
593241973Sjkim    ACPI_PNP_DEVICE_ID      **ReturnId);
59467754Smsmith
595126372SnjlACPI_STATUS
596241973SjkimAcpiUtExecute_SUB (
597241973Sjkim    ACPI_NAMESPACE_NODE     *DeviceNode,
598241973Sjkim    ACPI_PNP_DEVICE_ID      **ReturnId);
599241973Sjkim
600241973SjkimACPI_STATUS
601197104SjkimAcpiUtExecute_CID (
602126372Snjl    ACPI_NAMESPACE_NODE     *DeviceNode,
603241973Sjkim    ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
60467754Smsmith
605197104Sjkim
606193267Sjkim/*
607193267Sjkim * utlock - reader/writer locks
608193267Sjkim */
609193267SjkimACPI_STATUS
610193267SjkimAcpiUtCreateRwLock (
611193267Sjkim    ACPI_RW_LOCK            *Lock);
61267754Smsmith
613193267Sjkimvoid
614193267SjkimAcpiUtDeleteRwLock (
615193267Sjkim    ACPI_RW_LOCK            *Lock);
616193267Sjkim
617193267SjkimACPI_STATUS
618193267SjkimAcpiUtAcquireReadLock (
619193267Sjkim    ACPI_RW_LOCK            *Lock);
620193267Sjkim
621193267SjkimACPI_STATUS
622193267SjkimAcpiUtReleaseReadLock (
623193267Sjkim    ACPI_RW_LOCK            *Lock);
624193267Sjkim
625193267SjkimACPI_STATUS
626193267SjkimAcpiUtAcquireWriteLock (
627193267Sjkim    ACPI_RW_LOCK            *Lock);
628193267Sjkim
629193267Sjkimvoid
630193267SjkimAcpiUtReleaseWriteLock (
631193267Sjkim    ACPI_RW_LOCK            *Lock);
632193267Sjkim
633193267Sjkim
63467754Smsmith/*
635151937Sjkim * utobject - internal object create/delete/cache routines
63667754Smsmith */
63783174SmsmithACPI_OPERAND_OBJECT  *
63883174SmsmithAcpiUtCreateInternalObjectDbg (
639193267Sjkim    const char              *ModuleName,
64083174Smsmith    UINT32                  LineNumber,
64183174Smsmith    UINT32                  ComponentId,
64291116Smsmith    ACPI_OBJECT_TYPE        Type);
64383174Smsmith
64467754Smsmithvoid *
64583174SmsmithAcpiUtAllocateObjectDescDbg (
646193267Sjkim    const char              *ModuleName,
64767754Smsmith    UINT32                  LineNumber,
64867754Smsmith    UINT32                  ComponentId);
64967754Smsmith
650151937Sjkim#define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
651151937Sjkim#define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
65267754Smsmith
65367754Smsmithvoid
65477424SmsmithAcpiUtDeleteObjectDesc (
65567754Smsmith    ACPI_OPERAND_OBJECT     *Object);
65667754Smsmith
65767754SmsmithBOOLEAN
65877424SmsmithAcpiUtValidInternalObject (
65967754Smsmith    void                    *Object);
66067754Smsmith
661107325SiwasakiACPI_OPERAND_OBJECT *
662193267SjkimAcpiUtCreatePackageObject (
663193267Sjkim    UINT32                  Count);
664193267Sjkim
665193267SjkimACPI_OPERAND_OBJECT *
666199337SjkimAcpiUtCreateIntegerObject (
667199337Sjkim    UINT64                  Value);
668199337Sjkim
669199337SjkimACPI_OPERAND_OBJECT *
670107325SiwasakiAcpiUtCreateBufferObject (
671107325Siwasaki    ACPI_SIZE               BufferSize);
67267754Smsmith
673138287SmarksACPI_OPERAND_OBJECT *
674138287SmarksAcpiUtCreateStringObject (
675138287Smarks    ACPI_SIZE               StringSize);
676107325Siwasaki
67767754SmsmithACPI_STATUS
67877424SmsmithAcpiUtGetObjectSize(
67967754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
68091116Smsmith    ACPI_SIZE               *ObjLength);
68167754Smsmith
68267754Smsmith
68367754Smsmith/*
684210976Sjkim * utosi - Support for the _OSI predefined control method
685210976Sjkim */
686210976SjkimACPI_STATUS
687210976SjkimAcpiUtInitializeInterfaces (
688210976Sjkim    void);
689210976Sjkim
690249112SjkimACPI_STATUS
691210976SjkimAcpiUtInterfaceTerminate (
692210976Sjkim    void);
693210976Sjkim
694210976SjkimACPI_STATUS
695210976SjkimAcpiUtInstallInterface (
696210976Sjkim    ACPI_STRING             InterfaceName);
697210976Sjkim
698210976SjkimACPI_STATUS
699210976SjkimAcpiUtRemoveInterface (
700210976Sjkim    ACPI_STRING             InterfaceName);
701210976Sjkim
702253690SjkimACPI_STATUS
703253690SjkimAcpiUtUpdateInterfaces (
704253690Sjkim    UINT8                   Action);
705253690Sjkim
706210976SjkimACPI_INTERFACE_INFO *
707210976SjkimAcpiUtGetInterface (
708210976Sjkim    ACPI_STRING             InterfaceName);
709210976Sjkim
710210976SjkimACPI_STATUS
711210976SjkimAcpiUtOsiImplementation (
712210976Sjkim    ACPI_WALK_STATE         *WalkState);
713210976Sjkim
714210976Sjkim
715210976Sjkim/*
716249112Sjkim * utpredef - support for predefined names
717249112Sjkim */
718249112Sjkimconst ACPI_PREDEFINED_INFO *
719249112SjkimAcpiUtGetNextPredefinedMethod (
720249112Sjkim    const ACPI_PREDEFINED_INFO  *ThisName);
721249112Sjkim
722249112Sjkimconst ACPI_PREDEFINED_INFO *
723249112SjkimAcpiUtMatchPredefinedMethod (
724249112Sjkim    char                        *Name);
725249112Sjkim
726249112Sjkimconst ACPI_PREDEFINED_INFO *
727249112SjkimAcpiUtMatchResourceName (
728249112Sjkim    char                        *Name);
729249112Sjkim
730249112Sjkimvoid
731249112SjkimAcpiUtDisplayPredefinedMethod (
732249112Sjkim    char                        *Buffer,
733249112Sjkim    const ACPI_PREDEFINED_INFO  *ThisName,
734249112Sjkim    BOOLEAN                     MultiLine);
735249112Sjkim
736249112Sjkimvoid
737249112SjkimAcpiUtGetExpectedReturnTypes (
738249112Sjkim    char                    *Buffer,
739249112Sjkim    UINT32                  ExpectedBtypes);
740249112Sjkim
741249112SjkimUINT32
742249112SjkimAcpiUtGetResourceBitWidth (
743249112Sjkim    char                    *Buffer,
744249112Sjkim    UINT16                  Types);
745249112Sjkim
746249112Sjkim
747249112Sjkim/*
748151937Sjkim * utstate - Generic state creation/cache routines
74967754Smsmith */
75067754Smsmithvoid
75177424SmsmithAcpiUtPushGenericState (
75267754Smsmith    ACPI_GENERIC_STATE      **ListHead,
75367754Smsmith    ACPI_GENERIC_STATE      *State);
75467754Smsmith
75567754SmsmithACPI_GENERIC_STATE *
75677424SmsmithAcpiUtPopGenericState (
75767754Smsmith    ACPI_GENERIC_STATE      **ListHead);
75867754Smsmith
75967754Smsmith
76067754SmsmithACPI_GENERIC_STATE *
76177424SmsmithAcpiUtCreateGenericState (
76267754Smsmith    void);
76367754Smsmith
76487031SmsmithACPI_THREAD_STATE *
76587031SmsmithAcpiUtCreateThreadState (
76687031Smsmith    void);
76787031Smsmith
76867754SmsmithACPI_GENERIC_STATE *
76977424SmsmithAcpiUtCreateUpdateState (
77067754Smsmith    ACPI_OPERAND_OBJECT     *Object,
77167754Smsmith    UINT16                  Action);
77267754Smsmith
77373561SmsmithACPI_GENERIC_STATE *
77477424SmsmithAcpiUtCreatePkgState (
77573561Smsmith    void                    *InternalObject,
77673561Smsmith    void                    *ExternalObject,
77773561Smsmith    UINT16                  Index);
77873561Smsmith
77967754SmsmithACPI_STATUS
78077424SmsmithAcpiUtCreateUpdateStateAndPush (
78167754Smsmith    ACPI_OPERAND_OBJECT     *Object,
78267754Smsmith    UINT16                  Action,
78367754Smsmith    ACPI_GENERIC_STATE      **StateList);
78467754Smsmith
78573561SmsmithACPI_STATUS
78677424SmsmithAcpiUtCreatePkgStateAndPush (
78773561Smsmith    void                    *InternalObject,
78873561Smsmith    void                    *ExternalObject,
78973561Smsmith    UINT16                  Index,
79073561Smsmith    ACPI_GENERIC_STATE      **StateList);
79173561Smsmith
79267754SmsmithACPI_GENERIC_STATE *
79377424SmsmithAcpiUtCreateControlState (
79467754Smsmith    void);
79567754Smsmith
79667754Smsmithvoid
79777424SmsmithAcpiUtDeleteGenericState (
79867754Smsmith    ACPI_GENERIC_STATE      *State);
79967754Smsmith
80067754Smsmith
80167754Smsmith/*
802151937Sjkim * utmath
80367754Smsmith */
80484491SmsmithACPI_STATUS
80584491SmsmithAcpiUtDivide (
806202771Sjkim    UINT64                  InDividend,
807202771Sjkim    UINT64                  InDivisor,
808202771Sjkim    UINT64                  *OutQuotient,
809202771Sjkim    UINT64                  *OutRemainder);
81084491Smsmith
81184491SmsmithACPI_STATUS
81284491SmsmithAcpiUtShortDivide (
813202771Sjkim    UINT64                  InDividend,
81484491Smsmith    UINT32                  Divisor,
815202771Sjkim    UINT64                  *OutQuotient,
81684491Smsmith    UINT32                  *OutRemainder);
81784491Smsmith
818246849Sjkim
819151937Sjkim/*
820151937Sjkim * utmisc
821151937Sjkim */
822246849Sjkimconst ACPI_EXCEPTION_INFO *
823167802SjkimAcpiUtValidateException (
824167802Sjkim    ACPI_STATUS             Status);
825167802Sjkim
826167802SjkimBOOLEAN
827197104SjkimAcpiUtIsPciRootBridge (
828197104Sjkim    char                    *Id);
829197104Sjkim
830197104SjkimBOOLEAN
831167802SjkimAcpiUtIsAmlTable (
832167802Sjkim    ACPI_TABLE_HEADER       *Table);
833167802Sjkim
834151937SjkimACPI_STATUS
835151937SjkimAcpiUtWalkPackageTree (
836151937Sjkim    ACPI_OPERAND_OBJECT     *SourceObject,
837151937Sjkim    void                    *TargetObject,
838151937Sjkim    ACPI_PKG_CALLBACK       WalkCallback,
839151937Sjkim    void                    *Context);
840151937Sjkim
841151937Sjkim
842138287Smarks/* Values for Base above (16=Hex, 10=Decimal) */
843138287Smarks
844138287Smarks#define ACPI_ANY_BASE        0
845138287Smarks
846151937SjkimUINT32
84799679SiwasakiAcpiUtDwordByteSwap (
84899679Siwasaki    UINT32                  Value);
84999679Siwasaki
85099679Siwasakivoid
85199679SiwasakiAcpiUtSetIntegerWidth (
85299679Siwasaki    UINT8                   Revision);
85399679Siwasaki
854102550Siwasaki#ifdef ACPI_DEBUG_OUTPUT
85573561Smsmithvoid
85677424SmsmithAcpiUtDisplayInitPathname (
857114237Snjl    UINT8                   Type,
858114237Snjl    ACPI_NAMESPACE_NODE     *ObjHandle,
85973561Smsmith    char                    *Path);
86073561Smsmith#endif
86173561Smsmith
86273561Smsmith
86367754Smsmith/*
864245582Sjkim * utownerid - Support for Table/Method Owner IDs
865245582Sjkim */
866245582SjkimACPI_STATUS
867245582SjkimAcpiUtAllocateOwnerId (
868245582Sjkim    ACPI_OWNER_ID           *OwnerId);
869245582Sjkim
870245582Sjkimvoid
871245582SjkimAcpiUtReleaseOwnerId (
872245582Sjkim    ACPI_OWNER_ID           *OwnerId);
873245582Sjkim
874245582Sjkim
875245582Sjkim/*
876167802Sjkim * utresrc
877167802Sjkim */
878167802SjkimACPI_STATUS
879167802SjkimAcpiUtWalkAmlResources (
880243347Sjkim    ACPI_WALK_STATE         *WalkState,
881167802Sjkim    UINT8                   *Aml,
882167802Sjkim    ACPI_SIZE               AmlLength,
883167802Sjkim    ACPI_WALK_AML_CALLBACK  UserFunction,
884245582Sjkim    void                    **Context);
885167802Sjkim
886167802SjkimACPI_STATUS
887167802SjkimAcpiUtValidateResource (
888243347Sjkim    ACPI_WALK_STATE         *WalkState,
889167802Sjkim    void                    *Aml,
890167802Sjkim    UINT8                   *ReturnIndex);
891167802Sjkim
892167802SjkimUINT32
893167802SjkimAcpiUtGetDescriptorLength (
894167802Sjkim    void                    *Aml);
895167802Sjkim
896167802SjkimUINT16
897167802SjkimAcpiUtGetResourceLength (
898167802Sjkim    void                    *Aml);
899167802Sjkim
900167802SjkimUINT8
901167802SjkimAcpiUtGetResourceHeaderLength (
902167802Sjkim    void                    *Aml);
903167802Sjkim
904167802SjkimUINT8
905167802SjkimAcpiUtGetResourceType (
906167802Sjkim    void                    *Aml);
907167802Sjkim
908167802SjkimACPI_STATUS
909167802SjkimAcpiUtGetResourceEndTag (
910167802Sjkim    ACPI_OPERAND_OBJECT     *ObjDesc,
911167802Sjkim    UINT8                   **EndTag);
912167802Sjkim
913167802Sjkim
914167802Sjkim/*
915245582Sjkim * utstring - String and character utilities
916245582Sjkim */
917245582Sjkimvoid
918245582SjkimAcpiUtStrupr (
919245582Sjkim    char                    *SrcString);
920245582Sjkim
921245582Sjkimvoid
922245582SjkimAcpiUtStrlwr (
923245582Sjkim    char                    *SrcString);
924245582Sjkim
925245582Sjkimint
926245582SjkimAcpiUtStricmp (
927245582Sjkim    char                    *String1,
928245582Sjkim    char                    *String2);
929245582Sjkim
930245582SjkimACPI_STATUS
931245582SjkimAcpiUtStrtoul64 (
932245582Sjkim    char                    *String,
933245582Sjkim    UINT32                  Base,
934245582Sjkim    UINT64                  *RetInteger);
935245582Sjkim
936245582Sjkimvoid
937245582SjkimAcpiUtPrintString (
938245582Sjkim    char                    *String,
939252279Sjkim    UINT16                  MaxLength);
940245582Sjkim
941245582Sjkimvoid
942245582SjkimUtConvertBackslashes (
943245582Sjkim    char                    *Pathname);
944245582Sjkim
945245582SjkimBOOLEAN
946245582SjkimAcpiUtValidAcpiName (
947250838Sjkim    char                    *Name);
948245582Sjkim
949245582SjkimBOOLEAN
950245582SjkimAcpiUtValidAcpiChar (
951245582Sjkim    char                    Character,
952245582Sjkim    UINT32                  Position);
953245582Sjkim
954245582Sjkimvoid
955245582SjkimAcpiUtRepairName (
956245582Sjkim    char                    *Name);
957245582Sjkim
958272444Sjkim#if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION)
959272444SjkimBOOLEAN
960272444SjkimAcpiUtSafeStrcpy (
961272444Sjkim    char                    *Dest,
962272444Sjkim    ACPI_SIZE               DestSize,
963272444Sjkim    char                    *Source);
964245582Sjkim
965272444SjkimBOOLEAN
966272444SjkimAcpiUtSafeStrcat (
967272444Sjkim    char                    *Dest,
968272444Sjkim    ACPI_SIZE               DestSize,
969272444Sjkim    char                    *Source);
970272444Sjkim
971272444Sjkim#ifndef _KERNEL
972272444SjkimBOOLEAN
973272444SjkimAcpiUtSafeStrncat (
974272444Sjkim    char                    *Dest,
975272444Sjkim    ACPI_SIZE               DestSize,
976272444Sjkim    char                    *Source,
977272444Sjkim    ACPI_SIZE               MaxTransferLength);
978272444Sjkim#endif
979272444Sjkim#endif
980272444Sjkim
981272444Sjkim
982245582Sjkim/*
983151937Sjkim * utmutex - mutex support
98467754Smsmith */
985151937SjkimACPI_STATUS
986151937SjkimAcpiUtMutexInitialize (
987151937Sjkim    void);
98867754Smsmith
98982367Smsmithvoid
990151937SjkimAcpiUtMutexTerminate (
991151937Sjkim    void);
99282367Smsmith
993151937SjkimACPI_STATUS
994151937SjkimAcpiUtAcquireMutex (
995151937Sjkim    ACPI_MUTEX_HANDLE       MutexId);
99682367Smsmith
99791116SmsmithACPI_STATUS
998151937SjkimAcpiUtReleaseMutex (
999151937Sjkim    ACPI_MUTEX_HANDLE       MutexId);
1000151937Sjkim
1001151937Sjkim
1002151937Sjkim/*
1003151937Sjkim * utalloc - memory allocation and object caching
1004151937Sjkim */
1005151937SjkimACPI_STATUS
1006151937SjkimAcpiUtCreateCaches (
1007151937Sjkim    void);
1008151937Sjkim
1009151937SjkimACPI_STATUS
1010151937SjkimAcpiUtDeleteCaches (
1011151937Sjkim    void);
1012151937Sjkim
1013151937SjkimACPI_STATUS
101491116SmsmithAcpiUtValidateBuffer (
101591116Smsmith    ACPI_BUFFER             *Buffer);
101682367Smsmith
101791116SmsmithACPI_STATUS
101891116SmsmithAcpiUtInitializeBuffer (
101991116Smsmith    ACPI_BUFFER             *Buffer,
102091116Smsmith    ACPI_SIZE               RequiredLength);
102182367Smsmith
102291116Smsmith#ifdef ACPI_DBG_TRACK_ALLOCATIONS
102391116Smsmithvoid *
102491116SmsmithAcpiUtAllocateAndTrack (
102591116Smsmith    ACPI_SIZE               Size,
102691116Smsmith    UINT32                  Component,
1027193267Sjkim    const char              *Module,
102891116Smsmith    UINT32                  Line);
102991116Smsmith
103091116Smsmithvoid *
1031167802SjkimAcpiUtAllocateZeroedAndTrack (
103291116Smsmith    ACPI_SIZE               Size,
103391116Smsmith    UINT32                  Component,
1034193267Sjkim    const char              *Module,
103591116Smsmith    UINT32                  Line);
103691116Smsmith
103767754Smsmithvoid
103891116SmsmithAcpiUtFreeAndTrack (
103967754Smsmith    void                    *Address,
104067754Smsmith    UINT32                  Component,
1041193267Sjkim    const char              *Module,
104267754Smsmith    UINT32                  Line);
104399679Siwasaki
104467754Smsmithvoid
104577424SmsmithAcpiUtDumpAllocationInfo (
104667754Smsmith    void);
104767754Smsmith
104867754Smsmithvoid
104984491SmsmithAcpiUtDumpAllocations (
105067754Smsmith    UINT32                  Component,
1051193267Sjkim    const char              *Module);
1052167802Sjkim
1053167802SjkimACPI_STATUS
1054167802SjkimAcpiUtCreateList (
1055167802Sjkim    char                    *ListName,
1056167802Sjkim    UINT16                  ObjectSize,
1057167802Sjkim    ACPI_MEMORY_LIST        **ReturnCache);
1058167802Sjkim
1059212761Sjkim#endif /* ACPI_DBG_TRACK_ALLOCATIONS */
1060167802Sjkim
1061229989Sjkim/*
1062229989Sjkim * utaddress - address range check
1063229989Sjkim */
1064229989SjkimACPI_STATUS
1065229989SjkimAcpiUtAddAddressRange (
1066229989Sjkim    ACPI_ADR_SPACE_TYPE     SpaceId,
1067229989Sjkim    ACPI_PHYSICAL_ADDRESS   Address,
1068229989Sjkim    UINT32                  Length,
1069229989Sjkim    ACPI_NAMESPACE_NODE     *RegionNode);
107067754Smsmith
1071229989Sjkimvoid
1072229989SjkimAcpiUtRemoveAddressRange (
1073229989Sjkim    ACPI_ADR_SPACE_TYPE     SpaceId,
1074229989Sjkim    ACPI_NAMESPACE_NODE     *RegionNode);
1075229989Sjkim
1076229989SjkimUINT32
1077229989SjkimAcpiUtCheckAddressRange (
1078229989Sjkim    ACPI_ADR_SPACE_TYPE     SpaceId,
1079229989Sjkim    ACPI_PHYSICAL_ADDRESS   Address,
1080229989Sjkim    UINT32                  Length,
1081229989Sjkim    BOOLEAN                 Warn);
1082229989Sjkim
1083229989Sjkimvoid
1084229989SjkimAcpiUtDeleteAddressLists (
1085229989Sjkim    void);
1086229989Sjkim
1087212761Sjkim/*
1088212761Sjkim * utxferror - various error/warning output functions
1089212761Sjkim */
1090212761Sjkimvoid ACPI_INTERNAL_VAR_XFACE
1091212761SjkimAcpiUtPredefinedWarning (
1092212761Sjkim    const char              *ModuleName,
1093212761Sjkim    UINT32                  LineNumber,
1094212761Sjkim    char                    *Pathname,
1095212761Sjkim    UINT8                   NodeFlags,
1096212761Sjkim    const char              *Format,
1097212761Sjkim    ...);
1098212761Sjkim
1099212761Sjkimvoid ACPI_INTERNAL_VAR_XFACE
1100212761SjkimAcpiUtPredefinedInfo (
1101212761Sjkim    const char              *ModuleName,
1102212761Sjkim    UINT32                  LineNumber,
1103212761Sjkim    char                    *Pathname,
1104212761Sjkim    UINT8                   NodeFlags,
1105212761Sjkim    const char              *Format,
1106212761Sjkim    ...);
1107212761Sjkim
1108249663Sjkimvoid ACPI_INTERNAL_VAR_XFACE
1109249663SjkimAcpiUtPredefinedBiosError (
1110249663Sjkim    const char              *ModuleName,
1111249663Sjkim    UINT32                  LineNumber,
1112249663Sjkim    char                    *Pathname,
1113249663Sjkim    UINT8                   NodeFlags,
1114249663Sjkim    const char              *Format,
1115249663Sjkim    ...);
1116249663Sjkim
1117212761Sjkimvoid
1118212761SjkimAcpiUtNamespaceError (
1119212761Sjkim    const char              *ModuleName,
1120212761Sjkim    UINT32                  LineNumber,
1121212761Sjkim    const char              *InternalName,
1122212761Sjkim    ACPI_STATUS             LookupStatus);
1123212761Sjkim
1124212761Sjkimvoid
1125212761SjkimAcpiUtMethodError (
1126212761Sjkim    const char              *ModuleName,
1127212761Sjkim    UINT32                  LineNumber,
1128212761Sjkim    const char              *Message,
1129212761Sjkim    ACPI_NAMESPACE_NODE     *Node,
1130212761Sjkim    const char              *Path,
1131212761Sjkim    ACPI_STATUS             LookupStatus);
1132212761Sjkim
1133272444Sjkim/*
1134272444Sjkim * Utility functions for ACPI names and IDs
1135272444Sjkim */
1136272444Sjkimconst AH_PREDEFINED_NAME *
1137272444SjkimAcpiAhMatchPredefinedName (
1138272444Sjkim    char                    *Nameseg);
1139272444Sjkim
1140272444Sjkimconst AH_DEVICE_ID *
1141272444SjkimAcpiAhMatchHardwareId (
1142272444Sjkim    char                    *Hid);
1143272444Sjkim
1144272444Sjkimconst char *
1145272444SjkimAcpiAhMatchUuid (
1146272444Sjkim    UINT8                   *Data);
1147272444Sjkim
1148272444Sjkim/*
1149272444Sjkim * utprint - printf/vprintf output functions
1150272444Sjkim */
1151272444Sjkimconst char *
1152272444SjkimAcpiUtScanNumber (
1153272444Sjkim    const char              *String,
1154272444Sjkim    UINT64                  *NumberPtr);
1155272444Sjkim
1156272444Sjkimconst char *
1157272444SjkimAcpiUtPrintNumber (
1158272444Sjkim    char                    *String,
1159272444Sjkim    UINT64                  Number);
1160272444Sjkim
1161272444Sjkimint
1162272444SjkimAcpiUtVsnprintf (
1163272444Sjkim    char                    *String,
1164272444Sjkim    ACPI_SIZE               Size,
1165272444Sjkim    const char              *Format,
1166272444Sjkim    va_list                 Args);
1167272444Sjkim
1168272444Sjkimint
1169272444SjkimAcpiUtSnprintf (
1170272444Sjkim    char                    *String,
1171272444Sjkim    ACPI_SIZE               Size,
1172272444Sjkim    const char              *Format,
1173272444Sjkim    ...);
1174272444Sjkim
1175272444Sjkim#ifdef ACPI_APPLICATION
1176272444Sjkimint
1177272444SjkimAcpiUtFileVprintf (
1178272444Sjkim    ACPI_FILE               File,
1179272444Sjkim    const char              *Format,
1180272444Sjkim    va_list                 Args);
1181272444Sjkim
1182272444Sjkimint
1183272444SjkimAcpiUtFilePrintf (
1184272444Sjkim    ACPI_FILE               File,
1185272444Sjkim    const char              *Format,
1186272444Sjkim    ...);
1187272444Sjkim#endif
1188272444Sjkim
1189272444Sjkim/*
1190272444Sjkim * utuuid -- UUID support functions
1191272444Sjkim */
1192272444Sjkimvoid
1193272444SjkimAcpiUtConvertStringToUuid (
1194272444Sjkim    char                    *InString,
1195272444Sjkim    UINT8                   *UuidBuffer);
1196272444Sjkim
119777424Smsmith#endif /* _ACUTILS_H */
1198