acutils.h revision 284460
1121159Sbmah/****************************************************************************** 2121159Sbmah * 3121159Sbmah * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures 4121159Sbmah * 5121159Sbmah *****************************************************************************/ 6121159Sbmah 7121159Sbmah/* 8121159Sbmah * Copyright (C) 2000 - 2015, Intel Corp. 9121159Sbmah * All rights reserved. 10121159Sbmah * 11121159Sbmah * Redistribution and use in source and binary forms, with or without 12121159Sbmah * modification, are permitted provided that the following conditions 13121159Sbmah * are met: 14121159Sbmah * 1. Redistributions of source code must retain the above copyright 15121159Sbmah * notice, this list of conditions, and the following disclaimer, 16121159Sbmah * without modification. 17121159Sbmah * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18121159Sbmah * substantially similar to the "NO WARRANTY" disclaimer below 19121159Sbmah * ("Disclaimer") and any redistribution must be conditioned upon 20121159Sbmah * including a substantially similar Disclaimer requirement for further 21121159Sbmah * binary redistribution. 22121159Sbmah * 3. Neither the names of the above-listed copyright holders nor the names 23121159Sbmah * of any contributors may be used to endorse or promote products derived 24121159Sbmah * from this software without specific prior written permission. 25121159Sbmah * 26121159Sbmah * Alternatively, this software may be distributed under the terms of the 27121159Sbmah * GNU General Public License ("GPL") version 2 as published by the Free 28166671Sbrueffer * Software Foundation. 29121159Sbmah * 30121159Sbmah * NO WARRANTY 31121159Sbmah * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32121159Sbmah * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33121159Sbmah * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34121159Sbmah * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35121159Sbmah * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36121159Sbmah * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37121159Sbmah * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38121159Sbmah * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39121159Sbmah * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40121159Sbmah * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41121159Sbmah * POSSIBILITY OF SUCH DAMAGES. 42121159Sbmah */ 43121159Sbmah 44121159Sbmah#ifndef _ACUTILS_H 45121159Sbmah#define _ACUTILS_H 46121159Sbmah 47121159Sbmah 48121159Sbmahextern const UINT8 AcpiGbl_ResourceAmlSizes[]; 49121159Sbmahextern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[]; 50121159Sbmah 51121159Sbmah/* Strings used by the disassembler and debugger resource dump routines */ 52121159Sbmah 53121159Sbmah#if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) 54121159Sbmah 55121159Sbmahextern const char *AcpiGbl_BmDecode[]; 56121159Sbmahextern const char *AcpiGbl_ConfigDecode[]; 57121159Sbmahextern const char *AcpiGbl_ConsumeDecode[]; 58121159Sbmahextern const char *AcpiGbl_DecDecode[]; 59121159Sbmahextern const char *AcpiGbl_HeDecode[]; 60121159Sbmahextern const char *AcpiGbl_IoDecode[]; 61121159Sbmahextern const char *AcpiGbl_LlDecode[]; 62121159Sbmahextern const char *AcpiGbl_MaxDecode[]; 63121159Sbmahextern const char *AcpiGbl_MemDecode[]; 64121159Sbmahextern const char *AcpiGbl_MinDecode[]; 65121159Sbmahextern const char *AcpiGbl_MtpDecode[]; 66121159Sbmahextern const char *AcpiGbl_RngDecode[]; 67121159Sbmahextern const char *AcpiGbl_RwDecode[]; 68121159Sbmahextern const char *AcpiGbl_ShrDecode[]; 69121159Sbmahextern const char *AcpiGbl_SizDecode[]; 70121159Sbmahextern const char *AcpiGbl_TrsDecode[]; 71121159Sbmahextern const char *AcpiGbl_TtpDecode[]; 72121159Sbmahextern const char *AcpiGbl_TypDecode[]; 73121159Sbmahextern const char *AcpiGbl_PpcDecode[]; 74121159Sbmahextern const char *AcpiGbl_IorDecode[]; 75121159Sbmahextern const char *AcpiGbl_DtsDecode[]; 76121159Sbmahextern const char *AcpiGbl_CtDecode[]; 77121159Sbmahextern const char *AcpiGbl_SbtDecode[]; 78121159Sbmahextern const char *AcpiGbl_AmDecode[]; 79121159Sbmahextern const char *AcpiGbl_SmDecode[]; 80121159Sbmahextern const char *AcpiGbl_WmDecode[]; 81121159Sbmahextern const char *AcpiGbl_CphDecode[]; 82121159Sbmahextern const char *AcpiGbl_CpoDecode[]; 83121159Sbmahextern const char *AcpiGbl_DpDecode[]; 84121159Sbmahextern const char *AcpiGbl_EdDecode[]; 85121159Sbmahextern const char *AcpiGbl_BpbDecode[]; 86121159Sbmahextern const char *AcpiGbl_SbDecode[]; 87121159Sbmahextern const char *AcpiGbl_FcDecode[]; 88121159Sbmahextern const char *AcpiGbl_PtDecode[]; 89121159Sbmah#endif 90121159Sbmah 91121159Sbmah/* 92121159Sbmah * For the iASL compiler case, the output is redirected to stderr so that 93121159Sbmah * any of the various ACPI errors and warnings do not appear in the output 94121159Sbmah * files, for either the compiler or disassembler portions of the tool. 95121159Sbmah */ 96121159Sbmah#ifdef ACPI_ASL_COMPILER 97121159Sbmah 98121159Sbmah#include <stdio.h> 99121159Sbmah 100121159Sbmah#define ACPI_MSG_REDIRECT_BEGIN \ 101121159Sbmah FILE *OutputFile = AcpiGbl_OutputFile; \ 102121159Sbmah AcpiOsRedirectOutput (stderr); 103121159Sbmah 104121159Sbmah#define ACPI_MSG_REDIRECT_END \ 105121159Sbmah AcpiOsRedirectOutput (OutputFile); 106121159Sbmah 107121159Sbmah#else 108121159Sbmah/* 109121159Sbmah * non-iASL case - no redirection, nothing to do 110121159Sbmah */ 111121159Sbmah#define ACPI_MSG_REDIRECT_BEGIN 112121159Sbmah#define ACPI_MSG_REDIRECT_END 113121159Sbmah#endif 114121159Sbmah 115121159Sbmah/* 116121159Sbmah * Common error message prefixes 117121159Sbmah */ 118121159Sbmah#define ACPI_MSG_ERROR "ACPI Error: " 119121159Sbmah#define ACPI_MSG_EXCEPTION "ACPI Exception: " 120121159Sbmah#define ACPI_MSG_WARNING "ACPI Warning: " 121121159Sbmah#define ACPI_MSG_INFO "ACPI: " 122121159Sbmah 123121159Sbmah#define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): " 124121159Sbmah#define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): " 125121159Sbmah 126121159Sbmah/* 127121159Sbmah * Common message suffix 128121159Sbmah */ 129121159Sbmah#define ACPI_MSG_SUFFIX \ 130121159Sbmah AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber) 131121159Sbmah 132121159Sbmah 133121159Sbmah/* Types for Resource descriptor entries */ 134121159Sbmah 135121159Sbmah#define ACPI_INVALID_RESOURCE 0 136121159Sbmah#define ACPI_FIXED_LENGTH 1 137121159Sbmah#define ACPI_VARIABLE_LENGTH 2 138121159Sbmah#define ACPI_SMALL_VARIABLE_LENGTH 3 139121159Sbmah 140131864Srutypedef 141121159SbmahACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( 142121159Sbmah UINT8 *Aml, 143121159Sbmah UINT32 Length, 144121159Sbmah UINT32 Offset, 145121159Sbmah UINT8 ResourceIndex, 146121159Sbmah void **Context); 147121159Sbmah 148121159Sbmahtypedef 149121159SbmahACPI_STATUS (*ACPI_PKG_CALLBACK) ( 150121159Sbmah UINT8 ObjectType, 151121159Sbmah ACPI_OPERAND_OBJECT *SourceObject, 152121159Sbmah ACPI_GENERIC_STATE *State, 153121159Sbmah void *Context); 154121159Sbmah 155121159Sbmahtypedef struct acpi_pkg_info 156121159Sbmah{ 157121159Sbmah UINT8 *FreeSpace; 158121159Sbmah ACPI_SIZE Length; 159121159Sbmah UINT32 ObjectSpace; 160121159Sbmah UINT32 NumPackages; 161121159Sbmah 162121159Sbmah} ACPI_PKG_INFO; 163121159Sbmah 164121159Sbmah/* Object reference counts */ 165121159Sbmah 166121159Sbmah#define REF_INCREMENT (UINT16) 0 167121159Sbmah#define REF_DECREMENT (UINT16) 1 168121159Sbmah 169121159Sbmah/* AcpiUtDumpBuffer */ 170121159Sbmah 171121159Sbmah#define DB_BYTE_DISPLAY 1 172121159Sbmah#define DB_WORD_DISPLAY 2 173121159Sbmah#define DB_DWORD_DISPLAY 4 174121159Sbmah#define DB_QWORD_DISPLAY 8 175121159Sbmah 176131864Sru/* 177121159Sbmah * utglobal - Global data structures and procedures 178131864Sru */ 179121159SbmahACPI_STATUS 180121159SbmahAcpiUtInitGlobals ( 181131864Sru void); 182121159Sbmah 183131864Sru#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 184131864Sru 185131864Sruchar * 186131864SruAcpiUtGetMutexName ( 187131864Sru UINT32 MutexId); 188131864Sru 189131864Sruconst char * 190131864SruAcpiUtGetNotifyName ( 191131864Sru UINT32 NotifyValue, 192131864Sru ACPI_OBJECT_TYPE Type); 193131864Sru#endif 194131864Sru 195121159Sbmahchar * 196131864SruAcpiUtGetTypeName ( 197131864Sru ACPI_OBJECT_TYPE Type); 198121159Sbmah 199131864Sruchar * 200131864SruAcpiUtGetNodeName ( 201131864Sru void *Object); 202 203char * 204AcpiUtGetDescriptorName ( 205 void *Object); 206 207const char * 208AcpiUtGetReferenceName ( 209 ACPI_OPERAND_OBJECT *Object); 210 211char * 212AcpiUtGetObjectTypeName ( 213 ACPI_OPERAND_OBJECT *ObjDesc); 214 215char * 216AcpiUtGetRegionName ( 217 UINT8 SpaceId); 218 219char * 220AcpiUtGetEventName ( 221 UINT32 EventId); 222 223char 224AcpiUtHexToAsciiChar ( 225 UINT64 Integer, 226 UINT32 Position); 227 228UINT8 229AcpiUtAsciiCharToHex ( 230 int HexChar); 231 232BOOLEAN 233AcpiUtValidObjectType ( 234 ACPI_OBJECT_TYPE Type); 235 236 237/* 238 * utinit - miscellaneous initialization and shutdown 239 */ 240ACPI_STATUS 241AcpiUtHardwareInitialize ( 242 void); 243 244void 245AcpiUtSubsystemShutdown ( 246 void); 247 248 249/* 250 * utclib - Local implementations of C library functions 251 */ 252#ifndef ACPI_USE_SYSTEM_CLIBRARY 253 254ACPI_SIZE 255AcpiUtStrlen ( 256 const char *String); 257 258char * 259AcpiUtStrchr ( 260 const char *String, 261 int ch); 262 263char * 264AcpiUtStrcpy ( 265 char *DstString, 266 const char *SrcString); 267 268char * 269AcpiUtStrncpy ( 270 char *DstString, 271 const char *SrcString, 272 ACPI_SIZE Count); 273 274int 275AcpiUtMemcmp ( 276 const char *Buffer1, 277 const char *Buffer2, 278 ACPI_SIZE Count); 279 280int 281AcpiUtStrncmp ( 282 const char *String1, 283 const char *String2, 284 ACPI_SIZE Count); 285 286int 287AcpiUtStrcmp ( 288 const char *String1, 289 const char *String2); 290 291char * 292AcpiUtStrcat ( 293 char *DstString, 294 const char *SrcString); 295 296char * 297AcpiUtStrncat ( 298 char *DstString, 299 const char *SrcString, 300 ACPI_SIZE Count); 301 302UINT32 303AcpiUtStrtoul ( 304 const char *String, 305 char **Terminator, 306 UINT32 Base); 307 308char * 309AcpiUtStrstr ( 310 char *String1, 311 char *String2); 312 313void * 314AcpiUtMemcpy ( 315 void *Dest, 316 const void *Src, 317 ACPI_SIZE Count); 318 319void * 320AcpiUtMemset ( 321 void *Dest, 322 UINT8 Value, 323 ACPI_SIZE Count); 324 325int 326AcpiUtToUpper ( 327 int c); 328 329int 330AcpiUtToLower ( 331 int c); 332 333extern const UINT8 _acpi_ctype[]; 334 335#define _ACPI_XA 0x00 /* extra alphabetic - not supported */ 336#define _ACPI_XS 0x40 /* extra space */ 337#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ 338#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ 339#define _ACPI_DI 0x04 /* '0'-'9' */ 340#define _ACPI_LO 0x02 /* 'a'-'z' */ 341#define _ACPI_PU 0x10 /* punctuation */ 342#define _ACPI_SP 0x08 /* space, tab, CR, LF, VT, FF */ 343#define _ACPI_UP 0x01 /* 'A'-'Z' */ 344#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ 345 346#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI)) 347#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP)) 348#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD)) 349#define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP)) 350#define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO)) 351#define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU)) 352#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) 353 354#endif /* !ACPI_USE_SYSTEM_CLIBRARY */ 355 356#define ACPI_IS_ASCII(c) ((c) < 0x80) 357 358 359/* 360 * utcopy - Object construction and conversion interfaces 361 */ 362ACPI_STATUS 363AcpiUtBuildSimpleObject( 364 ACPI_OPERAND_OBJECT *Obj, 365 ACPI_OBJECT *UserObj, 366 UINT8 *DataSpace, 367 UINT32 *BufferSpaceUsed); 368 369ACPI_STATUS 370AcpiUtBuildPackageObject ( 371 ACPI_OPERAND_OBJECT *Obj, 372 UINT8 *Buffer, 373 UINT32 *SpaceUsed); 374 375ACPI_STATUS 376AcpiUtCopyIobjectToEobject ( 377 ACPI_OPERAND_OBJECT *Obj, 378 ACPI_BUFFER *RetBuffer); 379 380ACPI_STATUS 381AcpiUtCopyEobjectToIobject ( 382 ACPI_OBJECT *Obj, 383 ACPI_OPERAND_OBJECT **InternalObj); 384 385ACPI_STATUS 386AcpiUtCopyISimpleToIsimple ( 387 ACPI_OPERAND_OBJECT *SourceObj, 388 ACPI_OPERAND_OBJECT *DestObj); 389 390ACPI_STATUS 391AcpiUtCopyIobjectToIobject ( 392 ACPI_OPERAND_OBJECT *SourceDesc, 393 ACPI_OPERAND_OBJECT **DestDesc, 394 ACPI_WALK_STATE *WalkState); 395 396 397/* 398 * utcreate - Object creation 399 */ 400ACPI_STATUS 401AcpiUtUpdateObjectReference ( 402 ACPI_OPERAND_OBJECT *Object, 403 UINT16 Action); 404 405 406/* 407 * utdebug - Debug interfaces 408 */ 409void 410AcpiUtInitStackPtrTrace ( 411 void); 412 413void 414AcpiUtTrackStackPtr ( 415 void); 416 417void 418AcpiUtTrace ( 419 UINT32 LineNumber, 420 const char *FunctionName, 421 const char *ModuleName, 422 UINT32 ComponentId); 423 424void 425AcpiUtTracePtr ( 426 UINT32 LineNumber, 427 const char *FunctionName, 428 const char *ModuleName, 429 UINT32 ComponentId, 430 void *Pointer); 431 432void 433AcpiUtTraceU32 ( 434 UINT32 LineNumber, 435 const char *FunctionName, 436 const char *ModuleName, 437 UINT32 ComponentId, 438 UINT32 Integer); 439 440void 441AcpiUtTraceStr ( 442 UINT32 LineNumber, 443 const char *FunctionName, 444 const char *ModuleName, 445 UINT32 ComponentId, 446 char *String); 447 448void 449AcpiUtExit ( 450 UINT32 LineNumber, 451 const char *FunctionName, 452 const char *ModuleName, 453 UINT32 ComponentId); 454 455void 456AcpiUtStatusExit ( 457 UINT32 LineNumber, 458 const char *FunctionName, 459 const char *ModuleName, 460 UINT32 ComponentId, 461 ACPI_STATUS Status); 462 463void 464AcpiUtValueExit ( 465 UINT32 LineNumber, 466 const char *FunctionName, 467 const char *ModuleName, 468 UINT32 ComponentId, 469 UINT64 Value); 470 471void 472AcpiUtPtrExit ( 473 UINT32 LineNumber, 474 const char *FunctionName, 475 const char *ModuleName, 476 UINT32 ComponentId, 477 UINT8 *Ptr); 478 479void 480AcpiUtDebugDumpBuffer ( 481 UINT8 *Buffer, 482 UINT32 Count, 483 UINT32 Display, 484 UINT32 ComponentId); 485 486void 487AcpiUtDumpBuffer ( 488 UINT8 *Buffer, 489 UINT32 Count, 490 UINT32 Display, 491 UINT32 Offset); 492 493#ifdef ACPI_APPLICATION 494void 495AcpiUtDumpBufferToFile ( 496 ACPI_FILE File, 497 UINT8 *Buffer, 498 UINT32 Count, 499 UINT32 Display, 500 UINT32 BaseOffset); 501#endif 502 503void 504AcpiUtReportError ( 505 char *ModuleName, 506 UINT32 LineNumber); 507 508void 509AcpiUtReportInfo ( 510 char *ModuleName, 511 UINT32 LineNumber); 512 513void 514AcpiUtReportWarning ( 515 char *ModuleName, 516 UINT32 LineNumber); 517 518/* 519 * utdelete - Object deletion and reference counts 520 */ 521void 522AcpiUtAddReference ( 523 ACPI_OPERAND_OBJECT *Object); 524 525void 526AcpiUtRemoveReference ( 527 ACPI_OPERAND_OBJECT *Object); 528 529void 530AcpiUtDeleteInternalPackageObject ( 531 ACPI_OPERAND_OBJECT *Object); 532 533void 534AcpiUtDeleteInternalSimpleObject ( 535 ACPI_OPERAND_OBJECT *Object); 536 537void 538AcpiUtDeleteInternalObjectList ( 539 ACPI_OPERAND_OBJECT **ObjList); 540 541 542/* 543 * uteval - object evaluation 544 */ 545ACPI_STATUS 546AcpiUtEvaluateObject ( 547 ACPI_NAMESPACE_NODE *PrefixNode, 548 char *Path, 549 UINT32 ExpectedReturnBtypes, 550 ACPI_OPERAND_OBJECT **ReturnDesc); 551 552ACPI_STATUS 553AcpiUtEvaluateNumericObject ( 554 char *ObjectName, 555 ACPI_NAMESPACE_NODE *DeviceNode, 556 UINT64 *Value); 557 558ACPI_STATUS 559AcpiUtExecute_STA ( 560 ACPI_NAMESPACE_NODE *DeviceNode, 561 UINT32 *StatusFlags); 562 563ACPI_STATUS 564AcpiUtExecutePowerMethods ( 565 ACPI_NAMESPACE_NODE *DeviceNode, 566 const char **MethodNames, 567 UINT8 MethodCount, 568 UINT8 *OutValues); 569 570 571/* 572 * utfileio - file operations 573 */ 574#ifdef ACPI_APPLICATION 575ACPI_STATUS 576AcpiUtReadTableFromFile ( 577 char *Filename, 578 ACPI_TABLE_HEADER **Table); 579#endif 580 581 582/* 583 * utids - device ID support 584 */ 585ACPI_STATUS 586AcpiUtExecute_HID ( 587 ACPI_NAMESPACE_NODE *DeviceNode, 588 ACPI_PNP_DEVICE_ID **ReturnId); 589 590ACPI_STATUS 591AcpiUtExecute_UID ( 592 ACPI_NAMESPACE_NODE *DeviceNode, 593 ACPI_PNP_DEVICE_ID **ReturnId); 594 595ACPI_STATUS 596AcpiUtExecute_SUB ( 597 ACPI_NAMESPACE_NODE *DeviceNode, 598 ACPI_PNP_DEVICE_ID **ReturnId); 599 600ACPI_STATUS 601AcpiUtExecute_CID ( 602 ACPI_NAMESPACE_NODE *DeviceNode, 603 ACPI_PNP_DEVICE_ID_LIST **ReturnCidList); 604 605 606/* 607 * utlock - reader/writer locks 608 */ 609ACPI_STATUS 610AcpiUtCreateRwLock ( 611 ACPI_RW_LOCK *Lock); 612 613void 614AcpiUtDeleteRwLock ( 615 ACPI_RW_LOCK *Lock); 616 617ACPI_STATUS 618AcpiUtAcquireReadLock ( 619 ACPI_RW_LOCK *Lock); 620 621ACPI_STATUS 622AcpiUtReleaseReadLock ( 623 ACPI_RW_LOCK *Lock); 624 625ACPI_STATUS 626AcpiUtAcquireWriteLock ( 627 ACPI_RW_LOCK *Lock); 628 629void 630AcpiUtReleaseWriteLock ( 631 ACPI_RW_LOCK *Lock); 632 633 634/* 635 * utobject - internal object create/delete/cache routines 636 */ 637ACPI_OPERAND_OBJECT * 638AcpiUtCreateInternalObjectDbg ( 639 const char *ModuleName, 640 UINT32 LineNumber, 641 UINT32 ComponentId, 642 ACPI_OBJECT_TYPE Type); 643 644void * 645AcpiUtAllocateObjectDescDbg ( 646 const char *ModuleName, 647 UINT32 LineNumber, 648 UINT32 ComponentId); 649 650#define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) 651#define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) 652 653void 654AcpiUtDeleteObjectDesc ( 655 ACPI_OPERAND_OBJECT *Object); 656 657BOOLEAN 658AcpiUtValidInternalObject ( 659 void *Object); 660 661ACPI_OPERAND_OBJECT * 662AcpiUtCreatePackageObject ( 663 UINT32 Count); 664 665ACPI_OPERAND_OBJECT * 666AcpiUtCreateIntegerObject ( 667 UINT64 Value); 668 669ACPI_OPERAND_OBJECT * 670AcpiUtCreateBufferObject ( 671 ACPI_SIZE BufferSize); 672 673ACPI_OPERAND_OBJECT * 674AcpiUtCreateStringObject ( 675 ACPI_SIZE StringSize); 676 677ACPI_STATUS 678AcpiUtGetObjectSize( 679 ACPI_OPERAND_OBJECT *Obj, 680 ACPI_SIZE *ObjLength); 681 682 683/* 684 * utosi - Support for the _OSI predefined control method 685 */ 686ACPI_STATUS 687AcpiUtInitializeInterfaces ( 688 void); 689 690ACPI_STATUS 691AcpiUtInterfaceTerminate ( 692 void); 693 694ACPI_STATUS 695AcpiUtInstallInterface ( 696 ACPI_STRING InterfaceName); 697 698ACPI_STATUS 699AcpiUtRemoveInterface ( 700 ACPI_STRING InterfaceName); 701 702ACPI_STATUS 703AcpiUtUpdateInterfaces ( 704 UINT8 Action); 705 706ACPI_INTERFACE_INFO * 707AcpiUtGetInterface ( 708 ACPI_STRING InterfaceName); 709 710ACPI_STATUS 711AcpiUtOsiImplementation ( 712 ACPI_WALK_STATE *WalkState); 713 714 715/* 716 * utpredef - support for predefined names 717 */ 718const ACPI_PREDEFINED_INFO * 719AcpiUtGetNextPredefinedMethod ( 720 const ACPI_PREDEFINED_INFO *ThisName); 721 722const ACPI_PREDEFINED_INFO * 723AcpiUtMatchPredefinedMethod ( 724 char *Name); 725 726void 727AcpiUtGetExpectedReturnTypes ( 728 char *Buffer, 729 UINT32 ExpectedBtypes); 730 731#if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) 732const ACPI_PREDEFINED_INFO * 733AcpiUtMatchResourceName ( 734 char *Name); 735 736void 737AcpiUtDisplayPredefinedMethod ( 738 char *Buffer, 739 const ACPI_PREDEFINED_INFO *ThisName, 740 BOOLEAN MultiLine); 741 742UINT32 743AcpiUtGetResourceBitWidth ( 744 char *Buffer, 745 UINT16 Types); 746#endif 747 748 749/* 750 * utstate - Generic state creation/cache routines 751 */ 752void 753AcpiUtPushGenericState ( 754 ACPI_GENERIC_STATE **ListHead, 755 ACPI_GENERIC_STATE *State); 756 757ACPI_GENERIC_STATE * 758AcpiUtPopGenericState ( 759 ACPI_GENERIC_STATE **ListHead); 760 761 762ACPI_GENERIC_STATE * 763AcpiUtCreateGenericState ( 764 void); 765 766ACPI_THREAD_STATE * 767AcpiUtCreateThreadState ( 768 void); 769 770ACPI_GENERIC_STATE * 771AcpiUtCreateUpdateState ( 772 ACPI_OPERAND_OBJECT *Object, 773 UINT16 Action); 774 775ACPI_GENERIC_STATE * 776AcpiUtCreatePkgState ( 777 void *InternalObject, 778 void *ExternalObject, 779 UINT16 Index); 780 781ACPI_STATUS 782AcpiUtCreateUpdateStateAndPush ( 783 ACPI_OPERAND_OBJECT *Object, 784 UINT16 Action, 785 ACPI_GENERIC_STATE **StateList); 786 787ACPI_GENERIC_STATE * 788AcpiUtCreateControlState ( 789 void); 790 791void 792AcpiUtDeleteGenericState ( 793 ACPI_GENERIC_STATE *State); 794 795 796/* 797 * utmath 798 */ 799ACPI_STATUS 800AcpiUtDivide ( 801 UINT64 InDividend, 802 UINT64 InDivisor, 803 UINT64 *OutQuotient, 804 UINT64 *OutRemainder); 805 806ACPI_STATUS 807AcpiUtShortDivide ( 808 UINT64 InDividend, 809 UINT32 Divisor, 810 UINT64 *OutQuotient, 811 UINT32 *OutRemainder); 812 813 814/* 815 * utmisc 816 */ 817const ACPI_EXCEPTION_INFO * 818AcpiUtValidateException ( 819 ACPI_STATUS Status); 820 821BOOLEAN 822AcpiUtIsPciRootBridge ( 823 char *Id); 824 825#if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP) 826BOOLEAN 827AcpiUtIsAmlTable ( 828 ACPI_TABLE_HEADER *Table); 829#endif 830 831ACPI_STATUS 832AcpiUtWalkPackageTree ( 833 ACPI_OPERAND_OBJECT *SourceObject, 834 void *TargetObject, 835 ACPI_PKG_CALLBACK WalkCallback, 836 void *Context); 837 838 839/* Values for Base above (16=Hex, 10=Decimal) */ 840 841#define ACPI_ANY_BASE 0 842 843UINT32 844AcpiUtDwordByteSwap ( 845 UINT32 Value); 846 847void 848AcpiUtSetIntegerWidth ( 849 UINT8 Revision); 850 851#ifdef ACPI_DEBUG_OUTPUT 852void 853AcpiUtDisplayInitPathname ( 854 UINT8 Type, 855 ACPI_NAMESPACE_NODE *ObjHandle, 856 char *Path); 857#endif 858 859 860/* 861 * utownerid - Support for Table/Method Owner IDs 862 */ 863ACPI_STATUS 864AcpiUtAllocateOwnerId ( 865 ACPI_OWNER_ID *OwnerId); 866 867void 868AcpiUtReleaseOwnerId ( 869 ACPI_OWNER_ID *OwnerId); 870 871 872/* 873 * utresrc 874 */ 875ACPI_STATUS 876AcpiUtWalkAmlResources ( 877 ACPI_WALK_STATE *WalkState, 878 UINT8 *Aml, 879 ACPI_SIZE AmlLength, 880 ACPI_WALK_AML_CALLBACK UserFunction, 881 void **Context); 882 883ACPI_STATUS 884AcpiUtValidateResource ( 885 ACPI_WALK_STATE *WalkState, 886 void *Aml, 887 UINT8 *ReturnIndex); 888 889UINT32 890AcpiUtGetDescriptorLength ( 891 void *Aml); 892 893UINT16 894AcpiUtGetResourceLength ( 895 void *Aml); 896 897UINT8 898AcpiUtGetResourceHeaderLength ( 899 void *Aml); 900 901UINT8 902AcpiUtGetResourceType ( 903 void *Aml); 904 905ACPI_STATUS 906AcpiUtGetResourceEndTag ( 907 ACPI_OPERAND_OBJECT *ObjDesc, 908 UINT8 **EndTag); 909 910 911/* 912 * utstring - String and character utilities 913 */ 914void 915AcpiUtStrupr ( 916 char *SrcString); 917 918#ifdef ACPI_ASL_COMPILER 919void 920AcpiUtStrlwr ( 921 char *SrcString); 922 923int 924AcpiUtStricmp ( 925 char *String1, 926 char *String2); 927#endif 928 929ACPI_STATUS 930AcpiUtStrtoul64 ( 931 char *String, 932 UINT32 Base, 933 UINT64 *RetInteger); 934 935void 936AcpiUtPrintString ( 937 char *String, 938 UINT16 MaxLength); 939 940#if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP 941void 942UtConvertBackslashes ( 943 char *Pathname); 944#endif 945 946BOOLEAN 947AcpiUtValidAcpiName ( 948 char *Name); 949 950BOOLEAN 951AcpiUtValidAcpiChar ( 952 char Character, 953 UINT32 Position); 954 955void 956AcpiUtRepairName ( 957 char *Name); 958 959#if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) 960BOOLEAN 961AcpiUtSafeStrcpy ( 962 char *Dest, 963 ACPI_SIZE DestSize, 964 char *Source); 965 966BOOLEAN 967AcpiUtSafeStrcat ( 968 char *Dest, 969 ACPI_SIZE DestSize, 970 char *Source); 971 972#ifndef _KERNEL 973BOOLEAN 974AcpiUtSafeStrncat ( 975 char *Dest, 976 ACPI_SIZE DestSize, 977 char *Source, 978 ACPI_SIZE MaxTransferLength); 979#endif 980#endif 981 982 983/* 984 * utmutex - mutex support 985 */ 986ACPI_STATUS 987AcpiUtMutexInitialize ( 988 void); 989 990void 991AcpiUtMutexTerminate ( 992 void); 993 994ACPI_STATUS 995AcpiUtAcquireMutex ( 996 ACPI_MUTEX_HANDLE MutexId); 997 998ACPI_STATUS 999AcpiUtReleaseMutex ( 1000 ACPI_MUTEX_HANDLE MutexId); 1001 1002 1003/* 1004 * utalloc - memory allocation and object caching 1005 */ 1006ACPI_STATUS 1007AcpiUtCreateCaches ( 1008 void); 1009 1010ACPI_STATUS 1011AcpiUtDeleteCaches ( 1012 void); 1013 1014ACPI_STATUS 1015AcpiUtValidateBuffer ( 1016 ACPI_BUFFER *Buffer); 1017 1018ACPI_STATUS 1019AcpiUtInitializeBuffer ( 1020 ACPI_BUFFER *Buffer, 1021 ACPI_SIZE RequiredLength); 1022 1023#ifdef ACPI_DBG_TRACK_ALLOCATIONS 1024void * 1025AcpiUtAllocateAndTrack ( 1026 ACPI_SIZE Size, 1027 UINT32 Component, 1028 const char *Module, 1029 UINT32 Line); 1030 1031void * 1032AcpiUtAllocateZeroedAndTrack ( 1033 ACPI_SIZE Size, 1034 UINT32 Component, 1035 const char *Module, 1036 UINT32 Line); 1037 1038void 1039AcpiUtFreeAndTrack ( 1040 void *Address, 1041 UINT32 Component, 1042 const char *Module, 1043 UINT32 Line); 1044 1045void 1046AcpiUtDumpAllocationInfo ( 1047 void); 1048 1049void 1050AcpiUtDumpAllocations ( 1051 UINT32 Component, 1052 const char *Module); 1053 1054ACPI_STATUS 1055AcpiUtCreateList ( 1056 char *ListName, 1057 UINT16 ObjectSize, 1058 ACPI_MEMORY_LIST **ReturnCache); 1059 1060#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 1061 1062/* 1063 * utaddress - address range check 1064 */ 1065ACPI_STATUS 1066AcpiUtAddAddressRange ( 1067 ACPI_ADR_SPACE_TYPE SpaceId, 1068 ACPI_PHYSICAL_ADDRESS Address, 1069 UINT32 Length, 1070 ACPI_NAMESPACE_NODE *RegionNode); 1071 1072void 1073AcpiUtRemoveAddressRange ( 1074 ACPI_ADR_SPACE_TYPE SpaceId, 1075 ACPI_NAMESPACE_NODE *RegionNode); 1076 1077UINT32 1078AcpiUtCheckAddressRange ( 1079 ACPI_ADR_SPACE_TYPE SpaceId, 1080 ACPI_PHYSICAL_ADDRESS Address, 1081 UINT32 Length, 1082 BOOLEAN Warn); 1083 1084void 1085AcpiUtDeleteAddressLists ( 1086 void); 1087 1088/* 1089 * utxferror - various error/warning output functions 1090 */ 1091void ACPI_INTERNAL_VAR_XFACE 1092AcpiUtPredefinedWarning ( 1093 const char *ModuleName, 1094 UINT32 LineNumber, 1095 char *Pathname, 1096 UINT8 NodeFlags, 1097 const char *Format, 1098 ...); 1099 1100void ACPI_INTERNAL_VAR_XFACE 1101AcpiUtPredefinedInfo ( 1102 const char *ModuleName, 1103 UINT32 LineNumber, 1104 char *Pathname, 1105 UINT8 NodeFlags, 1106 const char *Format, 1107 ...); 1108 1109void ACPI_INTERNAL_VAR_XFACE 1110AcpiUtPredefinedBiosError ( 1111 const char *ModuleName, 1112 UINT32 LineNumber, 1113 char *Pathname, 1114 UINT8 NodeFlags, 1115 const char *Format, 1116 ...); 1117 1118void 1119AcpiUtNamespaceError ( 1120 const char *ModuleName, 1121 UINT32 LineNumber, 1122 const char *InternalName, 1123 ACPI_STATUS LookupStatus); 1124 1125void 1126AcpiUtMethodError ( 1127 const char *ModuleName, 1128 UINT32 LineNumber, 1129 const char *Message, 1130 ACPI_NAMESPACE_NODE *Node, 1131 const char *Path, 1132 ACPI_STATUS LookupStatus); 1133 1134/* 1135 * Utility functions for ACPI names and IDs 1136 */ 1137const AH_PREDEFINED_NAME * 1138AcpiAhMatchPredefinedName ( 1139 char *Nameseg); 1140 1141const AH_DEVICE_ID * 1142AcpiAhMatchHardwareId ( 1143 char *Hid); 1144 1145const char * 1146AcpiAhMatchUuid ( 1147 UINT8 *Data); 1148 1149/* 1150 * utprint - printf/vprintf output functions 1151 */ 1152const char * 1153AcpiUtScanNumber ( 1154 const char *String, 1155 UINT64 *NumberPtr); 1156 1157const char * 1158AcpiUtPrintNumber ( 1159 char *String, 1160 UINT64 Number); 1161 1162int 1163AcpiUtVsnprintf ( 1164 char *String, 1165 ACPI_SIZE Size, 1166 const char *Format, 1167 va_list Args); 1168 1169int 1170AcpiUtSnprintf ( 1171 char *String, 1172 ACPI_SIZE Size, 1173 const char *Format, 1174 ...); 1175 1176#ifdef ACPI_APPLICATION 1177int 1178AcpiUtFileVprintf ( 1179 ACPI_FILE File, 1180 const char *Format, 1181 va_list Args); 1182 1183int 1184AcpiUtFilePrintf ( 1185 ACPI_FILE File, 1186 const char *Format, 1187 ...); 1188#endif 1189 1190/* 1191 * utuuid -- UUID support functions 1192 */ 1193#if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP) 1194void 1195AcpiUtConvertStringToUuid ( 1196 char *InString, 1197 UINT8 *UuidBuffer); 1198#endif 1199 1200#endif /* _ACUTILS_H */ 1201