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