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