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