1 /****************************************************************************** 2 * 3 * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2016, 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 48 extern const UINT8 AcpiGbl_ResourceAmlSizes[]; 49 extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[]; 50 51 /* Strings used by the disassembler and debugger resource dump routines */ 52 53 #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) 54 55 extern const char *AcpiGbl_BmDecode[]; 56 extern const char *AcpiGbl_ConfigDecode[]; 57 extern const char *AcpiGbl_ConsumeDecode[]; 58 extern const char *AcpiGbl_DecDecode[]; 59 extern const char *AcpiGbl_HeDecode[]; 60 extern const char *AcpiGbl_IoDecode[]; 61 extern const char *AcpiGbl_LlDecode[]; 62 extern const char *AcpiGbl_MaxDecode[]; 63 extern const char *AcpiGbl_MemDecode[]; 64 extern const char *AcpiGbl_MinDecode[]; 65 extern const char *AcpiGbl_MtpDecode[]; 66 extern const char *AcpiGbl_RngDecode[]; 67 extern const char *AcpiGbl_RwDecode[]; 68 extern const char *AcpiGbl_ShrDecode[]; 69 extern const char *AcpiGbl_SizDecode[]; 70 extern const char *AcpiGbl_TrsDecode[]; 71 extern const char *AcpiGbl_TtpDecode[]; 72 extern const char *AcpiGbl_TypDecode[]; 73 extern const char *AcpiGbl_PpcDecode[]; 74 extern const char *AcpiGbl_IorDecode[]; 75 extern const char *AcpiGbl_DtsDecode[]; 76 extern const char *AcpiGbl_CtDecode[]; 77 extern const char *AcpiGbl_SbtDecode[]; 78 extern const char *AcpiGbl_AmDecode[]; 79 extern const char *AcpiGbl_SmDecode[]; 80 extern const char *AcpiGbl_WmDecode[]; 81 extern const char *AcpiGbl_CphDecode[]; 82 extern const char *AcpiGbl_CpoDecode[]; 83 extern const char *AcpiGbl_DpDecode[]; 84 extern const char *AcpiGbl_EdDecode[]; 85 extern const char *AcpiGbl_BpbDecode[]; 86 extern const char *AcpiGbl_SbDecode[]; 87 extern const char *AcpiGbl_FcDecode[]; 88 extern const char *AcpiGbl_PtDecode[]; 89 #endif 90 91 /* 92 * For the iASL compiler case, the output is redirected to stderr so that 93 * any of the various ACPI errors and warnings do not appear in the output 94 * files, for either the compiler or disassembler portions of the tool. 95 */ 96 #ifdef ACPI_ASL_COMPILER 97 98 #include <stdio.h> 99 100 #define ACPI_MSG_REDIRECT_BEGIN \ 101 FILE *OutputFile = AcpiGbl_OutputFile; \ 102 AcpiOsRedirectOutput (stderr); 103 104 #define ACPI_MSG_REDIRECT_END \ 105 AcpiOsRedirectOutput (OutputFile); 106 107 #else 108 /* 109 * non-iASL case - no redirection, nothing to do 110 */ 111 #define ACPI_MSG_REDIRECT_BEGIN 112 #define ACPI_MSG_REDIRECT_END 113 #endif 114 115 /* 116 * Common error message prefixes 117 */ 118 #define ACPI_MSG_ERROR "ACPI Error: " 119 #define ACPI_MSG_EXCEPTION "ACPI Exception: " 120 #define ACPI_MSG_WARNING "ACPI Warning: " 121 #define ACPI_MSG_INFO "ACPI: " 122 123 #define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): " 124 #define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): " 125 126 /* 127 * Common message suffix 128 */ 129 #define ACPI_MSG_SUFFIX \ 130 AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber) 131 132 133 /* Types for Resource descriptor entries */ 134 135 #define ACPI_INVALID_RESOURCE 0 136 #define ACPI_FIXED_LENGTH 1 137 #define ACPI_VARIABLE_LENGTH 2 138 #define ACPI_SMALL_VARIABLE_LENGTH 3 139 140 typedef 141 ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( 142 UINT8 *Aml, 143 UINT32 Length, 144 UINT32 Offset, 145 UINT8 ResourceIndex, 146 void **Context); 147 148 typedef 149 ACPI_STATUS (*ACPI_PKG_CALLBACK) ( 150 UINT8 ObjectType, 151 ACPI_OPERAND_OBJECT *SourceObject, 152 ACPI_GENERIC_STATE *State, 153 void *Context); 154 155 typedef struct acpi_pkg_info 156 { 157 UINT8 *FreeSpace; 158 ACPI_SIZE Length; 159 UINT32 ObjectSpace; 160 UINT32 NumPackages; 161 162 } ACPI_PKG_INFO; 163 164 /* Object reference counts */ 165 166 #define REF_INCREMENT (UINT16) 0 167 #define REF_DECREMENT (UINT16) 1 168 169 /* AcpiUtDumpBuffer */ 170 171 #define DB_BYTE_DISPLAY 1 172 #define DB_WORD_DISPLAY 2 173 #define DB_DWORD_DISPLAY 4 174 #define DB_QWORD_DISPLAY 8 175 176 177 /* 178 * utascii - ASCII utilities 179 */ 180 BOOLEAN 181 AcpiUtValidNameseg ( 182 char *Signature); 183 184 BOOLEAN 185 AcpiUtValidNameChar ( 186 char Character, 187 UINT32 Position); 188 189 void 190 AcpiUtCheckAndRepairAscii ( 191 UINT8 *Name, 192 char *RepairedName, 193 UINT32 Count); 194 195 196 /* 197 * utnonansi - Non-ANSI C library functions 198 */ 199 void 200 AcpiUtStrupr ( 201 char *SrcString); 202 203 void 204 AcpiUtStrlwr ( 205 char *SrcString); 206 207 int 208 AcpiUtStricmp ( 209 char *String1, 210 char *String2); 211 212 ACPI_STATUS 213 AcpiUtStrtoul64 ( 214 char *String, 215 UINT32 Base, 216 UINT32 MaxIntegerByteWidth, 217 UINT64 *RetInteger); 218 219 /* Values for MaxIntegerByteWidth above */ 220 221 #define ACPI_MAX32_BYTE_WIDTH 4 222 #define ACPI_MAX64_BYTE_WIDTH 8 223 224 225 /* 226 * utglobal - Global data structures and procedures 227 */ 228 ACPI_STATUS 229 AcpiUtInitGlobals ( 230 void); 231 232 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 233 234 const char * 235 AcpiUtGetMutexName ( 236 UINT32 MutexId); 237 238 const char * 239 AcpiUtGetNotifyName ( 240 UINT32 NotifyValue, 241 ACPI_OBJECT_TYPE Type); 242 #endif 243 244 const char * 245 AcpiUtGetTypeName ( 246 ACPI_OBJECT_TYPE Type); 247 248 const char * 249 AcpiUtGetNodeName ( 250 void *Object); 251 252 const char * 253 AcpiUtGetDescriptorName ( 254 void *Object); 255 256 const char * 257 AcpiUtGetReferenceName ( 258 ACPI_OPERAND_OBJECT *Object); 259 260 const char * 261 AcpiUtGetObjectTypeName ( 262 ACPI_OPERAND_OBJECT *ObjDesc); 263 264 const char * 265 AcpiUtGetRegionName ( 266 UINT8 SpaceId); 267 268 const char * 269 AcpiUtGetEventName ( 270 UINT32 EventId); 271 272 char 273 AcpiUtHexToAsciiChar ( 274 UINT64 Integer, 275 UINT32 Position); 276 277 UINT8 278 AcpiUtAsciiCharToHex ( 279 int HexChar); 280 281 BOOLEAN 282 AcpiUtValidObjectType ( 283 ACPI_OBJECT_TYPE Type); 284 285 286 /* 287 * utinit - miscellaneous initialization and shutdown 288 */ 289 ACPI_STATUS 290 AcpiUtHardwareInitialize ( 291 void); 292 293 void 294 AcpiUtSubsystemShutdown ( 295 void); 296 297 298 /* 299 * utcopy - Object construction and conversion interfaces 300 */ 301 ACPI_STATUS 302 AcpiUtBuildSimpleObject( 303 ACPI_OPERAND_OBJECT *Obj, 304 ACPI_OBJECT *UserObj, 305 UINT8 *DataSpace, 306 UINT32 *BufferSpaceUsed); 307 308 ACPI_STATUS 309 AcpiUtBuildPackageObject ( 310 ACPI_OPERAND_OBJECT *Obj, 311 UINT8 *Buffer, 312 UINT32 *SpaceUsed); 313 314 ACPI_STATUS 315 AcpiUtCopyIobjectToEobject ( 316 ACPI_OPERAND_OBJECT *Obj, 317 ACPI_BUFFER *RetBuffer); 318 319 ACPI_STATUS 320 AcpiUtCopyEobjectToIobject ( 321 ACPI_OBJECT *Obj, 322 ACPI_OPERAND_OBJECT **InternalObj); 323 324 ACPI_STATUS 325 AcpiUtCopyISimpleToIsimple ( 326 ACPI_OPERAND_OBJECT *SourceObj, 327 ACPI_OPERAND_OBJECT *DestObj); 328 329 ACPI_STATUS 330 AcpiUtCopyIobjectToIobject ( 331 ACPI_OPERAND_OBJECT *SourceDesc, 332 ACPI_OPERAND_OBJECT **DestDesc, 333 ACPI_WALK_STATE *WalkState); 334 335 336 /* 337 * utcreate - Object creation 338 */ 339 ACPI_STATUS 340 AcpiUtUpdateObjectReference ( 341 ACPI_OPERAND_OBJECT *Object, 342 UINT16 Action); 343 344 345 /* 346 * utdebug - Debug interfaces 347 */ 348 void 349 AcpiUtInitStackPtrTrace ( 350 void); 351 352 void 353 AcpiUtTrackStackPtr ( 354 void); 355 356 void 357 AcpiUtTrace ( 358 UINT32 LineNumber, 359 const char *FunctionName, 360 const char *ModuleName, 361 UINT32 ComponentId); 362 363 void 364 AcpiUtTracePtr ( 365 UINT32 LineNumber, 366 const char *FunctionName, 367 const char *ModuleName, 368 UINT32 ComponentId, 369 const void *Pointer); 370 371 void 372 AcpiUtTraceU32 ( 373 UINT32 LineNumber, 374 const char *FunctionName, 375 const char *ModuleName, 376 UINT32 ComponentId, 377 UINT32 Integer); 378 379 void 380 AcpiUtTraceStr ( 381 UINT32 LineNumber, 382 const char *FunctionName, 383 const char *ModuleName, 384 UINT32 ComponentId, 385 const char *String); 386 387 void 388 AcpiUtExit ( 389 UINT32 LineNumber, 390 const char *FunctionName, 391 const char *ModuleName, 392 UINT32 ComponentId); 393 394 void 395 AcpiUtStatusExit ( 396 UINT32 LineNumber, 397 const char *FunctionName, 398 const char *ModuleName, 399 UINT32 ComponentId, 400 ACPI_STATUS Status); 401 402 void 403 AcpiUtValueExit ( 404 UINT32 LineNumber, 405 const char *FunctionName, 406 const char *ModuleName, 407 UINT32 ComponentId, 408 UINT64 Value); 409 410 void 411 AcpiUtPtrExit ( 412 UINT32 LineNumber, 413 const char *FunctionName, 414 const char *ModuleName, 415 UINT32 ComponentId, 416 UINT8 *Ptr); 417 418 void 419 AcpiUtDebugDumpBuffer ( 420 UINT8 *Buffer, 421 UINT32 Count, 422 UINT32 Display, 423 UINT32 ComponentId); 424 425 void 426 AcpiUtDumpBuffer ( 427 UINT8 *Buffer, 428 UINT32 Count, 429 UINT32 Display, 430 UINT32 Offset); 431 432 #ifdef ACPI_APPLICATION 433 void 434 AcpiUtDumpBufferToFile ( 435 ACPI_FILE File, 436 UINT8 *Buffer, 437 UINT32 Count, 438 UINT32 Display, 439 UINT32 BaseOffset); 440 #endif 441 442 void 443 AcpiUtReportError ( 444 char *ModuleName, 445 UINT32 LineNumber); 446 447 void 448 AcpiUtReportInfo ( 449 char *ModuleName, 450 UINT32 LineNumber); 451 452 void 453 AcpiUtReportWarning ( 454 char *ModuleName, 455 UINT32 LineNumber); 456 457 458 /* 459 * utdelete - Object deletion and reference counts 460 */ 461 void 462 AcpiUtAddReference ( 463 ACPI_OPERAND_OBJECT *Object); 464 465 void 466 AcpiUtRemoveReference ( 467 ACPI_OPERAND_OBJECT *Object); 468 469 void 470 AcpiUtDeleteInternalPackageObject ( 471 ACPI_OPERAND_OBJECT *Object); 472 473 void 474 AcpiUtDeleteInternalSimpleObject ( 475 ACPI_OPERAND_OBJECT *Object); 476 477 void 478 AcpiUtDeleteInternalObjectList ( 479 ACPI_OPERAND_OBJECT **ObjList); 480 481 482 /* 483 * uteval - object evaluation 484 */ 485 ACPI_STATUS 486 AcpiUtEvaluateObject ( 487 ACPI_NAMESPACE_NODE *PrefixNode, 488 const char *Path, 489 UINT32 ExpectedReturnBtypes, 490 ACPI_OPERAND_OBJECT **ReturnDesc); 491 492 ACPI_STATUS 493 AcpiUtEvaluateNumericObject ( 494 const char *ObjectName, 495 ACPI_NAMESPACE_NODE *DeviceNode, 496 UINT64 *Value); 497 498 ACPI_STATUS 499 AcpiUtExecute_STA ( 500 ACPI_NAMESPACE_NODE *DeviceNode, 501 UINT32 *StatusFlags); 502 503 ACPI_STATUS 504 AcpiUtExecutePowerMethods ( 505 ACPI_NAMESPACE_NODE *DeviceNode, 506 const char **MethodNames, 507 UINT8 MethodCount, 508 UINT8 *OutValues); 509 510 511 /* 512 * utids - device ID support 513 */ 514 ACPI_STATUS 515 AcpiUtExecute_HID ( 516 ACPI_NAMESPACE_NODE *DeviceNode, 517 ACPI_PNP_DEVICE_ID **ReturnId); 518 519 ACPI_STATUS 520 AcpiUtExecute_UID ( 521 ACPI_NAMESPACE_NODE *DeviceNode, 522 ACPI_PNP_DEVICE_ID **ReturnId); 523 524 ACPI_STATUS 525 AcpiUtExecute_CID ( 526 ACPI_NAMESPACE_NODE *DeviceNode, 527 ACPI_PNP_DEVICE_ID_LIST **ReturnCidList); 528 529 ACPI_STATUS 530 AcpiUtExecute_CLS ( 531 ACPI_NAMESPACE_NODE *DeviceNode, 532 ACPI_PNP_DEVICE_ID **ReturnId); 533 534 535 /* 536 * utlock - reader/writer locks 537 */ 538 ACPI_STATUS 539 AcpiUtCreateRwLock ( 540 ACPI_RW_LOCK *Lock); 541 542 void 543 AcpiUtDeleteRwLock ( 544 ACPI_RW_LOCK *Lock); 545 546 ACPI_STATUS 547 AcpiUtAcquireReadLock ( 548 ACPI_RW_LOCK *Lock); 549 550 ACPI_STATUS 551 AcpiUtReleaseReadLock ( 552 ACPI_RW_LOCK *Lock); 553 554 ACPI_STATUS 555 AcpiUtAcquireWriteLock ( 556 ACPI_RW_LOCK *Lock); 557 558 void 559 AcpiUtReleaseWriteLock ( 560 ACPI_RW_LOCK *Lock); 561 562 563 /* 564 * utobject - internal object create/delete/cache routines 565 */ 566 ACPI_OPERAND_OBJECT * 567 AcpiUtCreateInternalObjectDbg ( 568 const char *ModuleName, 569 UINT32 LineNumber, 570 UINT32 ComponentId, 571 ACPI_OBJECT_TYPE Type); 572 573 void * 574 AcpiUtAllocateObjectDescDbg ( 575 const char *ModuleName, 576 UINT32 LineNumber, 577 UINT32 ComponentId); 578 579 #define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) 580 #define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) 581 582 void 583 AcpiUtDeleteObjectDesc ( 584 ACPI_OPERAND_OBJECT *Object); 585 586 BOOLEAN 587 AcpiUtValidInternalObject ( 588 void *Object); 589 590 ACPI_OPERAND_OBJECT * 591 AcpiUtCreatePackageObject ( 592 UINT32 Count); 593 594 ACPI_OPERAND_OBJECT * 595 AcpiUtCreateIntegerObject ( 596 UINT64 Value); 597 598 ACPI_OPERAND_OBJECT * 599 AcpiUtCreateBufferObject ( 600 ACPI_SIZE BufferSize); 601 602 ACPI_OPERAND_OBJECT * 603 AcpiUtCreateStringObject ( 604 ACPI_SIZE StringSize); 605 606 ACPI_STATUS 607 AcpiUtGetObjectSize( 608 ACPI_OPERAND_OBJECT *Obj, 609 ACPI_SIZE *ObjLength); 610 611 612 /* 613 * utosi - Support for the _OSI predefined control method 614 */ 615 ACPI_STATUS 616 AcpiUtInitializeInterfaces ( 617 void); 618 619 ACPI_STATUS 620 AcpiUtInterfaceTerminate ( 621 void); 622 623 ACPI_STATUS 624 AcpiUtInstallInterface ( 625 ACPI_STRING InterfaceName); 626 627 ACPI_STATUS 628 AcpiUtRemoveInterface ( 629 ACPI_STRING InterfaceName); 630 631 ACPI_STATUS 632 AcpiUtUpdateInterfaces ( 633 UINT8 Action); 634 635 ACPI_INTERFACE_INFO * 636 AcpiUtGetInterface ( 637 ACPI_STRING InterfaceName); 638 639 ACPI_STATUS 640 AcpiUtOsiImplementation ( 641 ACPI_WALK_STATE *WalkState); 642 643 644 /* 645 * utpredef - support for predefined names 646 */ 647 const ACPI_PREDEFINED_INFO * 648 AcpiUtGetNextPredefinedMethod ( 649 const ACPI_PREDEFINED_INFO *ThisName); 650 651 const ACPI_PREDEFINED_INFO * 652 AcpiUtMatchPredefinedMethod ( 653 char *Name); 654 655 void 656 AcpiUtGetExpectedReturnTypes ( 657 char *Buffer, 658 UINT32 ExpectedBtypes); 659 660 #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) 661 const ACPI_PREDEFINED_INFO * 662 AcpiUtMatchResourceName ( 663 char *Name); 664 665 void 666 AcpiUtDisplayPredefinedMethod ( 667 char *Buffer, 668 const ACPI_PREDEFINED_INFO *ThisName, 669 BOOLEAN MultiLine); 670 671 UINT32 672 AcpiUtGetResourceBitWidth ( 673 char *Buffer, 674 UINT16 Types); 675 #endif 676 677 678 /* 679 * utstate - Generic state creation/cache routines 680 */ 681 void 682 AcpiUtPushGenericState ( 683 ACPI_GENERIC_STATE **ListHead, 684 ACPI_GENERIC_STATE *State); 685 686 ACPI_GENERIC_STATE * 687 AcpiUtPopGenericState ( 688 ACPI_GENERIC_STATE **ListHead); 689 690 691 ACPI_GENERIC_STATE * 692 AcpiUtCreateGenericState ( 693 void); 694 695 ACPI_THREAD_STATE * 696 AcpiUtCreateThreadState ( 697 void); 698 699 ACPI_GENERIC_STATE * 700 AcpiUtCreateUpdateState ( 701 ACPI_OPERAND_OBJECT *Object, 702 UINT16 Action); 703 704 ACPI_GENERIC_STATE * 705 AcpiUtCreatePkgState ( 706 void *InternalObject, 707 void *ExternalObject, 708 UINT16 Index); 709 710 ACPI_STATUS 711 AcpiUtCreateUpdateStateAndPush ( 712 ACPI_OPERAND_OBJECT *Object, 713 UINT16 Action, 714 ACPI_GENERIC_STATE **StateList); 715 716 ACPI_GENERIC_STATE * 717 AcpiUtCreateControlState ( 718 void); 719 720 void 721 AcpiUtDeleteGenericState ( 722 ACPI_GENERIC_STATE *State); 723 724 725 /* 726 * utmath 727 */ 728 ACPI_STATUS 729 AcpiUtDivide ( 730 UINT64 InDividend, 731 UINT64 InDivisor, 732 UINT64 *OutQuotient, 733 UINT64 *OutRemainder); 734 735 ACPI_STATUS 736 AcpiUtShortDivide ( 737 UINT64 InDividend, 738 UINT32 Divisor, 739 UINT64 *OutQuotient, 740 UINT32 *OutRemainder); 741 742 743 /* 744 * utmisc 745 */ 746 const ACPI_EXCEPTION_INFO * 747 AcpiUtValidateException ( 748 ACPI_STATUS Status); 749 750 BOOLEAN 751 AcpiUtIsPciRootBridge ( 752 char *Id); 753 754 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP) 755 BOOLEAN 756 AcpiUtIsAmlTable ( 757 ACPI_TABLE_HEADER *Table); 758 #endif 759 760 ACPI_STATUS 761 AcpiUtWalkPackageTree ( 762 ACPI_OPERAND_OBJECT *SourceObject, 763 void *TargetObject, 764 ACPI_PKG_CALLBACK WalkCallback, 765 void *Context); 766 767 /* Values for Base above (16=Hex, 10=Decimal) */ 768 769 #define ACPI_ANY_BASE 0 770 771 772 UINT32 773 AcpiUtDwordByteSwap ( 774 UINT32 Value); 775 776 void 777 AcpiUtSetIntegerWidth ( 778 UINT8 Revision); 779 780 #ifdef ACPI_DEBUG_OUTPUT 781 void 782 AcpiUtDisplayInitPathname ( 783 UINT8 Type, 784 ACPI_NAMESPACE_NODE *ObjHandle, 785 const char *Path); 786 #endif 787 788 789 /* 790 * utownerid - Support for Table/Method Owner IDs 791 */ 792 ACPI_STATUS 793 AcpiUtAllocateOwnerId ( 794 ACPI_OWNER_ID *OwnerId); 795 796 void 797 AcpiUtReleaseOwnerId ( 798 ACPI_OWNER_ID *OwnerId); 799 800 801 /* 802 * utresrc 803 */ 804 ACPI_STATUS 805 AcpiUtWalkAmlResources ( 806 ACPI_WALK_STATE *WalkState, 807 UINT8 *Aml, 808 ACPI_SIZE AmlLength, 809 ACPI_WALK_AML_CALLBACK UserFunction, 810 void **Context); 811 812 ACPI_STATUS 813 AcpiUtValidateResource ( 814 ACPI_WALK_STATE *WalkState, 815 void *Aml, 816 UINT8 *ReturnIndex); 817 818 UINT32 819 AcpiUtGetDescriptorLength ( 820 void *Aml); 821 822 UINT16 823 AcpiUtGetResourceLength ( 824 void *Aml); 825 826 UINT8 827 AcpiUtGetResourceHeaderLength ( 828 void *Aml); 829 830 UINT8 831 AcpiUtGetResourceType ( 832 void *Aml); 833 834 ACPI_STATUS 835 AcpiUtGetResourceEndTag ( 836 ACPI_OPERAND_OBJECT *ObjDesc, 837 UINT8 **EndTag); 838 839 840 /* 841 * utstring - String and character utilities 842 */ 843 void 844 AcpiUtPrintString ( 845 char *String, 846 UINT16 MaxLength); 847 848 #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP 849 void 850 UtConvertBackslashes ( 851 char *Pathname); 852 #endif 853 854 void 855 AcpiUtRepairName ( 856 char *Name); 857 858 #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) 859 BOOLEAN 860 AcpiUtSafeStrcpy ( 861 char *Dest, 862 ACPI_SIZE DestSize, 863 char *Source); 864 865 BOOLEAN 866 AcpiUtSafeStrcat ( 867 char *Dest, 868 ACPI_SIZE DestSize, 869 char *Source); 870 871 BOOLEAN 872 AcpiUtSafeStrncat ( 873 char *Dest, 874 ACPI_SIZE DestSize, 875 char *Source, 876 ACPI_SIZE MaxTransferLength); 877 #endif 878 879 880 /* 881 * utmutex - mutex support 882 */ 883 ACPI_STATUS 884 AcpiUtMutexInitialize ( 885 void); 886 887 void 888 AcpiUtMutexTerminate ( 889 void); 890 891 ACPI_STATUS 892 AcpiUtAcquireMutex ( 893 ACPI_MUTEX_HANDLE MutexId); 894 895 ACPI_STATUS 896 AcpiUtReleaseMutex ( 897 ACPI_MUTEX_HANDLE MutexId); 898 899 900 /* 901 * utalloc - memory allocation and object caching 902 */ 903 ACPI_STATUS 904 AcpiUtCreateCaches ( 905 void); 906 907 ACPI_STATUS 908 AcpiUtDeleteCaches ( 909 void); 910 911 ACPI_STATUS 912 AcpiUtValidateBuffer ( 913 ACPI_BUFFER *Buffer); 914 915 ACPI_STATUS 916 AcpiUtInitializeBuffer ( 917 ACPI_BUFFER *Buffer, 918 ACPI_SIZE RequiredLength); 919 920 #ifdef ACPI_DBG_TRACK_ALLOCATIONS 921 void * 922 AcpiUtAllocateAndTrack ( 923 ACPI_SIZE Size, 924 UINT32 Component, 925 const char *Module, 926 UINT32 Line); 927 928 void * 929 AcpiUtAllocateZeroedAndTrack ( 930 ACPI_SIZE Size, 931 UINT32 Component, 932 const char *Module, 933 UINT32 Line); 934 935 void 936 AcpiUtFreeAndTrack ( 937 void *Address, 938 UINT32 Component, 939 const char *Module, 940 UINT32 Line); 941 942 void 943 AcpiUtDumpAllocationInfo ( 944 void); 945 946 void 947 AcpiUtDumpAllocations ( 948 UINT32 Component, 949 const char *Module); 950 951 ACPI_STATUS 952 AcpiUtCreateList ( 953 const char *ListName, 954 UINT16 ObjectSize, 955 ACPI_MEMORY_LIST **ReturnCache); 956 957 #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 958 959 960 /* 961 * utaddress - address range check 962 */ 963 ACPI_STATUS 964 AcpiUtAddAddressRange ( 965 ACPI_ADR_SPACE_TYPE SpaceId, 966 ACPI_PHYSICAL_ADDRESS Address, 967 UINT32 Length, 968 ACPI_NAMESPACE_NODE *RegionNode); 969 970 void 971 AcpiUtRemoveAddressRange ( 972 ACPI_ADR_SPACE_TYPE SpaceId, 973 ACPI_NAMESPACE_NODE *RegionNode); 974 975 UINT32 976 AcpiUtCheckAddressRange ( 977 ACPI_ADR_SPACE_TYPE SpaceId, 978 ACPI_PHYSICAL_ADDRESS Address, 979 UINT32 Length, 980 BOOLEAN Warn); 981 982 void 983 AcpiUtDeleteAddressLists ( 984 void); 985 986 987 /* 988 * utxferror - various error/warning output functions 989 */ 990 void ACPI_INTERNAL_VAR_XFACE 991 AcpiUtPredefinedWarning ( 992 const char *ModuleName, 993 UINT32 LineNumber, 994 char *Pathname, 995 UINT8 NodeFlags, 996 const char *Format, 997 ...); 998 999 void ACPI_INTERNAL_VAR_XFACE 1000 AcpiUtPredefinedInfo ( 1001 const char *ModuleName, 1002 UINT32 LineNumber, 1003 char *Pathname, 1004 UINT8 NodeFlags, 1005 const char *Format, 1006 ...); 1007 1008 void ACPI_INTERNAL_VAR_XFACE 1009 AcpiUtPredefinedBiosError ( 1010 const char *ModuleName, 1011 UINT32 LineNumber, 1012 char *Pathname, 1013 UINT8 NodeFlags, 1014 const char *Format, 1015 ...); 1016 1017 void 1018 AcpiUtNamespaceError ( 1019 const char *ModuleName, 1020 UINT32 LineNumber, 1021 const char *InternalName, 1022 ACPI_STATUS LookupStatus); 1023 1024 void 1025 AcpiUtMethodError ( 1026 const char *ModuleName, 1027 UINT32 LineNumber, 1028 const char *Message, 1029 ACPI_NAMESPACE_NODE *Node, 1030 const char *Path, 1031 ACPI_STATUS LookupStatus); 1032 1033 1034 /* 1035 * Utility functions for ACPI names and IDs 1036 */ 1037 const AH_PREDEFINED_NAME * 1038 AcpiAhMatchPredefinedName ( 1039 char *Nameseg); 1040 1041 const AH_DEVICE_ID * 1042 AcpiAhMatchHardwareId ( 1043 char *Hid); 1044 1045 const char * 1046 AcpiAhMatchUuid ( 1047 UINT8 *Data); 1048 1049 1050 /* 1051 * utprint - printf/vprintf output functions 1052 */ 1053 const char * 1054 AcpiUtScanNumber ( 1055 const char *String, 1056 UINT64 *NumberPtr); 1057 1058 const char * 1059 AcpiUtPrintNumber ( 1060 char *String, 1061 UINT64 Number); 1062 1063 int 1064 AcpiUtVsnprintf ( 1065 char *String, 1066 ACPI_SIZE Size, 1067 const char *Format, 1068 va_list Args); 1069 1070 int 1071 AcpiUtSnprintf ( 1072 char *String, 1073 ACPI_SIZE Size, 1074 const char *Format, 1075 ...); 1076 1077 #ifdef ACPI_APPLICATION 1078 int 1079 AcpiUtFileVprintf ( 1080 ACPI_FILE File, 1081 const char *Format, 1082 va_list Args); 1083 1084 int 1085 AcpiUtFilePrintf ( 1086 ACPI_FILE File, 1087 const char *Format, 1088 ...); 1089 #endif 1090 1091 1092 /* 1093 * utuuid -- UUID support functions 1094 */ 1095 #if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP || defined KLD_MODULE) 1096 void 1097 AcpiUtConvertStringToUuid ( 1098 char *InString, 1099 UINT8 *UuidBuffer); 1100 #endif 1101 1102 #endif /* _ACUTILS_H */ 1103