1a9f12690SJung-uk Kim /****************************************************************************** 2a9f12690SJung-uk Kim * 3a9f12690SJung-uk Kim * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures 4a9f12690SJung-uk Kim * 5a9f12690SJung-uk Kim *****************************************************************************/ 6a9f12690SJung-uk Kim 7d244b227SJung-uk Kim /* 8f8146b88SJung-uk Kim * Copyright (C) 2000 - 2016, Intel Corp. 9a9f12690SJung-uk Kim * All rights reserved. 10a9f12690SJung-uk Kim * 11d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 13d244b227SJung-uk Kim * are met: 14d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16d244b227SJung-uk Kim * without modification. 17d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21d244b227SJung-uk Kim * binary redistribution. 22d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24d244b227SJung-uk Kim * from this software without specific prior written permission. 25a9f12690SJung-uk Kim * 26d244b227SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28d244b227SJung-uk Kim * Software Foundation. 29a9f12690SJung-uk Kim * 30d244b227SJung-uk Kim * NO WARRANTY 31d244b227SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32d244b227SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33d244b227SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34d244b227SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35d244b227SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36d244b227SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37d244b227SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38d244b227SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39d244b227SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40d244b227SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41d244b227SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42d244b227SJung-uk Kim */ 43a9f12690SJung-uk Kim 44a9f12690SJung-uk Kim #ifndef _ACUTILS_H 45a9f12690SJung-uk Kim #define _ACUTILS_H 46a9f12690SJung-uk Kim 47a9f12690SJung-uk Kim 48a9f12690SJung-uk Kim extern const UINT8 AcpiGbl_ResourceAmlSizes[]; 493f0275a0SJung-uk Kim extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[]; 50a9f12690SJung-uk Kim 51a9f12690SJung-uk Kim /* Strings used by the disassembler and debugger resource dump routines */ 52a9f12690SJung-uk Kim 53313a0c13SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) 54a9f12690SJung-uk Kim 55a9f12690SJung-uk Kim extern const char *AcpiGbl_BmDecode[]; 56a9f12690SJung-uk Kim extern const char *AcpiGbl_ConfigDecode[]; 57a9f12690SJung-uk Kim extern const char *AcpiGbl_ConsumeDecode[]; 58a9f12690SJung-uk Kim extern const char *AcpiGbl_DecDecode[]; 59a9f12690SJung-uk Kim extern const char *AcpiGbl_HeDecode[]; 60a9f12690SJung-uk Kim extern const char *AcpiGbl_IoDecode[]; 61a9f12690SJung-uk Kim extern const char *AcpiGbl_LlDecode[]; 62a9f12690SJung-uk Kim extern const char *AcpiGbl_MaxDecode[]; 63a9f12690SJung-uk Kim extern const char *AcpiGbl_MemDecode[]; 64a9f12690SJung-uk Kim extern const char *AcpiGbl_MinDecode[]; 65a9f12690SJung-uk Kim extern const char *AcpiGbl_MtpDecode[]; 66a9f12690SJung-uk Kim extern const char *AcpiGbl_RngDecode[]; 67a9f12690SJung-uk Kim extern const char *AcpiGbl_RwDecode[]; 68a9f12690SJung-uk Kim extern const char *AcpiGbl_ShrDecode[]; 69a9f12690SJung-uk Kim extern const char *AcpiGbl_SizDecode[]; 70a9f12690SJung-uk Kim extern const char *AcpiGbl_TrsDecode[]; 71a9f12690SJung-uk Kim extern const char *AcpiGbl_TtpDecode[]; 72a9f12690SJung-uk Kim extern const char *AcpiGbl_TypDecode[]; 733f0275a0SJung-uk Kim extern const char *AcpiGbl_PpcDecode[]; 743f0275a0SJung-uk Kim extern const char *AcpiGbl_IorDecode[]; 753f0275a0SJung-uk Kim extern const char *AcpiGbl_DtsDecode[]; 763f0275a0SJung-uk Kim extern const char *AcpiGbl_CtDecode[]; 773f0275a0SJung-uk Kim extern const char *AcpiGbl_SbtDecode[]; 783f0275a0SJung-uk Kim extern const char *AcpiGbl_AmDecode[]; 793f0275a0SJung-uk Kim extern const char *AcpiGbl_SmDecode[]; 803f0275a0SJung-uk Kim extern const char *AcpiGbl_WmDecode[]; 813f0275a0SJung-uk Kim extern const char *AcpiGbl_CphDecode[]; 823f0275a0SJung-uk Kim extern const char *AcpiGbl_CpoDecode[]; 833f0275a0SJung-uk Kim extern const char *AcpiGbl_DpDecode[]; 843f0275a0SJung-uk Kim extern const char *AcpiGbl_EdDecode[]; 853f0275a0SJung-uk Kim extern const char *AcpiGbl_BpbDecode[]; 863f0275a0SJung-uk Kim extern const char *AcpiGbl_SbDecode[]; 873f0275a0SJung-uk Kim extern const char *AcpiGbl_FcDecode[]; 883f0275a0SJung-uk Kim extern const char *AcpiGbl_PtDecode[]; 89a9f12690SJung-uk Kim #endif 90a9f12690SJung-uk Kim 91a9d8d09cSJung-uk Kim /* 92a9d8d09cSJung-uk Kim * For the iASL compiler case, the output is redirected to stderr so that 93a9d8d09cSJung-uk Kim * any of the various ACPI errors and warnings do not appear in the output 94a9d8d09cSJung-uk Kim * files, for either the compiler or disassembler portions of the tool. 95a9d8d09cSJung-uk Kim */ 96a9d8d09cSJung-uk Kim #ifdef ACPI_ASL_COMPILER 97a9d8d09cSJung-uk Kim 98a9d8d09cSJung-uk Kim #include <stdio.h> 99a9d8d09cSJung-uk Kim 100a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN \ 101a9d8d09cSJung-uk Kim FILE *OutputFile = AcpiGbl_OutputFile; \ 102a9d8d09cSJung-uk Kim AcpiOsRedirectOutput (stderr); 103a9d8d09cSJung-uk Kim 104a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END \ 105a9d8d09cSJung-uk Kim AcpiOsRedirectOutput (OutputFile); 106a9d8d09cSJung-uk Kim 107a9d8d09cSJung-uk Kim #else 108a9d8d09cSJung-uk Kim /* 109a9d8d09cSJung-uk Kim * non-iASL case - no redirection, nothing to do 110a9d8d09cSJung-uk Kim */ 111a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN 112a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END 113a9d8d09cSJung-uk Kim #endif 114a9d8d09cSJung-uk Kim 115a9d8d09cSJung-uk Kim /* 116a9d8d09cSJung-uk Kim * Common error message prefixes 117a9d8d09cSJung-uk Kim */ 118*3920312eSJung-uk Kim #ifndef ACPI_MSG_ERROR 119a9d8d09cSJung-uk Kim #define ACPI_MSG_ERROR "ACPI Error: " 120*3920312eSJung-uk Kim #endif 121*3920312eSJung-uk Kim #ifndef ACPI_MSG_EXCEPTION 122a9d8d09cSJung-uk Kim #define ACPI_MSG_EXCEPTION "ACPI Exception: " 123*3920312eSJung-uk Kim #endif 124*3920312eSJung-uk Kim #ifndef ACPI_MSG_WARNING 125a9d8d09cSJung-uk Kim #define ACPI_MSG_WARNING "ACPI Warning: " 126*3920312eSJung-uk Kim #endif 127*3920312eSJung-uk Kim #ifndef ACPI_MSG_INFO 128a9d8d09cSJung-uk Kim #define ACPI_MSG_INFO "ACPI: " 129*3920312eSJung-uk Kim #endif 130a9d8d09cSJung-uk Kim 131*3920312eSJung-uk Kim #ifndef ACPI_MSG_BIOS_ERROR 132a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): " 133*3920312eSJung-uk Kim #endif 134*3920312eSJung-uk Kim #ifndef ACPI_MSG_BIOS_WARNING 135a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): " 136*3920312eSJung-uk Kim #endif 137a9d8d09cSJung-uk Kim 138a9d8d09cSJung-uk Kim /* 139a9d8d09cSJung-uk Kim * Common message suffix 140a9d8d09cSJung-uk Kim */ 141a9d8d09cSJung-uk Kim #define ACPI_MSG_SUFFIX \ 142a9d8d09cSJung-uk Kim AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber) 143a9d8d09cSJung-uk Kim 144a9d8d09cSJung-uk Kim 145a9f12690SJung-uk Kim /* Types for Resource descriptor entries */ 146a9f12690SJung-uk Kim 147a9f12690SJung-uk Kim #define ACPI_INVALID_RESOURCE 0 148a9f12690SJung-uk Kim #define ACPI_FIXED_LENGTH 1 149a9f12690SJung-uk Kim #define ACPI_VARIABLE_LENGTH 2 150a9f12690SJung-uk Kim #define ACPI_SMALL_VARIABLE_LENGTH 3 151a9f12690SJung-uk Kim 152a9f12690SJung-uk Kim typedef 153a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( 154a9f12690SJung-uk Kim UINT8 *Aml, 155a9f12690SJung-uk Kim UINT32 Length, 156a9f12690SJung-uk Kim UINT32 Offset, 157a9f12690SJung-uk Kim UINT8 ResourceIndex, 158efcc2a30SJung-uk Kim void **Context); 159a9f12690SJung-uk Kim 160a9f12690SJung-uk Kim typedef 161a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_PKG_CALLBACK) ( 162a9f12690SJung-uk Kim UINT8 ObjectType, 163a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *SourceObject, 164a9f12690SJung-uk Kim ACPI_GENERIC_STATE *State, 165a9f12690SJung-uk Kim void *Context); 166a9f12690SJung-uk Kim 167a9f12690SJung-uk Kim typedef struct acpi_pkg_info 168a9f12690SJung-uk Kim { 169a9f12690SJung-uk Kim UINT8 *FreeSpace; 170a9f12690SJung-uk Kim ACPI_SIZE Length; 171a9f12690SJung-uk Kim UINT32 ObjectSpace; 172a9f12690SJung-uk Kim UINT32 NumPackages; 173a9f12690SJung-uk Kim 174a9f12690SJung-uk Kim } ACPI_PKG_INFO; 175a9f12690SJung-uk Kim 1769c7c683cSJung-uk Kim /* Object reference counts */ 1779c7c683cSJung-uk Kim 178a9f12690SJung-uk Kim #define REF_INCREMENT (UINT16) 0 179a9f12690SJung-uk Kim #define REF_DECREMENT (UINT16) 1 180a9f12690SJung-uk Kim 181a9f12690SJung-uk Kim /* AcpiUtDumpBuffer */ 182a9f12690SJung-uk Kim 183a9f12690SJung-uk Kim #define DB_BYTE_DISPLAY 1 184a9f12690SJung-uk Kim #define DB_WORD_DISPLAY 2 185a9f12690SJung-uk Kim #define DB_DWORD_DISPLAY 4 186a9f12690SJung-uk Kim #define DB_QWORD_DISPLAY 8 187a9f12690SJung-uk Kim 188fe0f0bbbSJung-uk Kim 189fe0f0bbbSJung-uk Kim /* 190f8146b88SJung-uk Kim * utascii - ASCII utilities 191f8146b88SJung-uk Kim */ 192f8146b88SJung-uk Kim BOOLEAN 193f8146b88SJung-uk Kim AcpiUtValidNameseg ( 194f8146b88SJung-uk Kim char *Signature); 195f8146b88SJung-uk Kim 196f8146b88SJung-uk Kim BOOLEAN 197f8146b88SJung-uk Kim AcpiUtValidNameChar ( 198f8146b88SJung-uk Kim char Character, 199f8146b88SJung-uk Kim UINT32 Position); 200f8146b88SJung-uk Kim 201f8146b88SJung-uk Kim void 202f8146b88SJung-uk Kim AcpiUtCheckAndRepairAscii ( 203f8146b88SJung-uk Kim UINT8 *Name, 204f8146b88SJung-uk Kim char *RepairedName, 205f8146b88SJung-uk Kim UINT32 Count); 206f8146b88SJung-uk Kim 207f8146b88SJung-uk Kim 208f8146b88SJung-uk Kim /* 209fe0f0bbbSJung-uk Kim * utnonansi - Non-ANSI C library functions 210fe0f0bbbSJung-uk Kim */ 211fe0f0bbbSJung-uk Kim void 212fe0f0bbbSJung-uk Kim AcpiUtStrupr ( 213fe0f0bbbSJung-uk Kim char *SrcString); 214fe0f0bbbSJung-uk Kim 215fe0f0bbbSJung-uk Kim void 216fe0f0bbbSJung-uk Kim AcpiUtStrlwr ( 217fe0f0bbbSJung-uk Kim char *SrcString); 218fe0f0bbbSJung-uk Kim 219fe0f0bbbSJung-uk Kim int 220fe0f0bbbSJung-uk Kim AcpiUtStricmp ( 221fe0f0bbbSJung-uk Kim char *String1, 222fe0f0bbbSJung-uk Kim char *String2); 223fe0f0bbbSJung-uk Kim 224fe0f0bbbSJung-uk Kim ACPI_STATUS 225fe0f0bbbSJung-uk Kim AcpiUtStrtoul64 ( 226fe0f0bbbSJung-uk Kim char *String, 227fe0f0bbbSJung-uk Kim UINT32 Base, 228f8146b88SJung-uk Kim UINT32 MaxIntegerByteWidth, 229fe0f0bbbSJung-uk Kim UINT64 *RetInteger); 230fe0f0bbbSJung-uk Kim 231f8146b88SJung-uk Kim /* Values for MaxIntegerByteWidth above */ 232f8146b88SJung-uk Kim 233f8146b88SJung-uk Kim #define ACPI_MAX32_BYTE_WIDTH 4 234f8146b88SJung-uk Kim #define ACPI_MAX64_BYTE_WIDTH 8 235f8146b88SJung-uk Kim 236fe0f0bbbSJung-uk Kim 237a9f12690SJung-uk Kim /* 238a9f12690SJung-uk Kim * utglobal - Global data structures and procedures 239a9f12690SJung-uk Kim */ 240a9f12690SJung-uk Kim ACPI_STATUS 241a9f12690SJung-uk Kim AcpiUtInitGlobals ( 242a9f12690SJung-uk Kim void); 243a9f12690SJung-uk Kim 244a9f12690SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 245a9f12690SJung-uk Kim 246f8146b88SJung-uk Kim const char * 247a9f12690SJung-uk Kim AcpiUtGetMutexName ( 248a9f12690SJung-uk Kim UINT32 MutexId); 249a9f12690SJung-uk Kim 250a9f12690SJung-uk Kim const char * 251a9f12690SJung-uk Kim AcpiUtGetNotifyName ( 252313a0c13SJung-uk Kim UINT32 NotifyValue, 253313a0c13SJung-uk Kim ACPI_OBJECT_TYPE Type); 254a9f12690SJung-uk Kim #endif 255a9f12690SJung-uk Kim 256f8146b88SJung-uk Kim const char * 257a9f12690SJung-uk Kim AcpiUtGetTypeName ( 258a9f12690SJung-uk Kim ACPI_OBJECT_TYPE Type); 259a9f12690SJung-uk Kim 260f8146b88SJung-uk Kim const char * 261a9f12690SJung-uk Kim AcpiUtGetNodeName ( 262a9f12690SJung-uk Kim void *Object); 263a9f12690SJung-uk Kim 264f8146b88SJung-uk Kim const char * 265a9f12690SJung-uk Kim AcpiUtGetDescriptorName ( 266a9f12690SJung-uk Kim void *Object); 267a9f12690SJung-uk Kim 268a9f12690SJung-uk Kim const char * 269a9f12690SJung-uk Kim AcpiUtGetReferenceName ( 270a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object); 271a9f12690SJung-uk Kim 272f8146b88SJung-uk Kim const char * 273a9f12690SJung-uk Kim AcpiUtGetObjectTypeName ( 274a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *ObjDesc); 275a9f12690SJung-uk Kim 276f8146b88SJung-uk Kim const char * 277a9f12690SJung-uk Kim AcpiUtGetRegionName ( 278a9f12690SJung-uk Kim UINT8 SpaceId); 279a9f12690SJung-uk Kim 280f8146b88SJung-uk Kim const char * 281a9f12690SJung-uk Kim AcpiUtGetEventName ( 282a9f12690SJung-uk Kim UINT32 EventId); 283a9f12690SJung-uk Kim 284a9f12690SJung-uk Kim char 285a9f12690SJung-uk Kim AcpiUtHexToAsciiChar ( 2869a179dd8SJung-uk Kim UINT64 Integer, 287a9f12690SJung-uk Kim UINT32 Position); 288a9f12690SJung-uk Kim 289313a0c13SJung-uk Kim UINT8 290313a0c13SJung-uk Kim AcpiUtAsciiCharToHex ( 291313a0c13SJung-uk Kim int HexChar); 292313a0c13SJung-uk Kim 293a9f12690SJung-uk Kim BOOLEAN 294a9f12690SJung-uk Kim AcpiUtValidObjectType ( 295a9f12690SJung-uk Kim ACPI_OBJECT_TYPE Type); 296a9f12690SJung-uk Kim 297a9f12690SJung-uk Kim 298a9f12690SJung-uk Kim /* 299a9f12690SJung-uk Kim * utinit - miscellaneous initialization and shutdown 300a9f12690SJung-uk Kim */ 301a9f12690SJung-uk Kim ACPI_STATUS 302a9f12690SJung-uk Kim AcpiUtHardwareInitialize ( 303a9f12690SJung-uk Kim void); 304a9f12690SJung-uk Kim 305a9f12690SJung-uk Kim void 306a9f12690SJung-uk Kim AcpiUtSubsystemShutdown ( 307a9f12690SJung-uk Kim void); 308a9f12690SJung-uk Kim 309a9f12690SJung-uk Kim 310a9f12690SJung-uk Kim /* 311a9f12690SJung-uk Kim * utcopy - Object construction and conversion interfaces 312a9f12690SJung-uk Kim */ 313a9f12690SJung-uk Kim ACPI_STATUS 314a9f12690SJung-uk Kim AcpiUtBuildSimpleObject( 315a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Obj, 316a9f12690SJung-uk Kim ACPI_OBJECT *UserObj, 317a9f12690SJung-uk Kim UINT8 *DataSpace, 318a9f12690SJung-uk Kim UINT32 *BufferSpaceUsed); 319a9f12690SJung-uk Kim 320a9f12690SJung-uk Kim ACPI_STATUS 321a9f12690SJung-uk Kim AcpiUtBuildPackageObject ( 322a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Obj, 323a9f12690SJung-uk Kim UINT8 *Buffer, 324a9f12690SJung-uk Kim UINT32 *SpaceUsed); 325a9f12690SJung-uk Kim 326a9f12690SJung-uk Kim ACPI_STATUS 327a9f12690SJung-uk Kim AcpiUtCopyIobjectToEobject ( 328a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Obj, 329a9f12690SJung-uk Kim ACPI_BUFFER *RetBuffer); 330a9f12690SJung-uk Kim 331a9f12690SJung-uk Kim ACPI_STATUS 332a9f12690SJung-uk Kim AcpiUtCopyEobjectToIobject ( 333a9f12690SJung-uk Kim ACPI_OBJECT *Obj, 334a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT **InternalObj); 335a9f12690SJung-uk Kim 336a9f12690SJung-uk Kim ACPI_STATUS 337a9f12690SJung-uk Kim AcpiUtCopyISimpleToIsimple ( 338a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *SourceObj, 339a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *DestObj); 340a9f12690SJung-uk Kim 341a9f12690SJung-uk Kim ACPI_STATUS 342a9f12690SJung-uk Kim AcpiUtCopyIobjectToIobject ( 343a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *SourceDesc, 344a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT **DestDesc, 345a9f12690SJung-uk Kim ACPI_WALK_STATE *WalkState); 346a9f12690SJung-uk Kim 347a9f12690SJung-uk Kim 348a9f12690SJung-uk Kim /* 349a9f12690SJung-uk Kim * utcreate - Object creation 350a9f12690SJung-uk Kim */ 351a9f12690SJung-uk Kim ACPI_STATUS 352a9f12690SJung-uk Kim AcpiUtUpdateObjectReference ( 353a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object, 354a9f12690SJung-uk Kim UINT16 Action); 355a9f12690SJung-uk Kim 356a9f12690SJung-uk Kim 357a9f12690SJung-uk Kim /* 358a9f12690SJung-uk Kim * utdebug - Debug interfaces 359a9f12690SJung-uk Kim */ 360a9f12690SJung-uk Kim void 361a9f12690SJung-uk Kim AcpiUtInitStackPtrTrace ( 362a9f12690SJung-uk Kim void); 363a9f12690SJung-uk Kim 364a9f12690SJung-uk Kim void 365a9f12690SJung-uk Kim AcpiUtTrackStackPtr ( 366a9f12690SJung-uk Kim void); 367a9f12690SJung-uk Kim 368a9f12690SJung-uk Kim void 369a9f12690SJung-uk Kim AcpiUtTrace ( 370a9f12690SJung-uk Kim UINT32 LineNumber, 371a9f12690SJung-uk Kim const char *FunctionName, 372a9f12690SJung-uk Kim const char *ModuleName, 373a9f12690SJung-uk Kim UINT32 ComponentId); 374a9f12690SJung-uk Kim 375a9f12690SJung-uk Kim void 376a9f12690SJung-uk Kim AcpiUtTracePtr ( 377a9f12690SJung-uk Kim UINT32 LineNumber, 378a9f12690SJung-uk Kim const char *FunctionName, 379a9f12690SJung-uk Kim const char *ModuleName, 380a9f12690SJung-uk Kim UINT32 ComponentId, 381f8146b88SJung-uk Kim const void *Pointer); 382a9f12690SJung-uk Kim 383a9f12690SJung-uk Kim void 384a9f12690SJung-uk Kim AcpiUtTraceU32 ( 385a9f12690SJung-uk Kim UINT32 LineNumber, 386a9f12690SJung-uk Kim const char *FunctionName, 387a9f12690SJung-uk Kim const char *ModuleName, 388a9f12690SJung-uk Kim UINT32 ComponentId, 389a9f12690SJung-uk Kim UINT32 Integer); 390a9f12690SJung-uk Kim 391a9f12690SJung-uk Kim void 392a9f12690SJung-uk Kim AcpiUtTraceStr ( 393a9f12690SJung-uk Kim UINT32 LineNumber, 394a9f12690SJung-uk Kim const char *FunctionName, 395a9f12690SJung-uk Kim const char *ModuleName, 396a9f12690SJung-uk Kim UINT32 ComponentId, 397f8146b88SJung-uk Kim const char *String); 398a9f12690SJung-uk Kim 399a9f12690SJung-uk Kim void 400a9f12690SJung-uk Kim AcpiUtExit ( 401a9f12690SJung-uk Kim UINT32 LineNumber, 402a9f12690SJung-uk Kim const char *FunctionName, 403a9f12690SJung-uk Kim const char *ModuleName, 404a9f12690SJung-uk Kim UINT32 ComponentId); 405a9f12690SJung-uk Kim 406a9f12690SJung-uk Kim void 407a9f12690SJung-uk Kim AcpiUtStatusExit ( 408a9f12690SJung-uk Kim UINT32 LineNumber, 409a9f12690SJung-uk Kim const char *FunctionName, 410a9f12690SJung-uk Kim const char *ModuleName, 411a9f12690SJung-uk Kim UINT32 ComponentId, 412a9f12690SJung-uk Kim ACPI_STATUS Status); 413a9f12690SJung-uk Kim 414a9f12690SJung-uk Kim void 415a9f12690SJung-uk Kim AcpiUtValueExit ( 416a9f12690SJung-uk Kim UINT32 LineNumber, 417a9f12690SJung-uk Kim const char *FunctionName, 418a9f12690SJung-uk Kim const char *ModuleName, 419a9f12690SJung-uk Kim UINT32 ComponentId, 4209a179dd8SJung-uk Kim UINT64 Value); 421a9f12690SJung-uk Kim 422a9f12690SJung-uk Kim void 423a9f12690SJung-uk Kim AcpiUtPtrExit ( 424a9f12690SJung-uk Kim UINT32 LineNumber, 425a9f12690SJung-uk Kim const char *FunctionName, 426a9f12690SJung-uk Kim const char *ModuleName, 427a9f12690SJung-uk Kim UINT32 ComponentId, 428a9f12690SJung-uk Kim UINT8 *Ptr); 429a9f12690SJung-uk Kim 430a9f12690SJung-uk Kim void 431f8146b88SJung-uk Kim AcpiUtStrExit ( 432f8146b88SJung-uk Kim UINT32 LineNumber, 433f8146b88SJung-uk Kim const char *FunctionName, 434f8146b88SJung-uk Kim const char *ModuleName, 435f8146b88SJung-uk Kim UINT32 ComponentId, 436f8146b88SJung-uk Kim const char *String); 437f8146b88SJung-uk Kim 438f8146b88SJung-uk Kim void 4398ef1a331SJung-uk Kim AcpiUtDebugDumpBuffer ( 440a9f12690SJung-uk Kim UINT8 *Buffer, 441a9f12690SJung-uk Kim UINT32 Count, 442a9f12690SJung-uk Kim UINT32 Display, 443f38b0f21SJung-uk Kim UINT32 ComponentId); 444a9f12690SJung-uk Kim 445a9f12690SJung-uk Kim void 4468ef1a331SJung-uk Kim AcpiUtDumpBuffer ( 447a9f12690SJung-uk Kim UINT8 *Buffer, 448a9f12690SJung-uk Kim UINT32 Count, 4498ef1a331SJung-uk Kim UINT32 Display, 4508ef1a331SJung-uk Kim UINT32 Offset); 451a9f12690SJung-uk Kim 452313a0c13SJung-uk Kim #ifdef ACPI_APPLICATION 453313a0c13SJung-uk Kim void 454313a0c13SJung-uk Kim AcpiUtDumpBufferToFile ( 455313a0c13SJung-uk Kim ACPI_FILE File, 456313a0c13SJung-uk Kim UINT8 *Buffer, 457313a0c13SJung-uk Kim UINT32 Count, 458313a0c13SJung-uk Kim UINT32 Display, 459313a0c13SJung-uk Kim UINT32 BaseOffset); 460313a0c13SJung-uk Kim #endif 461313a0c13SJung-uk Kim 462a9f12690SJung-uk Kim void 463a9f12690SJung-uk Kim AcpiUtReportError ( 464a9f12690SJung-uk Kim char *ModuleName, 465a9f12690SJung-uk Kim UINT32 LineNumber); 466a9f12690SJung-uk Kim 467a9f12690SJung-uk Kim void 468a9f12690SJung-uk Kim AcpiUtReportInfo ( 469a9f12690SJung-uk Kim char *ModuleName, 470a9f12690SJung-uk Kim UINT32 LineNumber); 471a9f12690SJung-uk Kim 472a9f12690SJung-uk Kim void 473a9f12690SJung-uk Kim AcpiUtReportWarning ( 474a9f12690SJung-uk Kim char *ModuleName, 475a9f12690SJung-uk Kim UINT32 LineNumber); 476a9f12690SJung-uk Kim 477fe0f0bbbSJung-uk Kim 478a9f12690SJung-uk Kim /* 479a9f12690SJung-uk Kim * utdelete - Object deletion and reference counts 480a9f12690SJung-uk Kim */ 481a9f12690SJung-uk Kim void 482a9f12690SJung-uk Kim AcpiUtAddReference ( 483a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object); 484a9f12690SJung-uk Kim 485a9f12690SJung-uk Kim void 486a9f12690SJung-uk Kim AcpiUtRemoveReference ( 487a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object); 488a9f12690SJung-uk Kim 489a9f12690SJung-uk Kim void 490a9f12690SJung-uk Kim AcpiUtDeleteInternalPackageObject ( 491a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object); 492a9f12690SJung-uk Kim 493a9f12690SJung-uk Kim void 494a9f12690SJung-uk Kim AcpiUtDeleteInternalSimpleObject ( 495a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object); 496a9f12690SJung-uk Kim 497a9f12690SJung-uk Kim void 498a9f12690SJung-uk Kim AcpiUtDeleteInternalObjectList ( 499a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT **ObjList); 500a9f12690SJung-uk Kim 501a9f12690SJung-uk Kim 502a9f12690SJung-uk Kim /* 503a9f12690SJung-uk Kim * uteval - object evaluation 504a9f12690SJung-uk Kim */ 505a9f12690SJung-uk Kim ACPI_STATUS 506a9f12690SJung-uk Kim AcpiUtEvaluateObject ( 507a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *PrefixNode, 508f8146b88SJung-uk Kim const char *Path, 509a9f12690SJung-uk Kim UINT32 ExpectedReturnBtypes, 510a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT **ReturnDesc); 511a9f12690SJung-uk Kim 512a9f12690SJung-uk Kim ACPI_STATUS 513a9f12690SJung-uk Kim AcpiUtEvaluateNumericObject ( 514f8146b88SJung-uk Kim const char *ObjectName, 515a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode, 5169a179dd8SJung-uk Kim UINT64 *Value); 517a9f12690SJung-uk Kim 518a9f12690SJung-uk Kim ACPI_STATUS 519a9f12690SJung-uk Kim AcpiUtExecute_STA ( 520a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode, 521a9f12690SJung-uk Kim UINT32 *StatusFlags); 522a9f12690SJung-uk Kim 523a9f12690SJung-uk Kim ACPI_STATUS 524d6dd1baeSJung-uk Kim AcpiUtExecutePowerMethods ( 525a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode, 526d6dd1baeSJung-uk Kim const char **MethodNames, 527d6dd1baeSJung-uk Kim UINT8 MethodCount, 528d6dd1baeSJung-uk Kim UINT8 *OutValues); 529d6dd1baeSJung-uk Kim 530d6dd1baeSJung-uk Kim 531d6dd1baeSJung-uk Kim /* 532d6dd1baeSJung-uk Kim * utids - device ID support 533d6dd1baeSJung-uk Kim */ 534d6dd1baeSJung-uk Kim ACPI_STATUS 535d6dd1baeSJung-uk Kim AcpiUtExecute_HID ( 536d6dd1baeSJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode, 5378ef1a331SJung-uk Kim ACPI_PNP_DEVICE_ID **ReturnId); 538a9f12690SJung-uk Kim 539a9f12690SJung-uk Kim ACPI_STATUS 540d6dd1baeSJung-uk Kim AcpiUtExecute_UID ( 541a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode, 5428ef1a331SJung-uk Kim ACPI_PNP_DEVICE_ID **ReturnId); 5438ef1a331SJung-uk Kim 5448ef1a331SJung-uk Kim ACPI_STATUS 545d6dd1baeSJung-uk Kim AcpiUtExecute_CID ( 546d6dd1baeSJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode, 5478ef1a331SJung-uk Kim ACPI_PNP_DEVICE_ID_LIST **ReturnCidList); 548d6dd1baeSJung-uk Kim 5495ef50723SJung-uk Kim ACPI_STATUS 5505ef50723SJung-uk Kim AcpiUtExecute_CLS ( 5515ef50723SJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode, 5525ef50723SJung-uk Kim ACPI_PNP_DEVICE_ID **ReturnId); 5535ef50723SJung-uk Kim 554a9f12690SJung-uk Kim 555a9f12690SJung-uk Kim /* 556a9f12690SJung-uk Kim * utlock - reader/writer locks 557a9f12690SJung-uk Kim */ 558a9f12690SJung-uk Kim ACPI_STATUS 559a9f12690SJung-uk Kim AcpiUtCreateRwLock ( 560a9f12690SJung-uk Kim ACPI_RW_LOCK *Lock); 561a9f12690SJung-uk Kim 562a9f12690SJung-uk Kim void 563a9f12690SJung-uk Kim AcpiUtDeleteRwLock ( 564a9f12690SJung-uk Kim ACPI_RW_LOCK *Lock); 565a9f12690SJung-uk Kim 566a9f12690SJung-uk Kim ACPI_STATUS 567a9f12690SJung-uk Kim AcpiUtAcquireReadLock ( 568a9f12690SJung-uk Kim ACPI_RW_LOCK *Lock); 569a9f12690SJung-uk Kim 570a9f12690SJung-uk Kim ACPI_STATUS 571a9f12690SJung-uk Kim AcpiUtReleaseReadLock ( 572a9f12690SJung-uk Kim ACPI_RW_LOCK *Lock); 573a9f12690SJung-uk Kim 574a9f12690SJung-uk Kim ACPI_STATUS 575a9f12690SJung-uk Kim AcpiUtAcquireWriteLock ( 576a9f12690SJung-uk Kim ACPI_RW_LOCK *Lock); 577a9f12690SJung-uk Kim 578a9f12690SJung-uk Kim void 579a9f12690SJung-uk Kim AcpiUtReleaseWriteLock ( 580a9f12690SJung-uk Kim ACPI_RW_LOCK *Lock); 581a9f12690SJung-uk Kim 582a9f12690SJung-uk Kim 583a9f12690SJung-uk Kim /* 584a9f12690SJung-uk Kim * utobject - internal object create/delete/cache routines 585a9f12690SJung-uk Kim */ 586a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT * 587a9f12690SJung-uk Kim AcpiUtCreateInternalObjectDbg ( 588a9f12690SJung-uk Kim const char *ModuleName, 589a9f12690SJung-uk Kim UINT32 LineNumber, 590a9f12690SJung-uk Kim UINT32 ComponentId, 591a9f12690SJung-uk Kim ACPI_OBJECT_TYPE Type); 592a9f12690SJung-uk Kim 593a9f12690SJung-uk Kim void * 594a9f12690SJung-uk Kim AcpiUtAllocateObjectDescDbg ( 595a9f12690SJung-uk Kim const char *ModuleName, 596a9f12690SJung-uk Kim UINT32 LineNumber, 597a9f12690SJung-uk Kim UINT32 ComponentId); 598a9f12690SJung-uk Kim 599a9f12690SJung-uk Kim #define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) 600a9f12690SJung-uk Kim #define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) 601a9f12690SJung-uk Kim 602a9f12690SJung-uk Kim void 603a9f12690SJung-uk Kim AcpiUtDeleteObjectDesc ( 604a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object); 605a9f12690SJung-uk Kim 606a9f12690SJung-uk Kim BOOLEAN 607a9f12690SJung-uk Kim AcpiUtValidInternalObject ( 608a9f12690SJung-uk Kim void *Object); 609a9f12690SJung-uk Kim 610a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT * 611a9f12690SJung-uk Kim AcpiUtCreatePackageObject ( 612a9f12690SJung-uk Kim UINT32 Count); 613a9f12690SJung-uk Kim 614a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT * 6152272d050SJung-uk Kim AcpiUtCreateIntegerObject ( 6162272d050SJung-uk Kim UINT64 Value); 6172272d050SJung-uk Kim 6182272d050SJung-uk Kim ACPI_OPERAND_OBJECT * 619a9f12690SJung-uk Kim AcpiUtCreateBufferObject ( 620a9f12690SJung-uk Kim ACPI_SIZE BufferSize); 621a9f12690SJung-uk Kim 622a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT * 623a9f12690SJung-uk Kim AcpiUtCreateStringObject ( 624a9f12690SJung-uk Kim ACPI_SIZE StringSize); 625a9f12690SJung-uk Kim 626a9f12690SJung-uk Kim ACPI_STATUS 627a9f12690SJung-uk Kim AcpiUtGetObjectSize( 628a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Obj, 629a9f12690SJung-uk Kim ACPI_SIZE *ObjLength); 630a9f12690SJung-uk Kim 631a9f12690SJung-uk Kim 632a9f12690SJung-uk Kim /* 633709fac06SJung-uk Kim * utosi - Support for the _OSI predefined control method 634709fac06SJung-uk Kim */ 635709fac06SJung-uk Kim ACPI_STATUS 636709fac06SJung-uk Kim AcpiUtInitializeInterfaces ( 637709fac06SJung-uk Kim void); 638709fac06SJung-uk Kim 6399c7c683cSJung-uk Kim ACPI_STATUS 640709fac06SJung-uk Kim AcpiUtInterfaceTerminate ( 641709fac06SJung-uk Kim void); 642709fac06SJung-uk Kim 643709fac06SJung-uk Kim ACPI_STATUS 644709fac06SJung-uk Kim AcpiUtInstallInterface ( 645709fac06SJung-uk Kim ACPI_STRING InterfaceName); 646709fac06SJung-uk Kim 647709fac06SJung-uk Kim ACPI_STATUS 648709fac06SJung-uk Kim AcpiUtRemoveInterface ( 649709fac06SJung-uk Kim ACPI_STRING InterfaceName); 650709fac06SJung-uk Kim 651bf6fac21SJung-uk Kim ACPI_STATUS 652bf6fac21SJung-uk Kim AcpiUtUpdateInterfaces ( 653bf6fac21SJung-uk Kim UINT8 Action); 654bf6fac21SJung-uk Kim 655709fac06SJung-uk Kim ACPI_INTERFACE_INFO * 656709fac06SJung-uk Kim AcpiUtGetInterface ( 657709fac06SJung-uk Kim ACPI_STRING InterfaceName); 658709fac06SJung-uk Kim 659709fac06SJung-uk Kim ACPI_STATUS 660709fac06SJung-uk Kim AcpiUtOsiImplementation ( 661709fac06SJung-uk Kim ACPI_WALK_STATE *WalkState); 662709fac06SJung-uk Kim 663709fac06SJung-uk Kim 664709fac06SJung-uk Kim /* 6659c7c683cSJung-uk Kim * utpredef - support for predefined names 6669c7c683cSJung-uk Kim */ 6679c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO * 6689c7c683cSJung-uk Kim AcpiUtGetNextPredefinedMethod ( 6699c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *ThisName); 6709c7c683cSJung-uk Kim 6719c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO * 6729c7c683cSJung-uk Kim AcpiUtMatchPredefinedMethod ( 6739c7c683cSJung-uk Kim char *Name); 6749c7c683cSJung-uk Kim 6757cf3e94aSJung-uk Kim void 6767cf3e94aSJung-uk Kim AcpiUtGetExpectedReturnTypes ( 6777cf3e94aSJung-uk Kim char *Buffer, 6787cf3e94aSJung-uk Kim UINT32 ExpectedBtypes); 6797cf3e94aSJung-uk Kim 6807cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) 6819c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO * 6829c7c683cSJung-uk Kim AcpiUtMatchResourceName ( 6839c7c683cSJung-uk Kim char *Name); 6849c7c683cSJung-uk Kim 6859c7c683cSJung-uk Kim void 6869c7c683cSJung-uk Kim AcpiUtDisplayPredefinedMethod ( 6879c7c683cSJung-uk Kim char *Buffer, 6889c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *ThisName, 6899c7c683cSJung-uk Kim BOOLEAN MultiLine); 6909c7c683cSJung-uk Kim 6919c7c683cSJung-uk Kim UINT32 6929c7c683cSJung-uk Kim AcpiUtGetResourceBitWidth ( 6939c7c683cSJung-uk Kim char *Buffer, 6949c7c683cSJung-uk Kim UINT16 Types); 6957cf3e94aSJung-uk Kim #endif 6969c7c683cSJung-uk Kim 6979c7c683cSJung-uk Kim 6989c7c683cSJung-uk Kim /* 699a9f12690SJung-uk Kim * utstate - Generic state creation/cache routines 700a9f12690SJung-uk Kim */ 701a9f12690SJung-uk Kim void 702a9f12690SJung-uk Kim AcpiUtPushGenericState ( 703a9f12690SJung-uk Kim ACPI_GENERIC_STATE **ListHead, 704a9f12690SJung-uk Kim ACPI_GENERIC_STATE *State); 705a9f12690SJung-uk Kim 706a9f12690SJung-uk Kim ACPI_GENERIC_STATE * 707a9f12690SJung-uk Kim AcpiUtPopGenericState ( 708a9f12690SJung-uk Kim ACPI_GENERIC_STATE **ListHead); 709a9f12690SJung-uk Kim 710a9f12690SJung-uk Kim 711a9f12690SJung-uk Kim ACPI_GENERIC_STATE * 712a9f12690SJung-uk Kim AcpiUtCreateGenericState ( 713a9f12690SJung-uk Kim void); 714a9f12690SJung-uk Kim 715a9f12690SJung-uk Kim ACPI_THREAD_STATE * 716a9f12690SJung-uk Kim AcpiUtCreateThreadState ( 717a9f12690SJung-uk Kim void); 718a9f12690SJung-uk Kim 719a9f12690SJung-uk Kim ACPI_GENERIC_STATE * 720a9f12690SJung-uk Kim AcpiUtCreateUpdateState ( 721a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object, 722a9f12690SJung-uk Kim UINT16 Action); 723a9f12690SJung-uk Kim 724a9f12690SJung-uk Kim ACPI_GENERIC_STATE * 725a9f12690SJung-uk Kim AcpiUtCreatePkgState ( 726a9f12690SJung-uk Kim void *InternalObject, 727a9f12690SJung-uk Kim void *ExternalObject, 728a9f12690SJung-uk Kim UINT16 Index); 729a9f12690SJung-uk Kim 730a9f12690SJung-uk Kim ACPI_STATUS 731a9f12690SJung-uk Kim AcpiUtCreateUpdateStateAndPush ( 732a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *Object, 733a9f12690SJung-uk Kim UINT16 Action, 734a9f12690SJung-uk Kim ACPI_GENERIC_STATE **StateList); 735a9f12690SJung-uk Kim 736a9f12690SJung-uk Kim ACPI_GENERIC_STATE * 737a9f12690SJung-uk Kim AcpiUtCreateControlState ( 738a9f12690SJung-uk Kim void); 739a9f12690SJung-uk Kim 740a9f12690SJung-uk Kim void 741a9f12690SJung-uk Kim AcpiUtDeleteGenericState ( 742a9f12690SJung-uk Kim ACPI_GENERIC_STATE *State); 743a9f12690SJung-uk Kim 744a9f12690SJung-uk Kim 745a9f12690SJung-uk Kim /* 746a9f12690SJung-uk Kim * utmath 747a9f12690SJung-uk Kim */ 748a9f12690SJung-uk Kim ACPI_STATUS 749a9f12690SJung-uk Kim AcpiUtDivide ( 7509a179dd8SJung-uk Kim UINT64 InDividend, 7519a179dd8SJung-uk Kim UINT64 InDivisor, 7529a179dd8SJung-uk Kim UINT64 *OutQuotient, 7539a179dd8SJung-uk Kim UINT64 *OutRemainder); 754a9f12690SJung-uk Kim 755a9f12690SJung-uk Kim ACPI_STATUS 756a9f12690SJung-uk Kim AcpiUtShortDivide ( 7579a179dd8SJung-uk Kim UINT64 InDividend, 758a9f12690SJung-uk Kim UINT32 Divisor, 7599a179dd8SJung-uk Kim UINT64 *OutQuotient, 760a9f12690SJung-uk Kim UINT32 *OutRemainder); 761a9f12690SJung-uk Kim 7629c48c75eSJung-uk Kim 763a9f12690SJung-uk Kim /* 764a9f12690SJung-uk Kim * utmisc 765a9f12690SJung-uk Kim */ 7669c48c75eSJung-uk Kim const ACPI_EXCEPTION_INFO * 767a9f12690SJung-uk Kim AcpiUtValidateException ( 768a9f12690SJung-uk Kim ACPI_STATUS Status); 769a9f12690SJung-uk Kim 770a9f12690SJung-uk Kim BOOLEAN 771d6dd1baeSJung-uk Kim AcpiUtIsPciRootBridge ( 772d6dd1baeSJung-uk Kim char *Id); 773d6dd1baeSJung-uk Kim 77470e6ab8fSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP) 775d6dd1baeSJung-uk Kim BOOLEAN 776a9f12690SJung-uk Kim AcpiUtIsAmlTable ( 777a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table); 7787cf3e94aSJung-uk Kim #endif 779a9f12690SJung-uk Kim 780a9f12690SJung-uk Kim ACPI_STATUS 781a9f12690SJung-uk Kim AcpiUtWalkPackageTree ( 782a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *SourceObject, 783a9f12690SJung-uk Kim void *TargetObject, 784a9f12690SJung-uk Kim ACPI_PKG_CALLBACK WalkCallback, 785a9f12690SJung-uk Kim void *Context); 786a9f12690SJung-uk Kim 787a9f12690SJung-uk Kim /* Values for Base above (16=Hex, 10=Decimal) */ 788a9f12690SJung-uk Kim 789a9f12690SJung-uk Kim #define ACPI_ANY_BASE 0 790a9f12690SJung-uk Kim 791fe0f0bbbSJung-uk Kim 792a9f12690SJung-uk Kim UINT32 793a9f12690SJung-uk Kim AcpiUtDwordByteSwap ( 794a9f12690SJung-uk Kim UINT32 Value); 795a9f12690SJung-uk Kim 796a9f12690SJung-uk Kim void 797a9f12690SJung-uk Kim AcpiUtSetIntegerWidth ( 798a9f12690SJung-uk Kim UINT8 Revision); 799a9f12690SJung-uk Kim 800a9f12690SJung-uk Kim #ifdef ACPI_DEBUG_OUTPUT 801a9f12690SJung-uk Kim void 802a9f12690SJung-uk Kim AcpiUtDisplayInitPathname ( 803a9f12690SJung-uk Kim UINT8 Type, 804a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *ObjHandle, 805f8146b88SJung-uk Kim const char *Path); 806a9f12690SJung-uk Kim #endif 807a9f12690SJung-uk Kim 808a9f12690SJung-uk Kim 809a9f12690SJung-uk Kim /* 810efcc2a30SJung-uk Kim * utownerid - Support for Table/Method Owner IDs 811efcc2a30SJung-uk Kim */ 812efcc2a30SJung-uk Kim ACPI_STATUS 813efcc2a30SJung-uk Kim AcpiUtAllocateOwnerId ( 814efcc2a30SJung-uk Kim ACPI_OWNER_ID *OwnerId); 815efcc2a30SJung-uk Kim 816efcc2a30SJung-uk Kim void 817efcc2a30SJung-uk Kim AcpiUtReleaseOwnerId ( 818efcc2a30SJung-uk Kim ACPI_OWNER_ID *OwnerId); 819efcc2a30SJung-uk Kim 820efcc2a30SJung-uk Kim 821efcc2a30SJung-uk Kim /* 822a9f12690SJung-uk Kim * utresrc 823a9f12690SJung-uk Kim */ 824a9f12690SJung-uk Kim ACPI_STATUS 825a9f12690SJung-uk Kim AcpiUtWalkAmlResources ( 826ed17e06eSJung-uk Kim ACPI_WALK_STATE *WalkState, 827a9f12690SJung-uk Kim UINT8 *Aml, 828a9f12690SJung-uk Kim ACPI_SIZE AmlLength, 829a9f12690SJung-uk Kim ACPI_WALK_AML_CALLBACK UserFunction, 830efcc2a30SJung-uk Kim void **Context); 831a9f12690SJung-uk Kim 832a9f12690SJung-uk Kim ACPI_STATUS 833a9f12690SJung-uk Kim AcpiUtValidateResource ( 834ed17e06eSJung-uk Kim ACPI_WALK_STATE *WalkState, 835a9f12690SJung-uk Kim void *Aml, 836a9f12690SJung-uk Kim UINT8 *ReturnIndex); 837a9f12690SJung-uk Kim 838a9f12690SJung-uk Kim UINT32 839a9f12690SJung-uk Kim AcpiUtGetDescriptorLength ( 840a9f12690SJung-uk Kim void *Aml); 841a9f12690SJung-uk Kim 842a9f12690SJung-uk Kim UINT16 843a9f12690SJung-uk Kim AcpiUtGetResourceLength ( 844a9f12690SJung-uk Kim void *Aml); 845a9f12690SJung-uk Kim 846a9f12690SJung-uk Kim UINT8 847a9f12690SJung-uk Kim AcpiUtGetResourceHeaderLength ( 848a9f12690SJung-uk Kim void *Aml); 849a9f12690SJung-uk Kim 850a9f12690SJung-uk Kim UINT8 851a9f12690SJung-uk Kim AcpiUtGetResourceType ( 852a9f12690SJung-uk Kim void *Aml); 853a9f12690SJung-uk Kim 854a9f12690SJung-uk Kim ACPI_STATUS 855a9f12690SJung-uk Kim AcpiUtGetResourceEndTag ( 856a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *ObjDesc, 857a9f12690SJung-uk Kim UINT8 **EndTag); 858a9f12690SJung-uk Kim 859a9f12690SJung-uk Kim 860a9f12690SJung-uk Kim /* 861efcc2a30SJung-uk Kim * utstring - String and character utilities 862efcc2a30SJung-uk Kim */ 863efcc2a30SJung-uk Kim void 864efcc2a30SJung-uk Kim AcpiUtPrintString ( 865efcc2a30SJung-uk Kim char *String, 8668d744e47SJung-uk Kim UINT16 MaxLength); 867efcc2a30SJung-uk Kim 8687cf3e94aSJung-uk Kim #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP 869efcc2a30SJung-uk Kim void 870efcc2a30SJung-uk Kim UtConvertBackslashes ( 871efcc2a30SJung-uk Kim char *Pathname); 8727cf3e94aSJung-uk Kim #endif 873efcc2a30SJung-uk Kim 874efcc2a30SJung-uk Kim void 875efcc2a30SJung-uk Kim AcpiUtRepairName ( 876efcc2a30SJung-uk Kim char *Name); 877efcc2a30SJung-uk Kim 878313a0c13SJung-uk Kim #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) 879313a0c13SJung-uk Kim BOOLEAN 880313a0c13SJung-uk Kim AcpiUtSafeStrcpy ( 881313a0c13SJung-uk Kim char *Dest, 882313a0c13SJung-uk Kim ACPI_SIZE DestSize, 883313a0c13SJung-uk Kim char *Source); 884313a0c13SJung-uk Kim 885313a0c13SJung-uk Kim BOOLEAN 886313a0c13SJung-uk Kim AcpiUtSafeStrcat ( 887313a0c13SJung-uk Kim char *Dest, 888313a0c13SJung-uk Kim ACPI_SIZE DestSize, 889313a0c13SJung-uk Kim char *Source); 890f8146b88SJung-uk Kim 891f8146b88SJung-uk Kim BOOLEAN 892f8146b88SJung-uk Kim AcpiUtSafeStrncat ( 893f8146b88SJung-uk Kim char *Dest, 894f8146b88SJung-uk Kim ACPI_SIZE DestSize, 895f8146b88SJung-uk Kim char *Source, 896f8146b88SJung-uk Kim ACPI_SIZE MaxTransferLength); 897313a0c13SJung-uk Kim #endif 898313a0c13SJung-uk Kim 899efcc2a30SJung-uk Kim 900efcc2a30SJung-uk Kim /* 901a9f12690SJung-uk Kim * utmutex - mutex support 902a9f12690SJung-uk Kim */ 903a9f12690SJung-uk Kim ACPI_STATUS 904a9f12690SJung-uk Kim AcpiUtMutexInitialize ( 905a9f12690SJung-uk Kim void); 906a9f12690SJung-uk Kim 907a9f12690SJung-uk Kim void 908a9f12690SJung-uk Kim AcpiUtMutexTerminate ( 909a9f12690SJung-uk Kim void); 910a9f12690SJung-uk Kim 911a9f12690SJung-uk Kim ACPI_STATUS 912a9f12690SJung-uk Kim AcpiUtAcquireMutex ( 913a9f12690SJung-uk Kim ACPI_MUTEX_HANDLE MutexId); 914a9f12690SJung-uk Kim 915a9f12690SJung-uk Kim ACPI_STATUS 916a9f12690SJung-uk Kim AcpiUtReleaseMutex ( 917a9f12690SJung-uk Kim ACPI_MUTEX_HANDLE MutexId); 918a9f12690SJung-uk Kim 919a9f12690SJung-uk Kim 920a9f12690SJung-uk Kim /* 921a9f12690SJung-uk Kim * utalloc - memory allocation and object caching 922a9f12690SJung-uk Kim */ 923a9f12690SJung-uk Kim ACPI_STATUS 924a9f12690SJung-uk Kim AcpiUtCreateCaches ( 925a9f12690SJung-uk Kim void); 926a9f12690SJung-uk Kim 927a9f12690SJung-uk Kim ACPI_STATUS 928a9f12690SJung-uk Kim AcpiUtDeleteCaches ( 929a9f12690SJung-uk Kim void); 930a9f12690SJung-uk Kim 931a9f12690SJung-uk Kim ACPI_STATUS 932a9f12690SJung-uk Kim AcpiUtValidateBuffer ( 933a9f12690SJung-uk Kim ACPI_BUFFER *Buffer); 934a9f12690SJung-uk Kim 935a9f12690SJung-uk Kim ACPI_STATUS 936a9f12690SJung-uk Kim AcpiUtInitializeBuffer ( 937a9f12690SJung-uk Kim ACPI_BUFFER *Buffer, 938a9f12690SJung-uk Kim ACPI_SIZE RequiredLength); 939a9f12690SJung-uk Kim 940a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS 941a9f12690SJung-uk Kim void * 942a9f12690SJung-uk Kim AcpiUtAllocateAndTrack ( 943a9f12690SJung-uk Kim ACPI_SIZE Size, 944a9f12690SJung-uk Kim UINT32 Component, 945a9f12690SJung-uk Kim const char *Module, 946a9f12690SJung-uk Kim UINT32 Line); 947a9f12690SJung-uk Kim 948a9f12690SJung-uk Kim void * 949a9f12690SJung-uk Kim AcpiUtAllocateZeroedAndTrack ( 950a9f12690SJung-uk Kim ACPI_SIZE Size, 951a9f12690SJung-uk Kim UINT32 Component, 952a9f12690SJung-uk Kim const char *Module, 953a9f12690SJung-uk Kim UINT32 Line); 954a9f12690SJung-uk Kim 955a9f12690SJung-uk Kim void 956a9f12690SJung-uk Kim AcpiUtFreeAndTrack ( 957a9f12690SJung-uk Kim void *Address, 958a9f12690SJung-uk Kim UINT32 Component, 959a9f12690SJung-uk Kim const char *Module, 960a9f12690SJung-uk Kim UINT32 Line); 961a9f12690SJung-uk Kim 962a9f12690SJung-uk Kim void 963a9f12690SJung-uk Kim AcpiUtDumpAllocationInfo ( 964a9f12690SJung-uk Kim void); 965a9f12690SJung-uk Kim 966a9f12690SJung-uk Kim void 967a9f12690SJung-uk Kim AcpiUtDumpAllocations ( 968a9f12690SJung-uk Kim UINT32 Component, 969a9f12690SJung-uk Kim const char *Module); 970a9f12690SJung-uk Kim 971a9f12690SJung-uk Kim ACPI_STATUS 972a9f12690SJung-uk Kim AcpiUtCreateList ( 973f8146b88SJung-uk Kim const char *ListName, 974a9f12690SJung-uk Kim UINT16 ObjectSize, 975a9f12690SJung-uk Kim ACPI_MEMORY_LIST **ReturnCache); 976a9f12690SJung-uk Kim 97742fecd12SJung-uk Kim #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 978a9f12690SJung-uk Kim 979fe0f0bbbSJung-uk Kim 980ec3fc72fSJung-uk Kim /* 981ec3fc72fSJung-uk Kim * utaddress - address range check 982ec3fc72fSJung-uk Kim */ 983ec3fc72fSJung-uk Kim ACPI_STATUS 984ec3fc72fSJung-uk Kim AcpiUtAddAddressRange ( 985ec3fc72fSJung-uk Kim ACPI_ADR_SPACE_TYPE SpaceId, 986ec3fc72fSJung-uk Kim ACPI_PHYSICAL_ADDRESS Address, 987ec3fc72fSJung-uk Kim UINT32 Length, 988ec3fc72fSJung-uk Kim ACPI_NAMESPACE_NODE *RegionNode); 989ec3fc72fSJung-uk Kim 990ec3fc72fSJung-uk Kim void 991ec3fc72fSJung-uk Kim AcpiUtRemoveAddressRange ( 992ec3fc72fSJung-uk Kim ACPI_ADR_SPACE_TYPE SpaceId, 993ec3fc72fSJung-uk Kim ACPI_NAMESPACE_NODE *RegionNode); 994ec3fc72fSJung-uk Kim 995ec3fc72fSJung-uk Kim UINT32 996ec3fc72fSJung-uk Kim AcpiUtCheckAddressRange ( 997ec3fc72fSJung-uk Kim ACPI_ADR_SPACE_TYPE SpaceId, 998ec3fc72fSJung-uk Kim ACPI_PHYSICAL_ADDRESS Address, 999ec3fc72fSJung-uk Kim UINT32 Length, 1000ec3fc72fSJung-uk Kim BOOLEAN Warn); 1001ec3fc72fSJung-uk Kim 1002ec3fc72fSJung-uk Kim void 1003ec3fc72fSJung-uk Kim AcpiUtDeleteAddressLists ( 1004ec3fc72fSJung-uk Kim void); 100542fecd12SJung-uk Kim 1006fe0f0bbbSJung-uk Kim 100742fecd12SJung-uk Kim /* 100842fecd12SJung-uk Kim * utxferror - various error/warning output functions 100942fecd12SJung-uk Kim */ 101042fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE 101142fecd12SJung-uk Kim AcpiUtPredefinedWarning ( 101242fecd12SJung-uk Kim const char *ModuleName, 101342fecd12SJung-uk Kim UINT32 LineNumber, 101442fecd12SJung-uk Kim char *Pathname, 101542fecd12SJung-uk Kim UINT8 NodeFlags, 101642fecd12SJung-uk Kim const char *Format, 101742fecd12SJung-uk Kim ...); 101842fecd12SJung-uk Kim 101942fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE 102042fecd12SJung-uk Kim AcpiUtPredefinedInfo ( 102142fecd12SJung-uk Kim const char *ModuleName, 102242fecd12SJung-uk Kim UINT32 LineNumber, 102342fecd12SJung-uk Kim char *Pathname, 102442fecd12SJung-uk Kim UINT8 NodeFlags, 102542fecd12SJung-uk Kim const char *Format, 102642fecd12SJung-uk Kim ...); 102742fecd12SJung-uk Kim 1028895f26a9SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE 1029895f26a9SJung-uk Kim AcpiUtPredefinedBiosError ( 1030895f26a9SJung-uk Kim const char *ModuleName, 1031895f26a9SJung-uk Kim UINT32 LineNumber, 1032895f26a9SJung-uk Kim char *Pathname, 1033895f26a9SJung-uk Kim UINT8 NodeFlags, 1034895f26a9SJung-uk Kim const char *Format, 1035895f26a9SJung-uk Kim ...); 1036895f26a9SJung-uk Kim 103742fecd12SJung-uk Kim void 103842fecd12SJung-uk Kim AcpiUtNamespaceError ( 103942fecd12SJung-uk Kim const char *ModuleName, 104042fecd12SJung-uk Kim UINT32 LineNumber, 104142fecd12SJung-uk Kim const char *InternalName, 104242fecd12SJung-uk Kim ACPI_STATUS LookupStatus); 104342fecd12SJung-uk Kim 104442fecd12SJung-uk Kim void 104542fecd12SJung-uk Kim AcpiUtMethodError ( 104642fecd12SJung-uk Kim const char *ModuleName, 104742fecd12SJung-uk Kim UINT32 LineNumber, 104842fecd12SJung-uk Kim const char *Message, 104942fecd12SJung-uk Kim ACPI_NAMESPACE_NODE *Node, 105042fecd12SJung-uk Kim const char *Path, 105142fecd12SJung-uk Kim ACPI_STATUS LookupStatus); 1052a9f12690SJung-uk Kim 1053fe0f0bbbSJung-uk Kim 1054313a0c13SJung-uk Kim /* 1055313a0c13SJung-uk Kim * Utility functions for ACPI names and IDs 1056313a0c13SJung-uk Kim */ 1057313a0c13SJung-uk Kim const AH_PREDEFINED_NAME * 1058313a0c13SJung-uk Kim AcpiAhMatchPredefinedName ( 1059313a0c13SJung-uk Kim char *Nameseg); 1060313a0c13SJung-uk Kim 1061313a0c13SJung-uk Kim const AH_DEVICE_ID * 1062313a0c13SJung-uk Kim AcpiAhMatchHardwareId ( 1063313a0c13SJung-uk Kim char *Hid); 1064313a0c13SJung-uk Kim 1065313a0c13SJung-uk Kim const char * 1066313a0c13SJung-uk Kim AcpiAhMatchUuid ( 1067313a0c13SJung-uk Kim UINT8 *Data); 1068313a0c13SJung-uk Kim 1069fe0f0bbbSJung-uk Kim 1070313a0c13SJung-uk Kim /* 1071313a0c13SJung-uk Kim * utprint - printf/vprintf output functions 1072313a0c13SJung-uk Kim */ 1073313a0c13SJung-uk Kim const char * 1074313a0c13SJung-uk Kim AcpiUtScanNumber ( 1075313a0c13SJung-uk Kim const char *String, 1076313a0c13SJung-uk Kim UINT64 *NumberPtr); 1077313a0c13SJung-uk Kim 1078313a0c13SJung-uk Kim const char * 1079313a0c13SJung-uk Kim AcpiUtPrintNumber ( 1080313a0c13SJung-uk Kim char *String, 1081313a0c13SJung-uk Kim UINT64 Number); 1082313a0c13SJung-uk Kim 1083313a0c13SJung-uk Kim int 1084313a0c13SJung-uk Kim AcpiUtVsnprintf ( 1085313a0c13SJung-uk Kim char *String, 1086313a0c13SJung-uk Kim ACPI_SIZE Size, 1087313a0c13SJung-uk Kim const char *Format, 1088313a0c13SJung-uk Kim va_list Args); 1089313a0c13SJung-uk Kim 1090313a0c13SJung-uk Kim int 1091313a0c13SJung-uk Kim AcpiUtSnprintf ( 1092313a0c13SJung-uk Kim char *String, 1093313a0c13SJung-uk Kim ACPI_SIZE Size, 1094313a0c13SJung-uk Kim const char *Format, 1095313a0c13SJung-uk Kim ...); 1096313a0c13SJung-uk Kim 1097313a0c13SJung-uk Kim #ifdef ACPI_APPLICATION 1098313a0c13SJung-uk Kim int 1099313a0c13SJung-uk Kim AcpiUtFileVprintf ( 1100313a0c13SJung-uk Kim ACPI_FILE File, 1101313a0c13SJung-uk Kim const char *Format, 1102313a0c13SJung-uk Kim va_list Args); 1103313a0c13SJung-uk Kim 1104313a0c13SJung-uk Kim int 1105313a0c13SJung-uk Kim AcpiUtFilePrintf ( 1106313a0c13SJung-uk Kim ACPI_FILE File, 1107313a0c13SJung-uk Kim const char *Format, 1108313a0c13SJung-uk Kim ...); 1109313a0c13SJung-uk Kim #endif 1110313a0c13SJung-uk Kim 1111fe0f0bbbSJung-uk Kim 1112313a0c13SJung-uk Kim /* 1113313a0c13SJung-uk Kim * utuuid -- UUID support functions 1114313a0c13SJung-uk Kim */ 11157cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP) 1116313a0c13SJung-uk Kim void 1117313a0c13SJung-uk Kim AcpiUtConvertStringToUuid ( 1118313a0c13SJung-uk Kim char *InString, 1119313a0c13SJung-uk Kim UINT8 *UuidBuffer); 11207cf3e94aSJung-uk Kim #endif 1121313a0c13SJung-uk Kim 1122a9f12690SJung-uk Kim #endif /* _ACUTILS_H */ 1123