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