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