xref: /netbsd-src/sys/external/bsd/acpica/dist/include/acutils.h (revision 2c7d7e3ca2e4f0b675c6c58e614f6aede66c678e)
128c506b8Sjruoho /******************************************************************************
228c506b8Sjruoho  *
328c506b8Sjruoho  * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
428c506b8Sjruoho  *
528c506b8Sjruoho  *****************************************************************************/
628c506b8Sjruoho 
7159c4e26Sjruoho /*
8*2c7d7e3cSchristos  * Copyright (C) 2000 - 2023, Intel Corp.
928c506b8Sjruoho  * All rights reserved.
1028c506b8Sjruoho  *
11159c4e26Sjruoho  * Redistribution and use in source and binary forms, with or without
12159c4e26Sjruoho  * modification, are permitted provided that the following conditions
13159c4e26Sjruoho  * are met:
14159c4e26Sjruoho  * 1. Redistributions of source code must retain the above copyright
15159c4e26Sjruoho  *    notice, this list of conditions, and the following disclaimer,
16159c4e26Sjruoho  *    without modification.
17159c4e26Sjruoho  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18159c4e26Sjruoho  *    substantially similar to the "NO WARRANTY" disclaimer below
19159c4e26Sjruoho  *    ("Disclaimer") and any redistribution must be conditioned upon
20159c4e26Sjruoho  *    including a substantially similar Disclaimer requirement for further
21159c4e26Sjruoho  *    binary redistribution.
22159c4e26Sjruoho  * 3. Neither the names of the above-listed copyright holders nor the names
23159c4e26Sjruoho  *    of any contributors may be used to endorse or promote products derived
24159c4e26Sjruoho  *    from this software without specific prior written permission.
2528c506b8Sjruoho  *
26159c4e26Sjruoho  * Alternatively, this software may be distributed under the terms of the
27159c4e26Sjruoho  * GNU General Public License ("GPL") version 2 as published by the Free
28159c4e26Sjruoho  * Software Foundation.
2928c506b8Sjruoho  *
30159c4e26Sjruoho  * NO WARRANTY
31159c4e26Sjruoho  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32159c4e26Sjruoho  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3398244dcfSchristos  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34159c4e26Sjruoho  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35159c4e26Sjruoho  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36159c4e26Sjruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37159c4e26Sjruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38159c4e26Sjruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39159c4e26Sjruoho  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40159c4e26Sjruoho  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41159c4e26Sjruoho  * POSSIBILITY OF SUCH DAMAGES.
42159c4e26Sjruoho  */
4328c506b8Sjruoho 
4428c506b8Sjruoho #ifndef _ACUTILS_H
4528c506b8Sjruoho #define _ACUTILS_H
4628c506b8Sjruoho 
4728c506b8Sjruoho 
4828c506b8Sjruoho extern const UINT8                      AcpiGbl_ResourceAmlSizes[];
49a2c051a9Schristos extern const UINT8                      AcpiGbl_ResourceAmlSerialBusSizes[];
5028c506b8Sjruoho 
5128c506b8Sjruoho /* Strings used by the disassembler and debugger resource dump routines */
5228c506b8Sjruoho 
53414ef032Schristos #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
5428c506b8Sjruoho 
5528c506b8Sjruoho extern const char                       *AcpiGbl_BmDecode[];
5628c506b8Sjruoho extern const char                       *AcpiGbl_ConfigDecode[];
5728c506b8Sjruoho extern const char                       *AcpiGbl_ConsumeDecode[];
5828c506b8Sjruoho extern const char                       *AcpiGbl_DecDecode[];
5928c506b8Sjruoho extern const char                       *AcpiGbl_HeDecode[];
6028c506b8Sjruoho extern const char                       *AcpiGbl_IoDecode[];
6128c506b8Sjruoho extern const char                       *AcpiGbl_LlDecode[];
6228c506b8Sjruoho extern const char                       *AcpiGbl_MaxDecode[];
6328c506b8Sjruoho extern const char                       *AcpiGbl_MemDecode[];
6428c506b8Sjruoho extern const char                       *AcpiGbl_MinDecode[];
6528c506b8Sjruoho extern const char                       *AcpiGbl_MtpDecode[];
6698244dcfSchristos extern const char                       *AcpiGbl_PhyDecode[];
6728c506b8Sjruoho extern const char                       *AcpiGbl_RngDecode[];
6828c506b8Sjruoho extern const char                       *AcpiGbl_RwDecode[];
6928c506b8Sjruoho extern const char                       *AcpiGbl_ShrDecode[];
7028c506b8Sjruoho extern const char                       *AcpiGbl_SizDecode[];
7128c506b8Sjruoho extern const char                       *AcpiGbl_TrsDecode[];
7228c506b8Sjruoho extern const char                       *AcpiGbl_TtpDecode[];
7328c506b8Sjruoho extern const char                       *AcpiGbl_TypDecode[];
74a2c051a9Schristos extern const char                       *AcpiGbl_PpcDecode[];
75a2c051a9Schristos extern const char                       *AcpiGbl_IorDecode[];
76a2c051a9Schristos extern const char                       *AcpiGbl_DtsDecode[];
77a2c051a9Schristos extern const char                       *AcpiGbl_CtDecode[];
78a2c051a9Schristos extern const char                       *AcpiGbl_SbtDecode[];
79a2c051a9Schristos extern const char                       *AcpiGbl_AmDecode[];
80a2c051a9Schristos extern const char                       *AcpiGbl_SmDecode[];
81a2c051a9Schristos extern const char                       *AcpiGbl_WmDecode[];
82a2c051a9Schristos extern const char                       *AcpiGbl_CphDecode[];
83a2c051a9Schristos extern const char                       *AcpiGbl_CpoDecode[];
84a2c051a9Schristos extern const char                       *AcpiGbl_DpDecode[];
85a2c051a9Schristos extern const char                       *AcpiGbl_EdDecode[];
86a2c051a9Schristos extern const char                       *AcpiGbl_BpbDecode[];
87a2c051a9Schristos extern const char                       *AcpiGbl_SbDecode[];
88a2c051a9Schristos extern const char                       *AcpiGbl_FcDecode[];
89a2c051a9Schristos extern const char                       *AcpiGbl_PtDecode[];
90ae01dbf5Schristos extern const char                       *AcpiGbl_PtypDecode[];
91*2c7d7e3cSchristos extern const char                       *AcpiGbl_ClockInputMode[];
92*2c7d7e3cSchristos extern const char                       *AcpiGbl_ClockInputScale[];
9328c506b8Sjruoho #endif
9428c506b8Sjruoho 
95a2c051a9Schristos /*
96a2c051a9Schristos  * For the iASL compiler case, the output is redirected to stderr so that
97a2c051a9Schristos  * any of the various ACPI errors and warnings do not appear in the output
98a2c051a9Schristos  * files, for either the compiler or disassembler portions of the tool.
99a2c051a9Schristos  */
100a2c051a9Schristos #ifdef ACPI_ASL_COMPILER
101a2c051a9Schristos 
102a2c051a9Schristos #include <stdio.h>
103a2c051a9Schristos 
104a2c051a9Schristos #define ACPI_MSG_REDIRECT_BEGIN \
105a2c051a9Schristos     FILE                    *OutputFile = AcpiGbl_OutputFile; \
106a2c051a9Schristos     AcpiOsRedirectOutput (stderr);
107a2c051a9Schristos 
108a2c051a9Schristos #define ACPI_MSG_REDIRECT_END \
109a2c051a9Schristos     AcpiOsRedirectOutput (OutputFile);
110a2c051a9Schristos 
111a2c051a9Schristos #else
112a2c051a9Schristos /*
113a2c051a9Schristos  * non-iASL case - no redirection, nothing to do
114a2c051a9Schristos  */
115a2c051a9Schristos #define ACPI_MSG_REDIRECT_BEGIN
116a2c051a9Schristos #define ACPI_MSG_REDIRECT_END
117a2c051a9Schristos #endif
118a2c051a9Schristos 
119a2c051a9Schristos /*
120a2c051a9Schristos  * Common error message prefixes
121a2c051a9Schristos  */
12272abab0cSchristos #ifndef ACPI_MSG_ERROR
123a2c051a9Schristos #define ACPI_MSG_ERROR          "ACPI Error: "
12472abab0cSchristos #endif
12572abab0cSchristos #ifndef ACPI_MSG_WARNING
126a2c051a9Schristos #define ACPI_MSG_WARNING        "ACPI Warning: "
12772abab0cSchristos #endif
12872abab0cSchristos #ifndef ACPI_MSG_INFO
129a2c051a9Schristos #define ACPI_MSG_INFO           "ACPI: "
13072abab0cSchristos #endif
131a2c051a9Schristos 
13272abab0cSchristos #ifndef ACPI_MSG_BIOS_ERROR
13325666a51Schristos #define ACPI_MSG_BIOS_ERROR     "Firmware Error (ACPI): "
13472abab0cSchristos #endif
13572abab0cSchristos #ifndef ACPI_MSG_BIOS_WARNING
13625666a51Schristos #define ACPI_MSG_BIOS_WARNING   "Firmware Warning (ACPI): "
13772abab0cSchristos #endif
138a2c051a9Schristos 
139a2c051a9Schristos /*
140a2c051a9Schristos  * Common message suffix
141a2c051a9Schristos  */
142a2c051a9Schristos #define ACPI_MSG_SUFFIX \
143a2c051a9Schristos     AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
144a2c051a9Schristos 
145ae01dbf5Schristos /* Flags to indicate implicit or explicit string-to-integer conversion */
146ae01dbf5Schristos 
147ae01dbf5Schristos #define ACPI_IMPLICIT_CONVERSION        TRUE
148ae01dbf5Schristos #define ACPI_NO_IMPLICIT_CONVERSION     FALSE
149a2c051a9Schristos 
15028c506b8Sjruoho /* Types for Resource descriptor entries */
15128c506b8Sjruoho 
15228c506b8Sjruoho #define ACPI_INVALID_RESOURCE           0
15328c506b8Sjruoho #define ACPI_FIXED_LENGTH               1
15428c506b8Sjruoho #define ACPI_VARIABLE_LENGTH            2
15528c506b8Sjruoho #define ACPI_SMALL_VARIABLE_LENGTH      3
15628c506b8Sjruoho 
15728c506b8Sjruoho typedef
15828c506b8Sjruoho ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
15928c506b8Sjruoho     UINT8                   *Aml,
16028c506b8Sjruoho     UINT32                  Length,
16128c506b8Sjruoho     UINT32                  Offset,
16228c506b8Sjruoho     UINT8                   ResourceIndex,
163a2c051a9Schristos     void                    **Context);
16428c506b8Sjruoho 
16528c506b8Sjruoho typedef
16628c506b8Sjruoho ACPI_STATUS (*ACPI_PKG_CALLBACK) (
16728c506b8Sjruoho     UINT8                   ObjectType,
16828c506b8Sjruoho     ACPI_OPERAND_OBJECT     *SourceObject,
16928c506b8Sjruoho     ACPI_GENERIC_STATE      *State,
17028c506b8Sjruoho     void                    *Context);
17128c506b8Sjruoho 
17228c506b8Sjruoho typedef struct acpi_pkg_info
17328c506b8Sjruoho {
17428c506b8Sjruoho     UINT8                   *FreeSpace;
17528c506b8Sjruoho     ACPI_SIZE               Length;
17628c506b8Sjruoho     UINT32                  ObjectSpace;
17728c506b8Sjruoho     UINT32                  NumPackages;
17828c506b8Sjruoho 
17928c506b8Sjruoho } ACPI_PKG_INFO;
18028c506b8Sjruoho 
181a2c051a9Schristos /* Object reference counts */
182a2c051a9Schristos 
18328c506b8Sjruoho #define REF_INCREMENT       (UINT16) 0
18428c506b8Sjruoho #define REF_DECREMENT       (UINT16) 1
18528c506b8Sjruoho 
18628c506b8Sjruoho /* AcpiUtDumpBuffer */
18728c506b8Sjruoho 
1881c663068Schristos #define DB_BYTE_DISPLAY      0x01
1891c663068Schristos #define DB_WORD_DISPLAY      0x02
1901c663068Schristos #define DB_DWORD_DISPLAY     0x04
1911c663068Schristos #define DB_QWORD_DISPLAY     0x08
1921c663068Schristos #define DB_DISPLAY_DATA_ONLY 0x10
19328c506b8Sjruoho 
1949b9ee194Schristos 
1959b9ee194Schristos /*
19649c2f1f4Schristos  * utascii - ASCII utilities
19749c2f1f4Schristos  */
19849c2f1f4Schristos BOOLEAN
19949c2f1f4Schristos AcpiUtValidNameseg (
20049c2f1f4Schristos     char                    *Signature);
20149c2f1f4Schristos 
20249c2f1f4Schristos BOOLEAN
20349c2f1f4Schristos AcpiUtValidNameChar (
20449c2f1f4Schristos     char                    Character,
20549c2f1f4Schristos     UINT32                  Position);
20649c2f1f4Schristos 
20749c2f1f4Schristos void
20849c2f1f4Schristos AcpiUtCheckAndRepairAscii (
20949c2f1f4Schristos     UINT8                   *Name,
21049c2f1f4Schristos     char                    *RepairedName,
21149c2f1f4Schristos     UINT32                  Count);
21249c2f1f4Schristos 
21349c2f1f4Schristos 
21449c2f1f4Schristos /*
215121a0548Schristos  * utcksum - Checksum utilities
216121a0548Schristos  */
217121a0548Schristos UINT8
218121a0548Schristos AcpiUtGenerateChecksum (
219121a0548Schristos     void                    *Table,
220121a0548Schristos     UINT32                  Length,
221121a0548Schristos     UINT8                   OriginalChecksum);
222121a0548Schristos 
223121a0548Schristos UINT8
224121a0548Schristos AcpiUtChecksum (
225121a0548Schristos     UINT8                   *Buffer,
226121a0548Schristos     UINT32                  Length);
227121a0548Schristos 
228121a0548Schristos ACPI_STATUS
229121a0548Schristos AcpiUtVerifyCdatChecksum (
230121a0548Schristos     ACPI_TABLE_CDAT         *CdatTable,
231121a0548Schristos     UINT32                  Length);
232121a0548Schristos 
233121a0548Schristos ACPI_STATUS
234121a0548Schristos AcpiUtVerifyChecksum (
235121a0548Schristos     ACPI_TABLE_HEADER       *Table,
236121a0548Schristos     UINT32                  Length);
237121a0548Schristos 
238121a0548Schristos 
239121a0548Schristos /*
2409b9ee194Schristos  * utnonansi - Non-ANSI C library functions
2419b9ee194Schristos  */
2429b9ee194Schristos void
2439b9ee194Schristos AcpiUtStrupr (
2449b9ee194Schristos     char                    *SrcString);
2459b9ee194Schristos 
2469b9ee194Schristos void
2479b9ee194Schristos AcpiUtStrlwr (
2489b9ee194Schristos     char                    *SrcString);
2499b9ee194Schristos 
2509b9ee194Schristos int
2519b9ee194Schristos AcpiUtStricmp (
2529b9ee194Schristos     char                    *String1,
2539b9ee194Schristos     char                    *String2);
2549b9ee194Schristos 
255ae01dbf5Schristos 
256ae01dbf5Schristos /*
257ae01dbf5Schristos  * utstrsuppt - string-to-integer conversion support functions
258ae01dbf5Schristos  */
259ae01dbf5Schristos ACPI_STATUS
260ae01dbf5Schristos AcpiUtConvertOctalString (
261ae01dbf5Schristos     char                    *String,
262ae01dbf5Schristos     UINT64                  *ReturnValue);
263ae01dbf5Schristos 
264ae01dbf5Schristos ACPI_STATUS
265ae01dbf5Schristos AcpiUtConvertDecimalString (
266ae01dbf5Schristos     char                    *String,
267ae01dbf5Schristos     UINT64                  *ReturnValuePtr);
268ae01dbf5Schristos 
269ae01dbf5Schristos ACPI_STATUS
270ae01dbf5Schristos AcpiUtConvertHexString (
271ae01dbf5Schristos     char                    *String,
272ae01dbf5Schristos     UINT64                  *ReturnValuePtr);
273ae01dbf5Schristos 
274ae01dbf5Schristos char
275ae01dbf5Schristos AcpiUtRemoveWhitespace (
276ae01dbf5Schristos     char                    **String);
277ae01dbf5Schristos 
278ae01dbf5Schristos char
279ae01dbf5Schristos AcpiUtRemoveLeadingZeros (
280ae01dbf5Schristos     char                    **String);
281ae01dbf5Schristos 
282ae01dbf5Schristos BOOLEAN
283ae01dbf5Schristos AcpiUtDetectHexPrefix (
284ae01dbf5Schristos     char                    **String);
285ae01dbf5Schristos 
286a147b75fSchristos void
287a147b75fSchristos AcpiUtRemoveHexPrefix (
288a147b75fSchristos     char                    **String);
289a147b75fSchristos 
290ae01dbf5Schristos BOOLEAN
291ae01dbf5Schristos AcpiUtDetectOctalPrefix (
292ae01dbf5Schristos     char                    **String);
293ae01dbf5Schristos 
294ae01dbf5Schristos 
295ae01dbf5Schristos /*
296ae01dbf5Schristos  * utstrtoul64 - string-to-integer conversion functions
297ae01dbf5Schristos  */
2989b9ee194Schristos ACPI_STATUS
2999b9ee194Schristos AcpiUtStrtoul64 (
3009b9ee194Schristos     char                    *String,
3019b9ee194Schristos     UINT64                  *RetInteger);
3029b9ee194Schristos 
303ae01dbf5Schristos UINT64
304ae01dbf5Schristos AcpiUtExplicitStrtoul64 (
305ae01dbf5Schristos     char                    *String);
306ae01dbf5Schristos 
307ae01dbf5Schristos UINT64
308ae01dbf5Schristos AcpiUtImplicitStrtoul64 (
309ae01dbf5Schristos     char                    *String);
31049c2f1f4Schristos 
3119b9ee194Schristos 
31228c506b8Sjruoho /*
31328c506b8Sjruoho  * utglobal - Global data structures and procedures
31428c506b8Sjruoho  */
31528c506b8Sjruoho ACPI_STATUS
31628c506b8Sjruoho AcpiUtInitGlobals (
31728c506b8Sjruoho     void);
31828c506b8Sjruoho 
319716c1ee0Sjruoho const char *
32028c506b8Sjruoho AcpiUtGetMutexName (
32128c506b8Sjruoho     UINT32                  MutexId);
32228c506b8Sjruoho 
32325666a51Schristos #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
32425666a51Schristos 
32528c506b8Sjruoho const char *
32628c506b8Sjruoho AcpiUtGetNotifyName (
327414ef032Schristos     UINT32                  NotifyValue,
328414ef032Schristos     ACPI_OBJECT_TYPE        Type);
32928c506b8Sjruoho #endif
33028c506b8Sjruoho 
33181bd9c9cSchristos const char *
33228c506b8Sjruoho AcpiUtGetTypeName (
33328c506b8Sjruoho     ACPI_OBJECT_TYPE        Type);
33428c506b8Sjruoho 
3352edec7caSjruoho const char *
33628c506b8Sjruoho AcpiUtGetNodeName (
33728c506b8Sjruoho     void                    *Object);
33828c506b8Sjruoho 
339716c1ee0Sjruoho const char *
34028c506b8Sjruoho AcpiUtGetDescriptorName (
34128c506b8Sjruoho     void                    *Object);
34228c506b8Sjruoho 
34328c506b8Sjruoho const char *
34428c506b8Sjruoho AcpiUtGetReferenceName (
34528c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object);
34628c506b8Sjruoho 
3472edec7caSjruoho const char *
34828c506b8Sjruoho AcpiUtGetObjectTypeName (
34928c506b8Sjruoho     ACPI_OPERAND_OBJECT     *ObjDesc);
35028c506b8Sjruoho 
3512edec7caSjruoho const char *
35228c506b8Sjruoho AcpiUtGetRegionName (
35328c506b8Sjruoho     UINT8                   SpaceId);
35428c506b8Sjruoho 
3552edec7caSjruoho const char *
35628c506b8Sjruoho AcpiUtGetEventName (
35728c506b8Sjruoho     UINT32                  EventId);
35828c506b8Sjruoho 
359660602a8Schristos const char *
360660602a8Schristos AcpiUtGetArgumentTypeName (
361660602a8Schristos     UINT32                  ArgType);
362660602a8Schristos 
36328c506b8Sjruoho char
36428c506b8Sjruoho AcpiUtHexToAsciiChar (
36528c506b8Sjruoho     UINT64                  Integer,
36628c506b8Sjruoho     UINT32                  Position);
36728c506b8Sjruoho 
36847dc3895Schristos ACPI_STATUS
36947dc3895Schristos AcpiUtAsciiToHexByte (
37047dc3895Schristos     char                    *TwoAsciiChars,
37147dc3895Schristos     UINT8                   *ReturnByte);
37247dc3895Schristos 
373414ef032Schristos UINT8
374414ef032Schristos AcpiUtAsciiCharToHex (
375414ef032Schristos     int                     HexChar);
376414ef032Schristos 
37728c506b8Sjruoho BOOLEAN
37828c506b8Sjruoho AcpiUtValidObjectType (
37928c506b8Sjruoho     ACPI_OBJECT_TYPE        Type);
38028c506b8Sjruoho 
38128c506b8Sjruoho 
38228c506b8Sjruoho /*
38328c506b8Sjruoho  * utinit - miscellaneous initialization and shutdown
38428c506b8Sjruoho  */
38528c506b8Sjruoho ACPI_STATUS
38628c506b8Sjruoho AcpiUtHardwareInitialize (
38728c506b8Sjruoho     void);
38828c506b8Sjruoho 
38928c506b8Sjruoho void
39028c506b8Sjruoho AcpiUtSubsystemShutdown (
39128c506b8Sjruoho     void);
39228c506b8Sjruoho 
39328c506b8Sjruoho 
39428c506b8Sjruoho /*
39528c506b8Sjruoho  * utcopy - Object construction and conversion interfaces
39628c506b8Sjruoho  */
39728c506b8Sjruoho ACPI_STATUS
39828c506b8Sjruoho AcpiUtBuildSimpleObject(
39928c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Obj,
40028c506b8Sjruoho     ACPI_OBJECT             *UserObj,
40128c506b8Sjruoho     UINT8                   *DataSpace,
40228c506b8Sjruoho     UINT32                  *BufferSpaceUsed);
40328c506b8Sjruoho 
40428c506b8Sjruoho ACPI_STATUS
40528c506b8Sjruoho AcpiUtBuildPackageObject (
40628c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Obj,
40728c506b8Sjruoho     UINT8                   *Buffer,
40828c506b8Sjruoho     UINT32                  *SpaceUsed);
40928c506b8Sjruoho 
41028c506b8Sjruoho ACPI_STATUS
41128c506b8Sjruoho AcpiUtCopyIobjectToEobject (
41228c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Obj,
41328c506b8Sjruoho     ACPI_BUFFER             *RetBuffer);
41428c506b8Sjruoho 
41528c506b8Sjruoho ACPI_STATUS
41628c506b8Sjruoho AcpiUtCopyEobjectToIobject (
41728c506b8Sjruoho     ACPI_OBJECT             *Obj,
41828c506b8Sjruoho     ACPI_OPERAND_OBJECT     **InternalObj);
41928c506b8Sjruoho 
42028c506b8Sjruoho ACPI_STATUS
42128c506b8Sjruoho AcpiUtCopyISimpleToIsimple (
42228c506b8Sjruoho     ACPI_OPERAND_OBJECT     *SourceObj,
42328c506b8Sjruoho     ACPI_OPERAND_OBJECT     *DestObj);
42428c506b8Sjruoho 
42528c506b8Sjruoho ACPI_STATUS
42628c506b8Sjruoho AcpiUtCopyIobjectToIobject (
42728c506b8Sjruoho     ACPI_OPERAND_OBJECT     *SourceDesc,
42828c506b8Sjruoho     ACPI_OPERAND_OBJECT     **DestDesc,
42928c506b8Sjruoho     ACPI_WALK_STATE         *WalkState);
43028c506b8Sjruoho 
43128c506b8Sjruoho 
43228c506b8Sjruoho /*
43328c506b8Sjruoho  * utcreate - Object creation
43428c506b8Sjruoho  */
43528c506b8Sjruoho ACPI_STATUS
43628c506b8Sjruoho AcpiUtUpdateObjectReference (
43728c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object,
43828c506b8Sjruoho     UINT16                  Action);
43928c506b8Sjruoho 
44028c506b8Sjruoho 
44128c506b8Sjruoho /*
44228c506b8Sjruoho  * utdebug - Debug interfaces
44328c506b8Sjruoho  */
44428c506b8Sjruoho void
44528c506b8Sjruoho AcpiUtInitStackPtrTrace (
44628c506b8Sjruoho     void);
44728c506b8Sjruoho 
44828c506b8Sjruoho void
44928c506b8Sjruoho AcpiUtTrackStackPtr (
45028c506b8Sjruoho     void);
45128c506b8Sjruoho 
45228c506b8Sjruoho void
45328c506b8Sjruoho AcpiUtTrace (
45428c506b8Sjruoho     UINT32                  LineNumber,
45528c506b8Sjruoho     const char              *FunctionName,
45628c506b8Sjruoho     const char              *ModuleName,
45728c506b8Sjruoho     UINT32                  ComponentId);
45828c506b8Sjruoho 
45928c506b8Sjruoho void
46028c506b8Sjruoho AcpiUtTracePtr (
46128c506b8Sjruoho     UINT32                  LineNumber,
46228c506b8Sjruoho     const char              *FunctionName,
46328c506b8Sjruoho     const char              *ModuleName,
46428c506b8Sjruoho     UINT32                  ComponentId,
46549c2f1f4Schristos     const void              *Pointer);
46628c506b8Sjruoho 
46728c506b8Sjruoho void
46828c506b8Sjruoho AcpiUtTraceU32 (
46928c506b8Sjruoho     UINT32                  LineNumber,
47028c506b8Sjruoho     const char              *FunctionName,
47128c506b8Sjruoho     const char              *ModuleName,
47228c506b8Sjruoho     UINT32                  ComponentId,
47328c506b8Sjruoho     UINT32                  Integer);
47428c506b8Sjruoho 
47528c506b8Sjruoho void
47628c506b8Sjruoho AcpiUtTraceStr (
47728c506b8Sjruoho     UINT32                  LineNumber,
47828c506b8Sjruoho     const char              *FunctionName,
47928c506b8Sjruoho     const char              *ModuleName,
48028c506b8Sjruoho     UINT32                  ComponentId,
481fa8715d8Sjruoho     const char              *String);
48228c506b8Sjruoho 
48328c506b8Sjruoho void
48428c506b8Sjruoho AcpiUtExit (
48528c506b8Sjruoho     UINT32                  LineNumber,
48628c506b8Sjruoho     const char              *FunctionName,
48728c506b8Sjruoho     const char              *ModuleName,
48828c506b8Sjruoho     UINT32                  ComponentId);
48928c506b8Sjruoho 
49028c506b8Sjruoho void
49128c506b8Sjruoho AcpiUtStatusExit (
49228c506b8Sjruoho     UINT32                  LineNumber,
49328c506b8Sjruoho     const char              *FunctionName,
49428c506b8Sjruoho     const char              *ModuleName,
49528c506b8Sjruoho     UINT32                  ComponentId,
49628c506b8Sjruoho     ACPI_STATUS             Status);
49728c506b8Sjruoho 
49828c506b8Sjruoho void
49928c506b8Sjruoho AcpiUtValueExit (
50028c506b8Sjruoho     UINT32                  LineNumber,
50128c506b8Sjruoho     const char              *FunctionName,
50228c506b8Sjruoho     const char              *ModuleName,
50328c506b8Sjruoho     UINT32                  ComponentId,
50428c506b8Sjruoho     UINT64                  Value);
50528c506b8Sjruoho 
50628c506b8Sjruoho void
50728c506b8Sjruoho AcpiUtPtrExit (
50828c506b8Sjruoho     UINT32                  LineNumber,
50928c506b8Sjruoho     const char              *FunctionName,
51028c506b8Sjruoho     const char              *ModuleName,
51128c506b8Sjruoho     UINT32                  ComponentId,
51228c506b8Sjruoho     UINT8                   *Ptr);
51328c506b8Sjruoho 
51428c506b8Sjruoho void
51572abab0cSchristos AcpiUtStrExit (
51672abab0cSchristos     UINT32                  LineNumber,
51772abab0cSchristos     const char              *FunctionName,
51872abab0cSchristos     const char              *ModuleName,
51972abab0cSchristos     UINT32                  ComponentId,
52072abab0cSchristos     const char              *String);
52172abab0cSchristos 
52272abab0cSchristos void
523a2c051a9Schristos AcpiUtDebugDumpBuffer (
524a2c051a9Schristos     UINT8                   *Buffer,
525a2c051a9Schristos     UINT32                  Count,
526a2c051a9Schristos     UINT32                  Display,
527a2c051a9Schristos     UINT32                  ComponentId);
528a2c051a9Schristos 
529a2c051a9Schristos void
53028c506b8Sjruoho AcpiUtDumpBuffer (
53128c506b8Sjruoho     UINT8                   *Buffer,
53228c506b8Sjruoho     UINT32                  Count,
53328c506b8Sjruoho     UINT32                  Display,
534a2c051a9Schristos     UINT32                  Offset);
53528c506b8Sjruoho 
536414ef032Schristos #ifdef ACPI_APPLICATION
537414ef032Schristos void
538414ef032Schristos AcpiUtDumpBufferToFile (
539414ef032Schristos     ACPI_FILE               File,
540414ef032Schristos     UINT8                   *Buffer,
541414ef032Schristos     UINT32                  Count,
542414ef032Schristos     UINT32                  Display,
543414ef032Schristos     UINT32                  BaseOffset);
544414ef032Schristos #endif
545414ef032Schristos 
54628c506b8Sjruoho void
54728c506b8Sjruoho AcpiUtReportError (
54828c506b8Sjruoho     char                    *ModuleName,
54928c506b8Sjruoho     UINT32                  LineNumber);
55028c506b8Sjruoho 
55128c506b8Sjruoho void
55228c506b8Sjruoho AcpiUtReportInfo (
55328c506b8Sjruoho     char                    *ModuleName,
55428c506b8Sjruoho     UINT32                  LineNumber);
55528c506b8Sjruoho 
55628c506b8Sjruoho void
55728c506b8Sjruoho AcpiUtReportWarning (
55828c506b8Sjruoho     char                    *ModuleName,
55928c506b8Sjruoho     UINT32                  LineNumber);
56028c506b8Sjruoho 
5619b9ee194Schristos 
56228c506b8Sjruoho /*
56328c506b8Sjruoho  * utdelete - Object deletion and reference counts
56428c506b8Sjruoho  */
56528c506b8Sjruoho void
56628c506b8Sjruoho AcpiUtAddReference (
56728c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object);
56828c506b8Sjruoho 
56928c506b8Sjruoho void
57028c506b8Sjruoho AcpiUtRemoveReference (
57128c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object);
57228c506b8Sjruoho 
57328c506b8Sjruoho void
57428c506b8Sjruoho AcpiUtDeleteInternalPackageObject (
57528c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object);
57628c506b8Sjruoho 
57728c506b8Sjruoho void
57828c506b8Sjruoho AcpiUtDeleteInternalSimpleObject (
57928c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object);
58028c506b8Sjruoho 
58128c506b8Sjruoho void
58228c506b8Sjruoho AcpiUtDeleteInternalObjectList (
58328c506b8Sjruoho     ACPI_OPERAND_OBJECT     **ObjList);
58428c506b8Sjruoho 
58528c506b8Sjruoho 
58628c506b8Sjruoho /*
58728c506b8Sjruoho  * uteval - object evaluation
58828c506b8Sjruoho  */
58928c506b8Sjruoho ACPI_STATUS
59028c506b8Sjruoho AcpiUtEvaluateObject (
59128c506b8Sjruoho     ACPI_NAMESPACE_NODE     *PrefixNode,
592716c1ee0Sjruoho     const char              *Path,
59328c506b8Sjruoho     UINT32                  ExpectedReturnBtypes,
59428c506b8Sjruoho     ACPI_OPERAND_OBJECT     **ReturnDesc);
59528c506b8Sjruoho 
59628c506b8Sjruoho ACPI_STATUS
59728c506b8Sjruoho AcpiUtEvaluateNumericObject (
598716c1ee0Sjruoho     const char              *ObjectName,
59928c506b8Sjruoho     ACPI_NAMESPACE_NODE     *DeviceNode,
60028c506b8Sjruoho     UINT64                  *Value);
60128c506b8Sjruoho 
60228c506b8Sjruoho ACPI_STATUS
60328c506b8Sjruoho AcpiUtExecute_STA (
60428c506b8Sjruoho     ACPI_NAMESPACE_NODE     *DeviceNode,
60528c506b8Sjruoho     UINT32                  *StatusFlags);
60628c506b8Sjruoho 
60728c506b8Sjruoho ACPI_STATUS
60828c506b8Sjruoho AcpiUtExecutePowerMethods (
60928c506b8Sjruoho     ACPI_NAMESPACE_NODE     *DeviceNode,
61028c506b8Sjruoho     const char              **MethodNames,
61128c506b8Sjruoho     UINT8                   MethodCount,
61228c506b8Sjruoho     UINT8                   *OutValues);
61328c506b8Sjruoho 
61428c506b8Sjruoho 
61528c506b8Sjruoho /*
61628c506b8Sjruoho  * utids - device ID support
61728c506b8Sjruoho  */
61828c506b8Sjruoho ACPI_STATUS
61928c506b8Sjruoho AcpiUtExecute_HID (
62028c506b8Sjruoho     ACPI_NAMESPACE_NODE     *DeviceNode,
621a2c051a9Schristos     ACPI_PNP_DEVICE_ID      **ReturnId);
62228c506b8Sjruoho 
62328c506b8Sjruoho ACPI_STATUS
62428c506b8Sjruoho AcpiUtExecute_UID (
62528c506b8Sjruoho     ACPI_NAMESPACE_NODE     *DeviceNode,
626a2c051a9Schristos     ACPI_PNP_DEVICE_ID      **ReturnId);
627a2c051a9Schristos 
628a2c051a9Schristos ACPI_STATUS
62928c506b8Sjruoho AcpiUtExecute_CID (
63028c506b8Sjruoho     ACPI_NAMESPACE_NODE     *DeviceNode,
631a2c051a9Schristos     ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
63228c506b8Sjruoho 
6339b9ee194Schristos ACPI_STATUS
6349b9ee194Schristos AcpiUtExecute_CLS (
6359b9ee194Schristos     ACPI_NAMESPACE_NODE     *DeviceNode,
6369b9ee194Schristos     ACPI_PNP_DEVICE_ID      **ReturnId);
6379b9ee194Schristos 
63828c506b8Sjruoho 
63928c506b8Sjruoho /*
64028c506b8Sjruoho  * utlock - reader/writer locks
64128c506b8Sjruoho  */
64228c506b8Sjruoho ACPI_STATUS
64328c506b8Sjruoho AcpiUtCreateRwLock (
64428c506b8Sjruoho     ACPI_RW_LOCK            *Lock);
64528c506b8Sjruoho 
64628c506b8Sjruoho void
64728c506b8Sjruoho AcpiUtDeleteRwLock (
64828c506b8Sjruoho     ACPI_RW_LOCK            *Lock);
64928c506b8Sjruoho 
65028c506b8Sjruoho ACPI_STATUS
65128c506b8Sjruoho AcpiUtAcquireReadLock (
65228c506b8Sjruoho     ACPI_RW_LOCK            *Lock);
65328c506b8Sjruoho 
65428c506b8Sjruoho ACPI_STATUS
65528c506b8Sjruoho AcpiUtReleaseReadLock (
65628c506b8Sjruoho     ACPI_RW_LOCK            *Lock);
65728c506b8Sjruoho 
65828c506b8Sjruoho ACPI_STATUS
65928c506b8Sjruoho AcpiUtAcquireWriteLock (
66028c506b8Sjruoho     ACPI_RW_LOCK            *Lock);
66128c506b8Sjruoho 
66228c506b8Sjruoho void
66328c506b8Sjruoho AcpiUtReleaseWriteLock (
66428c506b8Sjruoho     ACPI_RW_LOCK            *Lock);
66528c506b8Sjruoho 
66628c506b8Sjruoho 
66728c506b8Sjruoho /*
66828c506b8Sjruoho  * utobject - internal object create/delete/cache routines
66928c506b8Sjruoho  */
67028c506b8Sjruoho ACPI_OPERAND_OBJECT  *
67128c506b8Sjruoho AcpiUtCreateInternalObjectDbg (
67228c506b8Sjruoho     const char              *ModuleName,
67328c506b8Sjruoho     UINT32                  LineNumber,
67428c506b8Sjruoho     UINT32                  ComponentId,
67528c506b8Sjruoho     ACPI_OBJECT_TYPE        Type);
67628c506b8Sjruoho 
67728c506b8Sjruoho void *
67828c506b8Sjruoho AcpiUtAllocateObjectDescDbg (
67928c506b8Sjruoho     const char              *ModuleName,
68028c506b8Sjruoho     UINT32                  LineNumber,
68128c506b8Sjruoho     UINT32                  ComponentId);
68228c506b8Sjruoho 
68328c506b8Sjruoho #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
68428c506b8Sjruoho #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
68528c506b8Sjruoho 
68628c506b8Sjruoho void
68728c506b8Sjruoho AcpiUtDeleteObjectDesc (
68828c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object);
68928c506b8Sjruoho 
69028c506b8Sjruoho BOOLEAN
69128c506b8Sjruoho AcpiUtValidInternalObject (
69228c506b8Sjruoho     void                    *Object);
69328c506b8Sjruoho 
69428c506b8Sjruoho ACPI_OPERAND_OBJECT *
69528c506b8Sjruoho AcpiUtCreatePackageObject (
69628c506b8Sjruoho     UINT32                  Count);
69728c506b8Sjruoho 
69828c506b8Sjruoho ACPI_OPERAND_OBJECT *
69928c506b8Sjruoho AcpiUtCreateIntegerObject (
70028c506b8Sjruoho     UINT64                  Value);
70128c506b8Sjruoho 
70228c506b8Sjruoho ACPI_OPERAND_OBJECT *
70328c506b8Sjruoho AcpiUtCreateBufferObject (
70428c506b8Sjruoho     ACPI_SIZE               BufferSize);
70528c506b8Sjruoho 
70628c506b8Sjruoho ACPI_OPERAND_OBJECT *
70728c506b8Sjruoho AcpiUtCreateStringObject (
70828c506b8Sjruoho     ACPI_SIZE               StringSize);
70928c506b8Sjruoho 
71028c506b8Sjruoho ACPI_STATUS
71128c506b8Sjruoho AcpiUtGetObjectSize(
71228c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Obj,
71328c506b8Sjruoho     ACPI_SIZE               *ObjLength);
71428c506b8Sjruoho 
71528c506b8Sjruoho 
71628c506b8Sjruoho /*
717159c4e26Sjruoho  * utosi - Support for the _OSI predefined control method
718159c4e26Sjruoho  */
719159c4e26Sjruoho ACPI_STATUS
720159c4e26Sjruoho AcpiUtInitializeInterfaces (
721159c4e26Sjruoho     void);
722159c4e26Sjruoho 
723a2c051a9Schristos ACPI_STATUS
724159c4e26Sjruoho AcpiUtInterfaceTerminate (
725159c4e26Sjruoho     void);
726159c4e26Sjruoho 
727159c4e26Sjruoho ACPI_STATUS
728159c4e26Sjruoho AcpiUtInstallInterface (
729159c4e26Sjruoho     ACPI_STRING             InterfaceName);
730159c4e26Sjruoho 
731159c4e26Sjruoho ACPI_STATUS
732159c4e26Sjruoho AcpiUtRemoveInterface (
733159c4e26Sjruoho     ACPI_STRING             InterfaceName);
734159c4e26Sjruoho 
735a2c051a9Schristos ACPI_STATUS
736a2c051a9Schristos AcpiUtUpdateInterfaces (
737a2c051a9Schristos     UINT8                   Action);
738a2c051a9Schristos 
739159c4e26Sjruoho ACPI_INTERFACE_INFO *
740159c4e26Sjruoho AcpiUtGetInterface (
741159c4e26Sjruoho     ACPI_STRING             InterfaceName);
742159c4e26Sjruoho 
743159c4e26Sjruoho ACPI_STATUS
744159c4e26Sjruoho AcpiUtOsiImplementation (
745159c4e26Sjruoho     ACPI_WALK_STATE         *WalkState);
746159c4e26Sjruoho 
747159c4e26Sjruoho 
748159c4e26Sjruoho /*
749a2c051a9Schristos  * utpredef - support for predefined names
750a2c051a9Schristos  */
751a2c051a9Schristos const ACPI_PREDEFINED_INFO *
752a2c051a9Schristos AcpiUtGetNextPredefinedMethod (
753a2c051a9Schristos     const ACPI_PREDEFINED_INFO  *ThisName);
754a2c051a9Schristos 
755a2c051a9Schristos const ACPI_PREDEFINED_INFO *
756a2c051a9Schristos AcpiUtMatchPredefinedMethod (
757a2c051a9Schristos     char                        *Name);
758a2c051a9Schristos 
759cb2bd8f0Schristos void
760cb2bd8f0Schristos AcpiUtGetExpectedReturnTypes (
761cb2bd8f0Schristos     char                    *Buffer,
762cb2bd8f0Schristos     UINT32                  ExpectedBtypes);
763cb2bd8f0Schristos 
764cb2bd8f0Schristos #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
765a2c051a9Schristos const ACPI_PREDEFINED_INFO *
766a2c051a9Schristos AcpiUtMatchResourceName (
767a2c051a9Schristos     char                        *Name);
768a2c051a9Schristos 
769a2c051a9Schristos void
770a2c051a9Schristos AcpiUtDisplayPredefinedMethod (
771a2c051a9Schristos     char                        *Buffer,
772a2c051a9Schristos     const ACPI_PREDEFINED_INFO  *ThisName,
773a2c051a9Schristos     BOOLEAN                     MultiLine);
774a2c051a9Schristos 
775a2c051a9Schristos UINT32
776a2c051a9Schristos AcpiUtGetResourceBitWidth (
777a2c051a9Schristos     char                    *Buffer,
778a2c051a9Schristos     UINT16                  Types);
779cb2bd8f0Schristos #endif
780a2c051a9Schristos 
781a2c051a9Schristos 
782a2c051a9Schristos /*
78328c506b8Sjruoho  * utstate - Generic state creation/cache routines
78428c506b8Sjruoho  */
78528c506b8Sjruoho void
78628c506b8Sjruoho AcpiUtPushGenericState (
78728c506b8Sjruoho     ACPI_GENERIC_STATE      **ListHead,
78828c506b8Sjruoho     ACPI_GENERIC_STATE      *State);
78928c506b8Sjruoho 
79028c506b8Sjruoho ACPI_GENERIC_STATE *
79128c506b8Sjruoho AcpiUtPopGenericState (
79228c506b8Sjruoho     ACPI_GENERIC_STATE      **ListHead);
79328c506b8Sjruoho 
79428c506b8Sjruoho 
79528c506b8Sjruoho ACPI_GENERIC_STATE *
79628c506b8Sjruoho AcpiUtCreateGenericState (
79728c506b8Sjruoho     void);
79828c506b8Sjruoho 
79928c506b8Sjruoho ACPI_THREAD_STATE *
80028c506b8Sjruoho AcpiUtCreateThreadState (
80128c506b8Sjruoho     void);
80228c506b8Sjruoho 
80328c506b8Sjruoho ACPI_GENERIC_STATE *
80428c506b8Sjruoho AcpiUtCreateUpdateState (
80528c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object,
80628c506b8Sjruoho     UINT16                  Action);
80728c506b8Sjruoho 
80828c506b8Sjruoho ACPI_GENERIC_STATE *
80928c506b8Sjruoho AcpiUtCreatePkgState (
81028c506b8Sjruoho     void                    *InternalObject,
81128c506b8Sjruoho     void                    *ExternalObject,
812ae01dbf5Schristos     UINT32                  Index);
81328c506b8Sjruoho 
81428c506b8Sjruoho ACPI_STATUS
81528c506b8Sjruoho AcpiUtCreateUpdateStateAndPush (
81628c506b8Sjruoho     ACPI_OPERAND_OBJECT     *Object,
81728c506b8Sjruoho     UINT16                  Action,
81828c506b8Sjruoho     ACPI_GENERIC_STATE      **StateList);
81928c506b8Sjruoho 
82028c506b8Sjruoho ACPI_GENERIC_STATE *
82128c506b8Sjruoho AcpiUtCreateControlState (
82228c506b8Sjruoho     void);
82328c506b8Sjruoho 
82428c506b8Sjruoho void
82528c506b8Sjruoho AcpiUtDeleteGenericState (
82628c506b8Sjruoho     ACPI_GENERIC_STATE      *State);
82728c506b8Sjruoho 
82828c506b8Sjruoho 
82928c506b8Sjruoho /*
83028c506b8Sjruoho  * utmath
83128c506b8Sjruoho  */
83228c506b8Sjruoho ACPI_STATUS
83328c506b8Sjruoho AcpiUtDivide (
83428c506b8Sjruoho     UINT64                  InDividend,
83528c506b8Sjruoho     UINT64                  InDivisor,
83628c506b8Sjruoho     UINT64                  *OutQuotient,
83728c506b8Sjruoho     UINT64                  *OutRemainder);
83828c506b8Sjruoho 
83928c506b8Sjruoho ACPI_STATUS
84028c506b8Sjruoho AcpiUtShortDivide (
84128c506b8Sjruoho     UINT64                  InDividend,
84228c506b8Sjruoho     UINT32                  Divisor,
84328c506b8Sjruoho     UINT64                  *OutQuotient,
84428c506b8Sjruoho     UINT32                  *OutRemainder);
84528c506b8Sjruoho 
846ae01dbf5Schristos ACPI_STATUS
847ae01dbf5Schristos AcpiUtShortMultiply (
848ae01dbf5Schristos     UINT64                  InMultiplicand,
849ae01dbf5Schristos     UINT32                  Multiplier,
850ae01dbf5Schristos     UINT64                  *Outproduct);
851ae01dbf5Schristos 
852ae01dbf5Schristos ACPI_STATUS
853ae01dbf5Schristos AcpiUtShortShiftLeft (
854ae01dbf5Schristos     UINT64                  Operand,
855ae01dbf5Schristos     UINT32                  Count,
856ae01dbf5Schristos     UINT64                  *OutResult);
857ae01dbf5Schristos 
858ae01dbf5Schristos ACPI_STATUS
859ae01dbf5Schristos AcpiUtShortShiftRight (
860ae01dbf5Schristos     UINT64                  Operand,
861ae01dbf5Schristos     UINT32                  Count,
862ae01dbf5Schristos     UINT64                  *OutResult);
863ae01dbf5Schristos 
864a2c051a9Schristos 
86528c506b8Sjruoho /*
86628c506b8Sjruoho  * utmisc
86728c506b8Sjruoho  */
868a2c051a9Schristos const ACPI_EXCEPTION_INFO *
86928c506b8Sjruoho AcpiUtValidateException (
87028c506b8Sjruoho     ACPI_STATUS             Status);
87128c506b8Sjruoho 
87228c506b8Sjruoho BOOLEAN
87328c506b8Sjruoho AcpiUtIsPciRootBridge (
87428c506b8Sjruoho     char                    *Id);
87528c506b8Sjruoho 
87681bd9c9cSchristos #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP)
87728c506b8Sjruoho BOOLEAN
87828c506b8Sjruoho AcpiUtIsAmlTable (
87928c506b8Sjruoho     ACPI_TABLE_HEADER       *Table);
880cb2bd8f0Schristos #endif
88128c506b8Sjruoho 
88228c506b8Sjruoho ACPI_STATUS
88328c506b8Sjruoho AcpiUtWalkPackageTree (
88428c506b8Sjruoho     ACPI_OPERAND_OBJECT     *SourceObject,
88528c506b8Sjruoho     void                    *TargetObject,
88628c506b8Sjruoho     ACPI_PKG_CALLBACK       WalkCallback,
88728c506b8Sjruoho     void                    *Context);
88828c506b8Sjruoho 
88928c506b8Sjruoho /* Values for Base above (16=Hex, 10=Decimal) */
89028c506b8Sjruoho 
89128c506b8Sjruoho #define ACPI_ANY_BASE        0
89228c506b8Sjruoho 
8939b9ee194Schristos 
89428c506b8Sjruoho UINT32
89528c506b8Sjruoho AcpiUtDwordByteSwap (
89628c506b8Sjruoho     UINT32                  Value);
89728c506b8Sjruoho 
89828c506b8Sjruoho void
89928c506b8Sjruoho AcpiUtSetIntegerWidth (
90028c506b8Sjruoho     UINT8                   Revision);
90128c506b8Sjruoho 
90228c506b8Sjruoho #ifdef ACPI_DEBUG_OUTPUT
90328c506b8Sjruoho void
90428c506b8Sjruoho AcpiUtDisplayInitPathname (
90528c506b8Sjruoho     UINT8                   Type,
90628c506b8Sjruoho     ACPI_NAMESPACE_NODE     *ObjHandle,
907716c1ee0Sjruoho     const char              *Path);
90828c506b8Sjruoho #endif
90928c506b8Sjruoho 
91028c506b8Sjruoho 
91128c506b8Sjruoho /*
912a2c051a9Schristos  * utownerid - Support for Table/Method Owner IDs
913a2c051a9Schristos  */
914a2c051a9Schristos ACPI_STATUS
915a2c051a9Schristos AcpiUtAllocateOwnerId (
916a2c051a9Schristos     ACPI_OWNER_ID           *OwnerId);
917a2c051a9Schristos 
918a2c051a9Schristos void
919a2c051a9Schristos AcpiUtReleaseOwnerId (
920a2c051a9Schristos     ACPI_OWNER_ID           *OwnerId);
921a2c051a9Schristos 
922a2c051a9Schristos 
923a2c051a9Schristos /*
92428c506b8Sjruoho  * utresrc
92528c506b8Sjruoho  */
92628c506b8Sjruoho ACPI_STATUS
92728c506b8Sjruoho AcpiUtWalkAmlResources (
928a2c051a9Schristos     ACPI_WALK_STATE         *WalkState,
92928c506b8Sjruoho     UINT8                   *Aml,
93028c506b8Sjruoho     ACPI_SIZE               AmlLength,
93128c506b8Sjruoho     ACPI_WALK_AML_CALLBACK  UserFunction,
932a2c051a9Schristos     void                    **Context);
93328c506b8Sjruoho 
93428c506b8Sjruoho ACPI_STATUS
93528c506b8Sjruoho AcpiUtValidateResource (
936a2c051a9Schristos     ACPI_WALK_STATE         *WalkState,
93728c506b8Sjruoho     void                    *Aml,
93828c506b8Sjruoho     UINT8                   *ReturnIndex);
93928c506b8Sjruoho 
94028c506b8Sjruoho UINT32
94128c506b8Sjruoho AcpiUtGetDescriptorLength (
94228c506b8Sjruoho     void                    *Aml);
94328c506b8Sjruoho 
94428c506b8Sjruoho UINT16
94528c506b8Sjruoho AcpiUtGetResourceLength (
94628c506b8Sjruoho     void                    *Aml);
94728c506b8Sjruoho 
94828c506b8Sjruoho UINT8
94928c506b8Sjruoho AcpiUtGetResourceHeaderLength (
95028c506b8Sjruoho     void                    *Aml);
95128c506b8Sjruoho 
95228c506b8Sjruoho UINT8
95328c506b8Sjruoho AcpiUtGetResourceType (
95428c506b8Sjruoho     void                    *Aml);
95528c506b8Sjruoho 
95628c506b8Sjruoho ACPI_STATUS
95728c506b8Sjruoho AcpiUtGetResourceEndTag (
95828c506b8Sjruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
95928c506b8Sjruoho     UINT8                   **EndTag);
96028c506b8Sjruoho 
96128c506b8Sjruoho 
96228c506b8Sjruoho /*
963a2c051a9Schristos  * utstring - String and character utilities
964a2c051a9Schristos  */
965a2c051a9Schristos void
966a2c051a9Schristos AcpiUtPrintString (
967a2c051a9Schristos     char                    *String,
968a2c051a9Schristos     UINT16                  MaxLength);
969a2c051a9Schristos 
970cb2bd8f0Schristos #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP
971a2c051a9Schristos void
972a2c051a9Schristos UtConvertBackslashes (
973a2c051a9Schristos     char                    *Pathname);
974cb2bd8f0Schristos #endif
975a2c051a9Schristos 
976a2c051a9Schristos void
977a2c051a9Schristos AcpiUtRepairName (
978a2c051a9Schristos     char                    *Name);
979a2c051a9Schristos 
980f45f09e8Schristos #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) || defined (ACPI_DEBUG_OUTPUT)
981a2c051a9Schristos BOOLEAN
982a2c051a9Schristos AcpiUtSafeStrcpy (
983a2c051a9Schristos     char                    *Dest,
984a2c051a9Schristos     ACPI_SIZE               DestSize,
985a2c051a9Schristos     char                    *Source);
986a2c051a9Schristos 
987f45f09e8Schristos void
988f45f09e8Schristos AcpiUtSafeStrncpy (
989f45f09e8Schristos     char                    *Dest,
990f45f09e8Schristos     const char              *Source,
991f45f09e8Schristos     ACPI_SIZE               DestSize);
992f45f09e8Schristos 
993a2c051a9Schristos BOOLEAN
994a2c051a9Schristos AcpiUtSafeStrcat (
995a2c051a9Schristos     char                    *Dest,
996a2c051a9Schristos     ACPI_SIZE               DestSize,
997a2c051a9Schristos     char                    *Source);
998a2c051a9Schristos 
999a2c051a9Schristos BOOLEAN
1000a2c051a9Schristos AcpiUtSafeStrncat (
1001a2c051a9Schristos     char                    *Dest,
1002a2c051a9Schristos     ACPI_SIZE               DestSize,
1003a2c051a9Schristos     char                    *Source,
1004a2c051a9Schristos     ACPI_SIZE               MaxTransferLength);
1005a2c051a9Schristos #endif
1006a2c051a9Schristos 
1007a2c051a9Schristos 
1008a2c051a9Schristos /*
100928c506b8Sjruoho  * utmutex - mutex support
101028c506b8Sjruoho  */
101128c506b8Sjruoho ACPI_STATUS
101228c506b8Sjruoho AcpiUtMutexInitialize (
101328c506b8Sjruoho     void);
101428c506b8Sjruoho 
101528c506b8Sjruoho void
101628c506b8Sjruoho AcpiUtMutexTerminate (
101728c506b8Sjruoho     void);
101828c506b8Sjruoho 
101928c506b8Sjruoho ACPI_STATUS
102028c506b8Sjruoho AcpiUtAcquireMutex (
102128c506b8Sjruoho     ACPI_MUTEX_HANDLE       MutexId);
102228c506b8Sjruoho 
102328c506b8Sjruoho ACPI_STATUS
102428c506b8Sjruoho AcpiUtReleaseMutex (
102528c506b8Sjruoho     ACPI_MUTEX_HANDLE       MutexId);
102628c506b8Sjruoho 
102728c506b8Sjruoho 
102828c506b8Sjruoho /*
102928c506b8Sjruoho  * utalloc - memory allocation and object caching
103028c506b8Sjruoho  */
103128c506b8Sjruoho ACPI_STATUS
103228c506b8Sjruoho AcpiUtCreateCaches (
103328c506b8Sjruoho     void);
103428c506b8Sjruoho 
103528c506b8Sjruoho ACPI_STATUS
103628c506b8Sjruoho AcpiUtDeleteCaches (
103728c506b8Sjruoho     void);
103828c506b8Sjruoho 
103928c506b8Sjruoho ACPI_STATUS
104028c506b8Sjruoho AcpiUtValidateBuffer (
104128c506b8Sjruoho     ACPI_BUFFER             *Buffer);
104228c506b8Sjruoho 
104328c506b8Sjruoho ACPI_STATUS
104428c506b8Sjruoho AcpiUtInitializeBuffer (
104528c506b8Sjruoho     ACPI_BUFFER             *Buffer,
104628c506b8Sjruoho     ACPI_SIZE               RequiredLength);
104728c506b8Sjruoho 
104828c506b8Sjruoho #ifdef ACPI_DBG_TRACK_ALLOCATIONS
104928c506b8Sjruoho void *
105028c506b8Sjruoho AcpiUtAllocateAndTrack (
105128c506b8Sjruoho     ACPI_SIZE               Size,
105228c506b8Sjruoho     UINT32                  Component,
105328c506b8Sjruoho     const char              *Module,
105428c506b8Sjruoho     UINT32                  Line);
105528c506b8Sjruoho 
105628c506b8Sjruoho void *
105728c506b8Sjruoho AcpiUtAllocateZeroedAndTrack (
105828c506b8Sjruoho     ACPI_SIZE               Size,
105928c506b8Sjruoho     UINT32                  Component,
106028c506b8Sjruoho     const char              *Module,
106128c506b8Sjruoho     UINT32                  Line);
106228c506b8Sjruoho 
106328c506b8Sjruoho void
106428c506b8Sjruoho AcpiUtFreeAndTrack (
106528c506b8Sjruoho     void                    *Address,
106628c506b8Sjruoho     UINT32                  Component,
106728c506b8Sjruoho     const char              *Module,
106828c506b8Sjruoho     UINT32                  Line);
106928c506b8Sjruoho 
107028c506b8Sjruoho void
107128c506b8Sjruoho AcpiUtDumpAllocationInfo (
107228c506b8Sjruoho     void);
107328c506b8Sjruoho 
107428c506b8Sjruoho void
107528c506b8Sjruoho AcpiUtDumpAllocations (
107628c506b8Sjruoho     UINT32                  Component,
107728c506b8Sjruoho     const char              *Module);
107828c506b8Sjruoho 
107928c506b8Sjruoho ACPI_STATUS
108028c506b8Sjruoho AcpiUtCreateList (
1081716c1ee0Sjruoho     const char              *ListName,
108228c506b8Sjruoho     UINT16                  ObjectSize,
108328c506b8Sjruoho     ACPI_MEMORY_LIST        **ReturnCache);
108428c506b8Sjruoho 
1085159c4e26Sjruoho #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
108628c506b8Sjruoho 
10879b9ee194Schristos 
1088a2c051a9Schristos /*
1089a2c051a9Schristos  * utaddress - address range check
1090a2c051a9Schristos  */
1091a2c051a9Schristos ACPI_STATUS
1092a2c051a9Schristos AcpiUtAddAddressRange (
1093a2c051a9Schristos     ACPI_ADR_SPACE_TYPE     SpaceId,
1094a2c051a9Schristos     ACPI_PHYSICAL_ADDRESS   Address,
1095a2c051a9Schristos     UINT32                  Length,
1096a2c051a9Schristos     ACPI_NAMESPACE_NODE     *RegionNode);
1097a2c051a9Schristos 
1098a2c051a9Schristos void
1099a2c051a9Schristos AcpiUtRemoveAddressRange (
1100a2c051a9Schristos     ACPI_ADR_SPACE_TYPE     SpaceId,
1101a2c051a9Schristos     ACPI_NAMESPACE_NODE     *RegionNode);
1102a2c051a9Schristos 
1103a2c051a9Schristos UINT32
1104a2c051a9Schristos AcpiUtCheckAddressRange (
1105a2c051a9Schristos     ACPI_ADR_SPACE_TYPE     SpaceId,
1106a2c051a9Schristos     ACPI_PHYSICAL_ADDRESS   Address,
1107a2c051a9Schristos     UINT32                  Length,
1108a2c051a9Schristos     BOOLEAN                 Warn);
1109a2c051a9Schristos 
1110a2c051a9Schristos void
1111a2c051a9Schristos AcpiUtDeleteAddressLists (
1112a2c051a9Schristos     void);
1113159c4e26Sjruoho 
11149b9ee194Schristos 
1115159c4e26Sjruoho /*
1116159c4e26Sjruoho  * utxferror - various error/warning output functions
1117159c4e26Sjruoho  */
11187ab6b89bSchristos ACPI_PRINTF_LIKE(5)
1119159c4e26Sjruoho void ACPI_INTERNAL_VAR_XFACE
1120159c4e26Sjruoho AcpiUtPredefinedWarning (
1121159c4e26Sjruoho     const char              *ModuleName,
1122159c4e26Sjruoho     UINT32                  LineNumber,
1123159c4e26Sjruoho     char                    *Pathname,
11247ab6b89bSchristos     UINT16                  NodeFlags,
1125159c4e26Sjruoho     const char              *Format,
1126159c4e26Sjruoho     ...);
1127159c4e26Sjruoho 
11287ab6b89bSchristos ACPI_PRINTF_LIKE(5)
1129159c4e26Sjruoho void ACPI_INTERNAL_VAR_XFACE
1130159c4e26Sjruoho AcpiUtPredefinedInfo (
1131159c4e26Sjruoho     const char              *ModuleName,
1132159c4e26Sjruoho     UINT32                  LineNumber,
1133159c4e26Sjruoho     char                    *Pathname,
11347ab6b89bSchristos     UINT16                  NodeFlags,
1135159c4e26Sjruoho     const char              *Format,
1136159c4e26Sjruoho     ...);
1137159c4e26Sjruoho 
11387ab6b89bSchristos ACPI_PRINTF_LIKE(5)
1139a2c051a9Schristos void ACPI_INTERNAL_VAR_XFACE
1140a2c051a9Schristos AcpiUtPredefinedBiosError (
1141a2c051a9Schristos     const char              *ModuleName,
1142a2c051a9Schristos     UINT32                  LineNumber,
1143a2c051a9Schristos     char                    *Pathname,
11447ab6b89bSchristos     UINT16                  NodeFlags,
1145a2c051a9Schristos     const char              *Format,
1146a2c051a9Schristos     ...);
1147a2c051a9Schristos 
1148159c4e26Sjruoho void
114925666a51Schristos AcpiUtPrefixedNamespaceError (
1150159c4e26Sjruoho     const char              *ModuleName,
1151159c4e26Sjruoho     UINT32                  LineNumber,
115225666a51Schristos     ACPI_GENERIC_STATE      *PrefixScope,
1153159c4e26Sjruoho     const char              *InternalName,
1154159c4e26Sjruoho     ACPI_STATUS             LookupStatus);
1155159c4e26Sjruoho 
1156159c4e26Sjruoho void
1157159c4e26Sjruoho AcpiUtMethodError (
1158159c4e26Sjruoho     const char              *ModuleName,
1159159c4e26Sjruoho     UINT32                  LineNumber,
1160159c4e26Sjruoho     const char              *Message,
1161159c4e26Sjruoho     ACPI_NAMESPACE_NODE     *Node,
1162159c4e26Sjruoho     const char              *Path,
1163159c4e26Sjruoho     ACPI_STATUS             LookupStatus);
116428c506b8Sjruoho 
11659b9ee194Schristos 
1166414ef032Schristos /*
1167414ef032Schristos  * Utility functions for ACPI names and IDs
1168414ef032Schristos  */
1169414ef032Schristos const AH_PREDEFINED_NAME *
1170414ef032Schristos AcpiAhMatchPredefinedName (
1171414ef032Schristos     char                    *Nameseg);
1172414ef032Schristos 
1173414ef032Schristos const AH_DEVICE_ID *
1174414ef032Schristos AcpiAhMatchHardwareId (
1175414ef032Schristos     char                    *Hid);
1176414ef032Schristos 
1177414ef032Schristos const char *
1178414ef032Schristos AcpiAhMatchUuid (
1179414ef032Schristos     UINT8                   *Data);
1180414ef032Schristos 
11819b9ee194Schristos 
1182414ef032Schristos /*
1183414ef032Schristos  * utuuid -- UUID support functions
1184414ef032Schristos  */
1185cb2bd8f0Schristos #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP|| defined ACPI_DISASSEMBLER)
1186414ef032Schristos void
1187414ef032Schristos AcpiUtConvertStringToUuid (
1188414ef032Schristos     const char              *InString,
1189414ef032Schristos     UINT8                   *UuidBuffer);
11902546ead2Schristos 
11912546ead2Schristos ACPI_STATUS
11922546ead2Schristos AcpiUtConvertUuidToString (
11932546ead2Schristos     char                    *UuidBuffer,
11942546ead2Schristos     char                    *OutString);
1195cb2bd8f0Schristos #endif
1196414ef032Schristos 
119728c506b8Sjruoho #endif /* _ACUTILS_H */
1198