acutils.h revision 243347
1/****************************************************************************** 2 * 3 * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2012, Intel Corp. 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44#ifndef _ACUTILS_H 45#define _ACUTILS_H 46 47 48extern const UINT8 AcpiGbl_ResourceAmlSizes[]; 49extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[]; 50 51/* Strings used by the disassembler and debugger resource dump routines */ 52 53#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) 54 55extern const char *AcpiGbl_BmDecode[]; 56extern const char *AcpiGbl_ConfigDecode[]; 57extern const char *AcpiGbl_ConsumeDecode[]; 58extern const char *AcpiGbl_DecDecode[]; 59extern const char *AcpiGbl_HeDecode[]; 60extern const char *AcpiGbl_IoDecode[]; 61extern const char *AcpiGbl_LlDecode[]; 62extern const char *AcpiGbl_MaxDecode[]; 63extern const char *AcpiGbl_MemDecode[]; 64extern const char *AcpiGbl_MinDecode[]; 65extern const char *AcpiGbl_MtpDecode[]; 66extern const char *AcpiGbl_RngDecode[]; 67extern const char *AcpiGbl_RwDecode[]; 68extern const char *AcpiGbl_ShrDecode[]; 69extern const char *AcpiGbl_SizDecode[]; 70extern const char *AcpiGbl_TrsDecode[]; 71extern const char *AcpiGbl_TtpDecode[]; 72extern const char *AcpiGbl_TypDecode[]; 73extern const char *AcpiGbl_PpcDecode[]; 74extern const char *AcpiGbl_IorDecode[]; 75extern const char *AcpiGbl_DtsDecode[]; 76extern const char *AcpiGbl_CtDecode[]; 77extern const char *AcpiGbl_SbtDecode[]; 78extern const char *AcpiGbl_AmDecode[]; 79extern const char *AcpiGbl_SmDecode[]; 80extern const char *AcpiGbl_WmDecode[]; 81extern const char *AcpiGbl_CphDecode[]; 82extern const char *AcpiGbl_CpoDecode[]; 83extern const char *AcpiGbl_DpDecode[]; 84extern const char *AcpiGbl_EdDecode[]; 85extern const char *AcpiGbl_BpbDecode[]; 86extern const char *AcpiGbl_SbDecode[]; 87extern const char *AcpiGbl_FcDecode[]; 88extern const char *AcpiGbl_PtDecode[]; 89#endif 90 91/* Types for Resource descriptor entries */ 92 93#define ACPI_INVALID_RESOURCE 0 94#define ACPI_FIXED_LENGTH 1 95#define ACPI_VARIABLE_LENGTH 2 96#define ACPI_SMALL_VARIABLE_LENGTH 3 97 98typedef 99ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( 100 UINT8 *Aml, 101 UINT32 Length, 102 UINT32 Offset, 103 UINT8 ResourceIndex, 104 void *Context); 105 106typedef 107ACPI_STATUS (*ACPI_PKG_CALLBACK) ( 108 UINT8 ObjectType, 109 ACPI_OPERAND_OBJECT *SourceObject, 110 ACPI_GENERIC_STATE *State, 111 void *Context); 112 113typedef struct acpi_pkg_info 114{ 115 UINT8 *FreeSpace; 116 ACPI_SIZE Length; 117 UINT32 ObjectSpace; 118 UINT32 NumPackages; 119 120} ACPI_PKG_INFO; 121 122#define REF_INCREMENT (UINT16) 0 123#define REF_DECREMENT (UINT16) 1 124#define REF_FORCE_DELETE (UINT16) 2 125 126/* AcpiUtDumpBuffer */ 127 128#define DB_BYTE_DISPLAY 1 129#define DB_WORD_DISPLAY 2 130#define DB_DWORD_DISPLAY 4 131#define DB_QWORD_DISPLAY 8 132 133/* 134 * utglobal - Global data structures and procedures 135 */ 136ACPI_STATUS 137AcpiUtInitGlobals ( 138 void); 139 140#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 141 142char * 143AcpiUtGetMutexName ( 144 UINT32 MutexId); 145 146const char * 147AcpiUtGetNotifyName ( 148 UINT32 NotifyValue); 149 150#endif 151 152char * 153AcpiUtGetTypeName ( 154 ACPI_OBJECT_TYPE Type); 155 156char * 157AcpiUtGetNodeName ( 158 void *Object); 159 160char * 161AcpiUtGetDescriptorName ( 162 void *Object); 163 164const char * 165AcpiUtGetReferenceName ( 166 ACPI_OPERAND_OBJECT *Object); 167 168char * 169AcpiUtGetObjectTypeName ( 170 ACPI_OPERAND_OBJECT *ObjDesc); 171 172char * 173AcpiUtGetRegionName ( 174 UINT8 SpaceId); 175 176char * 177AcpiUtGetEventName ( 178 UINT32 EventId); 179 180char 181AcpiUtHexToAsciiChar ( 182 UINT64 Integer, 183 UINT32 Position); 184 185BOOLEAN 186AcpiUtValidObjectType ( 187 ACPI_OBJECT_TYPE Type); 188 189 190/* 191 * utinit - miscellaneous initialization and shutdown 192 */ 193ACPI_STATUS 194AcpiUtHardwareInitialize ( 195 void); 196 197void 198AcpiUtSubsystemShutdown ( 199 void); 200 201 202/* 203 * utclib - Local implementations of C library functions 204 */ 205#ifndef ACPI_USE_SYSTEM_CLIBRARY 206 207ACPI_SIZE 208AcpiUtStrlen ( 209 const char *String); 210 211char * 212AcpiUtStrcpy ( 213 char *DstString, 214 const char *SrcString); 215 216char * 217AcpiUtStrncpy ( 218 char *DstString, 219 const char *SrcString, 220 ACPI_SIZE Count); 221 222int 223AcpiUtMemcmp ( 224 const char *Buffer1, 225 const char *Buffer2, 226 ACPI_SIZE Count); 227 228int 229AcpiUtStrncmp ( 230 const char *String1, 231 const char *String2, 232 ACPI_SIZE Count); 233 234int 235AcpiUtStrcmp ( 236 const char *String1, 237 const char *String2); 238 239char * 240AcpiUtStrcat ( 241 char *DstString, 242 const char *SrcString); 243 244char * 245AcpiUtStrncat ( 246 char *DstString, 247 const char *SrcString, 248 ACPI_SIZE Count); 249 250UINT32 251AcpiUtStrtoul ( 252 const char *String, 253 char **Terminator, 254 UINT32 Base); 255 256char * 257AcpiUtStrstr ( 258 char *String1, 259 char *String2); 260 261void * 262AcpiUtMemcpy ( 263 void *Dest, 264 const void *Src, 265 ACPI_SIZE Count); 266 267void * 268AcpiUtMemset ( 269 void *Dest, 270 UINT8 Value, 271 ACPI_SIZE Count); 272 273int 274AcpiUtToUpper ( 275 int c); 276 277int 278AcpiUtToLower ( 279 int c); 280 281extern const UINT8 _acpi_ctype[]; 282 283#define _ACPI_XA 0x00 /* extra alphabetic - not supported */ 284#define _ACPI_XS 0x40 /* extra space */ 285#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ 286#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ 287#define _ACPI_DI 0x04 /* '0'-'9' */ 288#define _ACPI_LO 0x02 /* 'a'-'z' */ 289#define _ACPI_PU 0x10 /* punctuation */ 290#define _ACPI_SP 0x08 /* space */ 291#define _ACPI_UP 0x01 /* 'A'-'Z' */ 292#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ 293 294#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI)) 295#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP)) 296#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD)) 297#define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP)) 298#define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO)) 299#define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU)) 300#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) 301 302#endif /* !ACPI_USE_SYSTEM_CLIBRARY */ 303 304#define ACPI_IS_ASCII(c) ((c) < 0x80) 305 306 307/* 308 * utcopy - Object construction and conversion interfaces 309 */ 310ACPI_STATUS 311AcpiUtBuildSimpleObject( 312 ACPI_OPERAND_OBJECT *Obj, 313 ACPI_OBJECT *UserObj, 314 UINT8 *DataSpace, 315 UINT32 *BufferSpaceUsed); 316 317ACPI_STATUS 318AcpiUtBuildPackageObject ( 319 ACPI_OPERAND_OBJECT *Obj, 320 UINT8 *Buffer, 321 UINT32 *SpaceUsed); 322 323ACPI_STATUS 324AcpiUtCopyIobjectToEobject ( 325 ACPI_OPERAND_OBJECT *Obj, 326 ACPI_BUFFER *RetBuffer); 327 328ACPI_STATUS 329AcpiUtCopyEobjectToIobject ( 330 ACPI_OBJECT *Obj, 331 ACPI_OPERAND_OBJECT **InternalObj); 332 333ACPI_STATUS 334AcpiUtCopyISimpleToIsimple ( 335 ACPI_OPERAND_OBJECT *SourceObj, 336 ACPI_OPERAND_OBJECT *DestObj); 337 338ACPI_STATUS 339AcpiUtCopyIobjectToIobject ( 340 ACPI_OPERAND_OBJECT *SourceDesc, 341 ACPI_OPERAND_OBJECT **DestDesc, 342 ACPI_WALK_STATE *WalkState); 343 344 345/* 346 * utcreate - Object creation 347 */ 348ACPI_STATUS 349AcpiUtUpdateObjectReference ( 350 ACPI_OPERAND_OBJECT *Object, 351 UINT16 Action); 352 353 354/* 355 * utdebug - Debug interfaces 356 */ 357void 358AcpiUtInitStackPtrTrace ( 359 void); 360 361void 362AcpiUtTrackStackPtr ( 363 void); 364 365void 366AcpiUtTrace ( 367 UINT32 LineNumber, 368 const char *FunctionName, 369 const char *ModuleName, 370 UINT32 ComponentId); 371 372void 373AcpiUtTracePtr ( 374 UINT32 LineNumber, 375 const char *FunctionName, 376 const char *ModuleName, 377 UINT32 ComponentId, 378 void *Pointer); 379 380void 381AcpiUtTraceU32 ( 382 UINT32 LineNumber, 383 const char *FunctionName, 384 const char *ModuleName, 385 UINT32 ComponentId, 386 UINT32 Integer); 387 388void 389AcpiUtTraceStr ( 390 UINT32 LineNumber, 391 const char *FunctionName, 392 const char *ModuleName, 393 UINT32 ComponentId, 394 char *String); 395 396void 397AcpiUtExit ( 398 UINT32 LineNumber, 399 const char *FunctionName, 400 const char *ModuleName, 401 UINT32 ComponentId); 402 403void 404AcpiUtStatusExit ( 405 UINT32 LineNumber, 406 const char *FunctionName, 407 const char *ModuleName, 408 UINT32 ComponentId, 409 ACPI_STATUS Status); 410 411void 412AcpiUtValueExit ( 413 UINT32 LineNumber, 414 const char *FunctionName, 415 const char *ModuleName, 416 UINT32 ComponentId, 417 UINT64 Value); 418 419void 420AcpiUtPtrExit ( 421 UINT32 LineNumber, 422 const char *FunctionName, 423 const char *ModuleName, 424 UINT32 ComponentId, 425 UINT8 *Ptr); 426 427void 428AcpiUtDebugDumpBuffer ( 429 UINT8 *Buffer, 430 UINT32 Count, 431 UINT32 Display, 432 UINT32 ComponentId); 433 434void 435AcpiUtDumpBuffer ( 436 UINT8 *Buffer, 437 UINT32 Count, 438 UINT32 Display, 439 UINT32 Offset); 440 441void 442AcpiUtReportError ( 443 char *ModuleName, 444 UINT32 LineNumber); 445 446void 447AcpiUtReportInfo ( 448 char *ModuleName, 449 UINT32 LineNumber); 450 451void 452AcpiUtReportWarning ( 453 char *ModuleName, 454 UINT32 LineNumber); 455 456/* 457 * utdelete - Object deletion and reference counts 458 */ 459void 460AcpiUtAddReference ( 461 ACPI_OPERAND_OBJECT *Object); 462 463void 464AcpiUtRemoveReference ( 465 ACPI_OPERAND_OBJECT *Object); 466 467void 468AcpiUtDeleteInternalPackageObject ( 469 ACPI_OPERAND_OBJECT *Object); 470 471void 472AcpiUtDeleteInternalSimpleObject ( 473 ACPI_OPERAND_OBJECT *Object); 474 475void 476AcpiUtDeleteInternalObjectList ( 477 ACPI_OPERAND_OBJECT **ObjList); 478 479 480/* 481 * uteval - object evaluation 482 */ 483ACPI_STATUS 484AcpiUtEvaluateObject ( 485 ACPI_NAMESPACE_NODE *PrefixNode, 486 char *Path, 487 UINT32 ExpectedReturnBtypes, 488 ACPI_OPERAND_OBJECT **ReturnDesc); 489 490ACPI_STATUS 491AcpiUtEvaluateNumericObject ( 492 char *ObjectName, 493 ACPI_NAMESPACE_NODE *DeviceNode, 494 UINT64 *Value); 495 496ACPI_STATUS 497AcpiUtExecute_STA ( 498 ACPI_NAMESPACE_NODE *DeviceNode, 499 UINT32 *StatusFlags); 500 501ACPI_STATUS 502AcpiUtExecutePowerMethods ( 503 ACPI_NAMESPACE_NODE *DeviceNode, 504 const char **MethodNames, 505 UINT8 MethodCount, 506 UINT8 *OutValues); 507 508 509/* 510 * utids - device ID support 511 */ 512ACPI_STATUS 513AcpiUtExecute_HID ( 514 ACPI_NAMESPACE_NODE *DeviceNode, 515 ACPI_PNP_DEVICE_ID **ReturnId); 516 517ACPI_STATUS 518AcpiUtExecute_UID ( 519 ACPI_NAMESPACE_NODE *DeviceNode, 520 ACPI_PNP_DEVICE_ID **ReturnId); 521 522ACPI_STATUS 523AcpiUtExecute_SUB ( 524 ACPI_NAMESPACE_NODE *DeviceNode, 525 ACPI_PNP_DEVICE_ID **ReturnId); 526 527ACPI_STATUS 528AcpiUtExecute_CID ( 529 ACPI_NAMESPACE_NODE *DeviceNode, 530 ACPI_PNP_DEVICE_ID_LIST **ReturnCidList); 531 532 533/* 534 * utlock - reader/writer locks 535 */ 536ACPI_STATUS 537AcpiUtCreateRwLock ( 538 ACPI_RW_LOCK *Lock); 539 540void 541AcpiUtDeleteRwLock ( 542 ACPI_RW_LOCK *Lock); 543 544ACPI_STATUS 545AcpiUtAcquireReadLock ( 546 ACPI_RW_LOCK *Lock); 547 548ACPI_STATUS 549AcpiUtReleaseReadLock ( 550 ACPI_RW_LOCK *Lock); 551 552ACPI_STATUS 553AcpiUtAcquireWriteLock ( 554 ACPI_RW_LOCK *Lock); 555 556void 557AcpiUtReleaseWriteLock ( 558 ACPI_RW_LOCK *Lock); 559 560 561/* 562 * utobject - internal object create/delete/cache routines 563 */ 564ACPI_OPERAND_OBJECT * 565AcpiUtCreateInternalObjectDbg ( 566 const char *ModuleName, 567 UINT32 LineNumber, 568 UINT32 ComponentId, 569 ACPI_OBJECT_TYPE Type); 570 571void * 572AcpiUtAllocateObjectDescDbg ( 573 const char *ModuleName, 574 UINT32 LineNumber, 575 UINT32 ComponentId); 576 577#define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) 578#define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) 579 580void 581AcpiUtDeleteObjectDesc ( 582 ACPI_OPERAND_OBJECT *Object); 583 584BOOLEAN 585AcpiUtValidInternalObject ( 586 void *Object); 587 588ACPI_OPERAND_OBJECT * 589AcpiUtCreatePackageObject ( 590 UINT32 Count); 591 592ACPI_OPERAND_OBJECT * 593AcpiUtCreateIntegerObject ( 594 UINT64 Value); 595 596ACPI_OPERAND_OBJECT * 597AcpiUtCreateBufferObject ( 598 ACPI_SIZE BufferSize); 599 600ACPI_OPERAND_OBJECT * 601AcpiUtCreateStringObject ( 602 ACPI_SIZE StringSize); 603 604ACPI_STATUS 605AcpiUtGetObjectSize( 606 ACPI_OPERAND_OBJECT *Obj, 607 ACPI_SIZE *ObjLength); 608 609 610/* 611 * utosi - Support for the _OSI predefined control method 612 */ 613ACPI_STATUS 614AcpiUtInitializeInterfaces ( 615 void); 616 617void 618AcpiUtInterfaceTerminate ( 619 void); 620 621ACPI_STATUS 622AcpiUtInstallInterface ( 623 ACPI_STRING InterfaceName); 624 625ACPI_STATUS 626AcpiUtRemoveInterface ( 627 ACPI_STRING InterfaceName); 628 629ACPI_INTERFACE_INFO * 630AcpiUtGetInterface ( 631 ACPI_STRING InterfaceName); 632 633ACPI_STATUS 634AcpiUtOsiImplementation ( 635 ACPI_WALK_STATE *WalkState); 636 637 638/* 639 * utstate - Generic state creation/cache routines 640 */ 641void 642AcpiUtPushGenericState ( 643 ACPI_GENERIC_STATE **ListHead, 644 ACPI_GENERIC_STATE *State); 645 646ACPI_GENERIC_STATE * 647AcpiUtPopGenericState ( 648 ACPI_GENERIC_STATE **ListHead); 649 650 651ACPI_GENERIC_STATE * 652AcpiUtCreateGenericState ( 653 void); 654 655ACPI_THREAD_STATE * 656AcpiUtCreateThreadState ( 657 void); 658 659ACPI_GENERIC_STATE * 660AcpiUtCreateUpdateState ( 661 ACPI_OPERAND_OBJECT *Object, 662 UINT16 Action); 663 664ACPI_GENERIC_STATE * 665AcpiUtCreatePkgState ( 666 void *InternalObject, 667 void *ExternalObject, 668 UINT16 Index); 669 670ACPI_STATUS 671AcpiUtCreateUpdateStateAndPush ( 672 ACPI_OPERAND_OBJECT *Object, 673 UINT16 Action, 674 ACPI_GENERIC_STATE **StateList); 675 676ACPI_STATUS 677AcpiUtCreatePkgStateAndPush ( 678 void *InternalObject, 679 void *ExternalObject, 680 UINT16 Index, 681 ACPI_GENERIC_STATE **StateList); 682 683ACPI_GENERIC_STATE * 684AcpiUtCreateControlState ( 685 void); 686 687void 688AcpiUtDeleteGenericState ( 689 ACPI_GENERIC_STATE *State); 690 691 692/* 693 * utmath 694 */ 695ACPI_STATUS 696AcpiUtDivide ( 697 UINT64 InDividend, 698 UINT64 InDivisor, 699 UINT64 *OutQuotient, 700 UINT64 *OutRemainder); 701 702ACPI_STATUS 703AcpiUtShortDivide ( 704 UINT64 InDividend, 705 UINT32 Divisor, 706 UINT64 *OutQuotient, 707 UINT32 *OutRemainder); 708 709/* 710 * utmisc 711 */ 712void 713UtConvertBackslashes ( 714 char *Pathname); 715 716const char * 717AcpiUtValidateException ( 718 ACPI_STATUS Status); 719 720BOOLEAN 721AcpiUtIsPciRootBridge ( 722 char *Id); 723 724BOOLEAN 725AcpiUtIsAmlTable ( 726 ACPI_TABLE_HEADER *Table); 727 728ACPI_STATUS 729AcpiUtAllocateOwnerId ( 730 ACPI_OWNER_ID *OwnerId); 731 732void 733AcpiUtReleaseOwnerId ( 734 ACPI_OWNER_ID *OwnerId); 735 736ACPI_STATUS 737AcpiUtWalkPackageTree ( 738 ACPI_OPERAND_OBJECT *SourceObject, 739 void *TargetObject, 740 ACPI_PKG_CALLBACK WalkCallback, 741 void *Context); 742 743void 744AcpiUtStrupr ( 745 char *SrcString); 746 747void 748AcpiUtStrlwr ( 749 char *SrcString); 750 751int 752AcpiUtStricmp ( 753 char *String1, 754 char *String2); 755 756void 757AcpiUtPrintString ( 758 char *String, 759 UINT8 MaxLength); 760 761BOOLEAN 762AcpiUtValidAcpiName ( 763 UINT32 Name); 764 765void 766AcpiUtRepairName ( 767 char *Name); 768 769BOOLEAN 770AcpiUtValidAcpiChar ( 771 char Character, 772 UINT32 Position); 773 774ACPI_STATUS 775AcpiUtStrtoul64 ( 776 char *String, 777 UINT32 Base, 778 UINT64 *RetInteger); 779 780/* Values for Base above (16=Hex, 10=Decimal) */ 781 782#define ACPI_ANY_BASE 0 783 784UINT32 785AcpiUtDwordByteSwap ( 786 UINT32 Value); 787 788void 789AcpiUtSetIntegerWidth ( 790 UINT8 Revision); 791 792#ifdef ACPI_DEBUG_OUTPUT 793void 794AcpiUtDisplayInitPathname ( 795 UINT8 Type, 796 ACPI_NAMESPACE_NODE *ObjHandle, 797 char *Path); 798#endif 799 800 801/* 802 * utresrc 803 */ 804ACPI_STATUS 805AcpiUtWalkAmlResources ( 806 ACPI_WALK_STATE *WalkState, 807 UINT8 *Aml, 808 ACPI_SIZE AmlLength, 809 ACPI_WALK_AML_CALLBACK UserFunction, 810 void *Context); 811 812ACPI_STATUS 813AcpiUtValidateResource ( 814 ACPI_WALK_STATE *WalkState, 815 void *Aml, 816 UINT8 *ReturnIndex); 817 818UINT32 819AcpiUtGetDescriptorLength ( 820 void *Aml); 821 822UINT16 823AcpiUtGetResourceLength ( 824 void *Aml); 825 826UINT8 827AcpiUtGetResourceHeaderLength ( 828 void *Aml); 829 830UINT8 831AcpiUtGetResourceType ( 832 void *Aml); 833 834ACPI_STATUS 835AcpiUtGetResourceEndTag ( 836 ACPI_OPERAND_OBJECT *ObjDesc, 837 UINT8 **EndTag); 838 839 840/* 841 * utmutex - mutex support 842 */ 843ACPI_STATUS 844AcpiUtMutexInitialize ( 845 void); 846 847void 848AcpiUtMutexTerminate ( 849 void); 850 851ACPI_STATUS 852AcpiUtAcquireMutex ( 853 ACPI_MUTEX_HANDLE MutexId); 854 855ACPI_STATUS 856AcpiUtReleaseMutex ( 857 ACPI_MUTEX_HANDLE MutexId); 858 859 860/* 861 * utalloc - memory allocation and object caching 862 */ 863ACPI_STATUS 864AcpiUtCreateCaches ( 865 void); 866 867ACPI_STATUS 868AcpiUtDeleteCaches ( 869 void); 870 871ACPI_STATUS 872AcpiUtValidateBuffer ( 873 ACPI_BUFFER *Buffer); 874 875ACPI_STATUS 876AcpiUtInitializeBuffer ( 877 ACPI_BUFFER *Buffer, 878 ACPI_SIZE RequiredLength); 879 880void * 881AcpiUtAllocate ( 882 ACPI_SIZE Size, 883 UINT32 Component, 884 const char *Module, 885 UINT32 Line); 886 887void * 888AcpiUtAllocateZeroed ( 889 ACPI_SIZE Size, 890 UINT32 Component, 891 const char *Module, 892 UINT32 Line); 893 894#ifdef ACPI_DBG_TRACK_ALLOCATIONS 895void * 896AcpiUtAllocateAndTrack ( 897 ACPI_SIZE Size, 898 UINT32 Component, 899 const char *Module, 900 UINT32 Line); 901 902void * 903AcpiUtAllocateZeroedAndTrack ( 904 ACPI_SIZE Size, 905 UINT32 Component, 906 const char *Module, 907 UINT32 Line); 908 909void 910AcpiUtFreeAndTrack ( 911 void *Address, 912 UINT32 Component, 913 const char *Module, 914 UINT32 Line); 915 916void 917AcpiUtDumpAllocationInfo ( 918 void); 919 920void 921AcpiUtDumpAllocations ( 922 UINT32 Component, 923 const char *Module); 924 925ACPI_STATUS 926AcpiUtCreateList ( 927 char *ListName, 928 UINT16 ObjectSize, 929 ACPI_MEMORY_LIST **ReturnCache); 930 931#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 932 933/* 934 * utaddress - address range check 935 */ 936ACPI_STATUS 937AcpiUtAddAddressRange ( 938 ACPI_ADR_SPACE_TYPE SpaceId, 939 ACPI_PHYSICAL_ADDRESS Address, 940 UINT32 Length, 941 ACPI_NAMESPACE_NODE *RegionNode); 942 943void 944AcpiUtRemoveAddressRange ( 945 ACPI_ADR_SPACE_TYPE SpaceId, 946 ACPI_NAMESPACE_NODE *RegionNode); 947 948UINT32 949AcpiUtCheckAddressRange ( 950 ACPI_ADR_SPACE_TYPE SpaceId, 951 ACPI_PHYSICAL_ADDRESS Address, 952 UINT32 Length, 953 BOOLEAN Warn); 954 955void 956AcpiUtDeleteAddressLists ( 957 void); 958 959/* 960 * utxferror - various error/warning output functions 961 */ 962void ACPI_INTERNAL_VAR_XFACE 963AcpiUtPredefinedWarning ( 964 const char *ModuleName, 965 UINT32 LineNumber, 966 char *Pathname, 967 UINT8 NodeFlags, 968 const char *Format, 969 ...); 970 971void ACPI_INTERNAL_VAR_XFACE 972AcpiUtPredefinedInfo ( 973 const char *ModuleName, 974 UINT32 LineNumber, 975 char *Pathname, 976 UINT8 NodeFlags, 977 const char *Format, 978 ...); 979 980void 981AcpiUtNamespaceError ( 982 const char *ModuleName, 983 UINT32 LineNumber, 984 const char *InternalName, 985 ACPI_STATUS LookupStatus); 986 987void 988AcpiUtMethodError ( 989 const char *ModuleName, 990 UINT32 LineNumber, 991 const char *Message, 992 ACPI_NAMESPACE_NODE *Node, 993 const char *Path, 994 ACPI_STATUS LookupStatus); 995 996#endif /* _ACUTILS_H */ 997