1 /****************************************************************************** 2 * 3 * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures 4 * 5 *****************************************************************************/ 6 7 /****************************************************************************** 8 * 9 * 1. Copyright Notice 10 * 11 * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp. 12 * All rights reserved. 13 * 14 * 2. License 15 * 16 * 2.1. This is your license from Intel Corp. under its intellectual property 17 * rights. You may have additional license terms from the party that provided 18 * you this software, covering your right to use that party's intellectual 19 * property rights. 20 * 21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22 * copy of the source code appearing in this file ("Covered Code") an 23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24 * base code distributed originally by Intel ("Original Intel Code") to copy, 25 * make derivatives, distribute, use and display any portion of the Covered 26 * Code in any form, with the right to sublicense such rights; and 27 * 28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29 * license (with the right to sublicense), under only those claims of Intel 30 * patents that are infringed by the Original Intel Code, to make, use, sell, 31 * offer to sell, and import the Covered Code and derivative works thereof 32 * solely to the minimum extent necessary to exercise the above copyright 33 * license, and in no event shall the patent license extend to any additions 34 * to or modifications of the Original Intel Code. No other license or right 35 * is granted directly or by implication, estoppel or otherwise; 36 * 37 * The above copyright and patent license is granted only if the following 38 * conditions are met: 39 * 40 * 3. Conditions 41 * 42 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43 * Redistribution of source code of any substantial portion of the Covered 44 * Code or modification with rights to further distribute source must include 45 * the above Copyright Notice, the above License, this list of Conditions, 46 * and the following Disclaimer and Export Compliance provision. In addition, 47 * Licensee must cause all Covered Code to which Licensee contributes to 48 * contain a file documenting the changes Licensee made to create that Covered 49 * Code and the date of any change. Licensee must include in that file the 50 * documentation of any changes made by any predecessor Licensee. Licensee 51 * must include a prominent statement that the modification is derived, 52 * directly or indirectly, from Original Intel Code. 53 * 54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55 * Redistribution of source code of any substantial portion of the Covered 56 * Code or modification without rights to further distribute source must 57 * include the following Disclaimer and Export Compliance provision in the 58 * documentation and/or other materials provided with distribution. In 59 * addition, Licensee may not authorize further sublicense of source of any 60 * portion of the Covered Code, and must include terms to the effect that the 61 * license from Licensee to its licensee is limited to the intellectual 62 * property embodied in the software Licensee provides to its licensee, and 63 * not to intellectual property embodied in modifications its licensee may 64 * make. 65 * 66 * 3.3. Redistribution of Executable. Redistribution in executable form of any 67 * substantial portion of the Covered Code or modification must reproduce the 68 * above Copyright Notice, and the following Disclaimer and Export Compliance 69 * provision in the documentation and/or other materials provided with the 70 * distribution. 71 * 72 * 3.4. Intel retains all right, title, and interest in and to the Original 73 * Intel Code. 74 * 75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76 * Intel shall be used in advertising or otherwise to promote the sale, use or 77 * other dealings in products derived from or relating to the Covered Code 78 * without prior written authorization from Intel. 79 * 80 * 4. Disclaimer and Export Compliance 81 * 82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88 * PARTICULAR PURPOSE. 89 * 90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97 * LIMITED REMEDY. 98 * 99 * 4.3. Licensee shall not export, either directly or indirectly, any of this 100 * software or system incorporating such software without first obtaining any 101 * required license or other approval from the U. S. Department of Commerce or 102 * any other agency or department of the United States Government. In the 103 * event Licensee exports any such software from the United States or 104 * re-exports any such software from a foreign destination, Licensee shall 105 * ensure that the distribution and export/re-export of the software is in 106 * compliance with all laws, regulations, orders, or other restrictions of the 107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108 * any of its subsidiaries will export/re-export any technical data, process, 109 * software, or service, directly or indirectly, to any country for which the 110 * United States government or any agency thereof requires an export license, 111 * other governmental approval, or letter of assurance, without first obtaining 112 * such license, approval or letter. 113 * 114 ***************************************************************************** 115 * 116 * Alternatively, you may choose to be licensed under the terms of the 117 * following license: 118 * 119 * Redistribution and use in source and binary forms, with or without 120 * modification, are permitted provided that the following conditions 121 * are met: 122 * 1. Redistributions of source code must retain the above copyright 123 * notice, this list of conditions, and the following disclaimer, 124 * without modification. 125 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126 * substantially similar to the "NO WARRANTY" disclaimer below 127 * ("Disclaimer") and any redistribution must be conditioned upon 128 * including a substantially similar Disclaimer requirement for further 129 * binary redistribution. 130 * 3. Neither the names of the above-listed copyright holders nor the names 131 * of any contributors may be used to endorse or promote products derived 132 * from this software without specific prior written permission. 133 * 134 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145 * 146 * Alternatively, you may choose to be licensed under the terms of the 147 * GNU General Public License ("GPL") version 2 as published by the Free 148 * Software Foundation. 149 * 150 *****************************************************************************/ 151 152 #ifndef _ACUTILS_H 153 #define _ACUTILS_H 154 155 156 extern const UINT8 AcpiGbl_ResourceAmlSizes[]; 157 extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[]; 158 159 /* Strings used by the disassembler and debugger resource dump routines */ 160 161 #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) 162 163 extern const char *AcpiGbl_BmDecode[]; 164 extern const char *AcpiGbl_ConfigDecode[]; 165 extern const char *AcpiGbl_ConsumeDecode[]; 166 extern const char *AcpiGbl_DecDecode[]; 167 extern const char *AcpiGbl_HeDecode[]; 168 extern const char *AcpiGbl_IoDecode[]; 169 extern const char *AcpiGbl_LlDecode[]; 170 extern const char *AcpiGbl_MaxDecode[]; 171 extern const char *AcpiGbl_MemDecode[]; 172 extern const char *AcpiGbl_MinDecode[]; 173 extern const char *AcpiGbl_MtpDecode[]; 174 extern const char *AcpiGbl_RngDecode[]; 175 extern const char *AcpiGbl_RwDecode[]; 176 extern const char *AcpiGbl_ShrDecode[]; 177 extern const char *AcpiGbl_SizDecode[]; 178 extern const char *AcpiGbl_TrsDecode[]; 179 extern const char *AcpiGbl_TtpDecode[]; 180 extern const char *AcpiGbl_TypDecode[]; 181 extern const char *AcpiGbl_PpcDecode[]; 182 extern const char *AcpiGbl_IorDecode[]; 183 extern const char *AcpiGbl_DtsDecode[]; 184 extern const char *AcpiGbl_CtDecode[]; 185 extern const char *AcpiGbl_SbtDecode[]; 186 extern const char *AcpiGbl_AmDecode[]; 187 extern const char *AcpiGbl_SmDecode[]; 188 extern const char *AcpiGbl_WmDecode[]; 189 extern const char *AcpiGbl_CphDecode[]; 190 extern const char *AcpiGbl_CpoDecode[]; 191 extern const char *AcpiGbl_DpDecode[]; 192 extern const char *AcpiGbl_EdDecode[]; 193 extern const char *AcpiGbl_BpbDecode[]; 194 extern const char *AcpiGbl_SbDecode[]; 195 extern const char *AcpiGbl_FcDecode[]; 196 extern const char *AcpiGbl_PtDecode[]; 197 extern const char *AcpiGbl_PtypDecode[]; 198 #endif 199 200 /* 201 * For the iASL compiler case, the output is redirected to stderr so that 202 * any of the various ACPI errors and warnings do not appear in the output 203 * files, for either the compiler or disassembler portions of the tool. 204 */ 205 #ifdef ACPI_ASL_COMPILER 206 207 #include <stdio.h> 208 209 #define ACPI_MSG_REDIRECT_BEGIN \ 210 FILE *OutputFile = AcpiGbl_OutputFile; \ 211 AcpiOsRedirectOutput (stderr); 212 213 #define ACPI_MSG_REDIRECT_END \ 214 AcpiOsRedirectOutput (OutputFile); 215 216 #else 217 /* 218 * non-iASL case - no redirection, nothing to do 219 */ 220 #define ACPI_MSG_REDIRECT_BEGIN 221 #define ACPI_MSG_REDIRECT_END 222 #endif 223 224 /* 225 * Common error message prefixes 226 */ 227 #ifndef ACPI_MSG_ERROR 228 #define ACPI_MSG_ERROR "ACPI Error: " 229 #endif 230 #ifndef ACPI_MSG_WARNING 231 #define ACPI_MSG_WARNING "ACPI Warning: " 232 #endif 233 #ifndef ACPI_MSG_INFO 234 #define ACPI_MSG_INFO "ACPI: " 235 #endif 236 237 #ifndef ACPI_MSG_BIOS_ERROR 238 #define ACPI_MSG_BIOS_ERROR "Firmware Error (ACPI): " 239 #endif 240 #ifndef ACPI_MSG_BIOS_WARNING 241 #define ACPI_MSG_BIOS_WARNING "Firmware Warning (ACPI): " 242 #endif 243 244 /* 245 * Common message suffix 246 */ 247 #define ACPI_MSG_SUFFIX \ 248 AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber) 249 250 /* Flags to indicate implicit or explicit string-to-integer conversion */ 251 252 #define ACPI_IMPLICIT_CONVERSION TRUE 253 #define ACPI_NO_IMPLICIT_CONVERSION FALSE 254 255 /* Types for Resource descriptor entries */ 256 257 #define ACPI_INVALID_RESOURCE 0 258 #define ACPI_FIXED_LENGTH 1 259 #define ACPI_VARIABLE_LENGTH 2 260 #define ACPI_SMALL_VARIABLE_LENGTH 3 261 262 typedef 263 ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( 264 UINT8 *Aml, 265 UINT32 Length, 266 UINT32 Offset, 267 UINT8 ResourceIndex, 268 void **Context); 269 270 typedef 271 ACPI_STATUS (*ACPI_PKG_CALLBACK) ( 272 UINT8 ObjectType, 273 ACPI_OPERAND_OBJECT *SourceObject, 274 ACPI_GENERIC_STATE *State, 275 void *Context); 276 277 typedef struct acpi_pkg_info 278 { 279 UINT8 *FreeSpace; 280 ACPI_SIZE Length; 281 UINT32 ObjectSpace; 282 UINT32 NumPackages; 283 284 } ACPI_PKG_INFO; 285 286 /* Object reference counts */ 287 288 #define REF_INCREMENT (UINT16) 0 289 #define REF_DECREMENT (UINT16) 1 290 291 /* AcpiUtDumpBuffer */ 292 293 #define DB_BYTE_DISPLAY 1 294 #define DB_WORD_DISPLAY 2 295 #define DB_DWORD_DISPLAY 4 296 #define DB_QWORD_DISPLAY 8 297 298 299 /* 300 * utascii - ASCII utilities 301 */ 302 BOOLEAN 303 AcpiUtValidNameseg ( 304 char *Signature); 305 306 BOOLEAN 307 AcpiUtValidNameChar ( 308 char Character, 309 UINT32 Position); 310 311 void 312 AcpiUtCheckAndRepairAscii ( 313 UINT8 *Name, 314 char *RepairedName, 315 UINT32 Count); 316 317 318 /* 319 * utnonansi - Non-ANSI C library functions 320 */ 321 void 322 AcpiUtStrupr ( 323 char *SrcString); 324 325 void 326 AcpiUtStrlwr ( 327 char *SrcString); 328 329 int 330 AcpiUtStricmp ( 331 char *String1, 332 char *String2); 333 334 335 /* 336 * utstrsuppt - string-to-integer conversion support functions 337 */ 338 ACPI_STATUS 339 AcpiUtConvertOctalString ( 340 char *String, 341 UINT64 *ReturnValue); 342 343 ACPI_STATUS 344 AcpiUtConvertDecimalString ( 345 char *String, 346 UINT64 *ReturnValuePtr); 347 348 ACPI_STATUS 349 AcpiUtConvertHexString ( 350 char *String, 351 UINT64 *ReturnValuePtr); 352 353 char 354 AcpiUtRemoveWhitespace ( 355 char **String); 356 357 char 358 AcpiUtRemoveLeadingZeros ( 359 char **String); 360 361 BOOLEAN 362 AcpiUtDetectHexPrefix ( 363 char **String); 364 365 void 366 AcpiUtRemoveHexPrefix ( 367 char **String); 368 369 BOOLEAN 370 AcpiUtDetectOctalPrefix ( 371 char **String); 372 373 374 /* 375 * utstrtoul64 - string-to-integer conversion functions 376 */ 377 ACPI_STATUS 378 AcpiUtStrtoul64 ( 379 char *String, 380 UINT64 *RetInteger); 381 382 UINT64 383 AcpiUtExplicitStrtoul64 ( 384 char *String); 385 386 UINT64 387 AcpiUtImplicitStrtoul64 ( 388 char *String); 389 390 391 /* 392 * utglobal - Global data structures and procedures 393 */ 394 ACPI_STATUS 395 AcpiUtInitGlobals ( 396 void); 397 398 const char * 399 AcpiUtGetMutexName ( 400 UINT32 MutexId); 401 402 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 403 404 const char * 405 AcpiUtGetNotifyName ( 406 UINT32 NotifyValue, 407 ACPI_OBJECT_TYPE Type); 408 #endif 409 410 const char * 411 AcpiUtGetTypeName ( 412 ACPI_OBJECT_TYPE Type); 413 414 const char * 415 AcpiUtGetNodeName ( 416 void *Object); 417 418 const char * 419 AcpiUtGetDescriptorName ( 420 void *Object); 421 422 const char * 423 AcpiUtGetReferenceName ( 424 ACPI_OPERAND_OBJECT *Object); 425 426 const char * 427 AcpiUtGetObjectTypeName ( 428 ACPI_OPERAND_OBJECT *ObjDesc); 429 430 const char * 431 AcpiUtGetRegionName ( 432 UINT8 SpaceId); 433 434 const char * 435 AcpiUtGetEventName ( 436 UINT32 EventId); 437 438 const char * 439 AcpiUtGetArgumentTypeName ( 440 UINT32 ArgType); 441 442 char 443 AcpiUtHexToAsciiChar ( 444 UINT64 Integer, 445 UINT32 Position); 446 447 ACPI_STATUS 448 AcpiUtAsciiToHexByte ( 449 char *TwoAsciiChars, 450 UINT8 *ReturnByte); 451 452 UINT8 453 AcpiUtAsciiCharToHex ( 454 int HexChar); 455 456 BOOLEAN 457 AcpiUtValidObjectType ( 458 ACPI_OBJECT_TYPE Type); 459 460 461 /* 462 * utinit - miscellaneous initialization and shutdown 463 */ 464 ACPI_STATUS 465 AcpiUtHardwareInitialize ( 466 void); 467 468 void 469 AcpiUtSubsystemShutdown ( 470 void); 471 472 473 /* 474 * utcopy - Object construction and conversion interfaces 475 */ 476 ACPI_STATUS 477 AcpiUtBuildSimpleObject( 478 ACPI_OPERAND_OBJECT *Obj, 479 ACPI_OBJECT *UserObj, 480 UINT8 *DataSpace, 481 UINT32 *BufferSpaceUsed); 482 483 ACPI_STATUS 484 AcpiUtBuildPackageObject ( 485 ACPI_OPERAND_OBJECT *Obj, 486 UINT8 *Buffer, 487 UINT32 *SpaceUsed); 488 489 ACPI_STATUS 490 AcpiUtCopyIobjectToEobject ( 491 ACPI_OPERAND_OBJECT *Obj, 492 ACPI_BUFFER *RetBuffer); 493 494 ACPI_STATUS 495 AcpiUtCopyEobjectToIobject ( 496 ACPI_OBJECT *Obj, 497 ACPI_OPERAND_OBJECT **InternalObj); 498 499 ACPI_STATUS 500 AcpiUtCopyISimpleToIsimple ( 501 ACPI_OPERAND_OBJECT *SourceObj, 502 ACPI_OPERAND_OBJECT *DestObj); 503 504 ACPI_STATUS 505 AcpiUtCopyIobjectToIobject ( 506 ACPI_OPERAND_OBJECT *SourceDesc, 507 ACPI_OPERAND_OBJECT **DestDesc, 508 ACPI_WALK_STATE *WalkState); 509 510 511 /* 512 * utcreate - Object creation 513 */ 514 ACPI_STATUS 515 AcpiUtUpdateObjectReference ( 516 ACPI_OPERAND_OBJECT *Object, 517 UINT16 Action); 518 519 520 /* 521 * utdebug - Debug interfaces 522 */ 523 void 524 AcpiUtInitStackPtrTrace ( 525 void); 526 527 void 528 AcpiUtTrackStackPtr ( 529 void); 530 531 void 532 AcpiUtTrace ( 533 UINT32 LineNumber, 534 const char *FunctionName, 535 const char *ModuleName, 536 UINT32 ComponentId); 537 538 void 539 AcpiUtTracePtr ( 540 UINT32 LineNumber, 541 const char *FunctionName, 542 const char *ModuleName, 543 UINT32 ComponentId, 544 const void *Pointer); 545 546 void 547 AcpiUtTraceU32 ( 548 UINT32 LineNumber, 549 const char *FunctionName, 550 const char *ModuleName, 551 UINT32 ComponentId, 552 UINT32 Integer); 553 554 void 555 AcpiUtTraceStr ( 556 UINT32 LineNumber, 557 const char *FunctionName, 558 const char *ModuleName, 559 UINT32 ComponentId, 560 const char *String); 561 562 void 563 AcpiUtExit ( 564 UINT32 LineNumber, 565 const char *FunctionName, 566 const char *ModuleName, 567 UINT32 ComponentId); 568 569 void 570 AcpiUtStatusExit ( 571 UINT32 LineNumber, 572 const char *FunctionName, 573 const char *ModuleName, 574 UINT32 ComponentId, 575 ACPI_STATUS Status); 576 577 void 578 AcpiUtValueExit ( 579 UINT32 LineNumber, 580 const char *FunctionName, 581 const char *ModuleName, 582 UINT32 ComponentId, 583 UINT64 Value); 584 585 void 586 AcpiUtPtrExit ( 587 UINT32 LineNumber, 588 const char *FunctionName, 589 const char *ModuleName, 590 UINT32 ComponentId, 591 UINT8 *Ptr); 592 593 void 594 AcpiUtStrExit ( 595 UINT32 LineNumber, 596 const char *FunctionName, 597 const char *ModuleName, 598 UINT32 ComponentId, 599 const char *String); 600 601 void 602 AcpiUtDebugDumpBuffer ( 603 UINT8 *Buffer, 604 UINT32 Count, 605 UINT32 Display, 606 UINT32 ComponentId); 607 608 void 609 AcpiUtDumpBuffer ( 610 UINT8 *Buffer, 611 UINT32 Count, 612 UINT32 Display, 613 UINT32 Offset); 614 615 #ifdef ACPI_APPLICATION 616 void 617 AcpiUtDumpBufferToFile ( 618 ACPI_FILE File, 619 UINT8 *Buffer, 620 UINT32 Count, 621 UINT32 Display, 622 UINT32 BaseOffset); 623 #endif 624 625 void 626 AcpiUtReportError ( 627 char *ModuleName, 628 UINT32 LineNumber); 629 630 void 631 AcpiUtReportInfo ( 632 char *ModuleName, 633 UINT32 LineNumber); 634 635 void 636 AcpiUtReportWarning ( 637 char *ModuleName, 638 UINT32 LineNumber); 639 640 641 /* 642 * utdelete - Object deletion and reference counts 643 */ 644 void 645 AcpiUtAddReference ( 646 ACPI_OPERAND_OBJECT *Object); 647 648 void 649 AcpiUtRemoveReference ( 650 ACPI_OPERAND_OBJECT *Object); 651 652 void 653 AcpiUtDeleteInternalPackageObject ( 654 ACPI_OPERAND_OBJECT *Object); 655 656 void 657 AcpiUtDeleteInternalSimpleObject ( 658 ACPI_OPERAND_OBJECT *Object); 659 660 void 661 AcpiUtDeleteInternalObjectList ( 662 ACPI_OPERAND_OBJECT **ObjList); 663 664 665 /* 666 * uteval - object evaluation 667 */ 668 ACPI_STATUS 669 AcpiUtEvaluateObject ( 670 ACPI_NAMESPACE_NODE *PrefixNode, 671 const char *Path, 672 UINT32 ExpectedReturnBtypes, 673 ACPI_OPERAND_OBJECT **ReturnDesc); 674 675 ACPI_STATUS 676 AcpiUtEvaluateNumericObject ( 677 const char *ObjectName, 678 ACPI_NAMESPACE_NODE *DeviceNode, 679 UINT64 *Value); 680 681 ACPI_STATUS 682 AcpiUtExecute_STA ( 683 ACPI_NAMESPACE_NODE *DeviceNode, 684 UINT32 *StatusFlags); 685 686 ACPI_STATUS 687 AcpiUtExecutePowerMethods ( 688 ACPI_NAMESPACE_NODE *DeviceNode, 689 const char **MethodNames, 690 UINT8 MethodCount, 691 UINT8 *OutValues); 692 693 694 /* 695 * utids - device ID support 696 */ 697 ACPI_STATUS 698 AcpiUtExecute_HID ( 699 ACPI_NAMESPACE_NODE *DeviceNode, 700 ACPI_PNP_DEVICE_ID **ReturnId); 701 702 ACPI_STATUS 703 AcpiUtExecute_UID ( 704 ACPI_NAMESPACE_NODE *DeviceNode, 705 ACPI_PNP_DEVICE_ID **ReturnId); 706 707 ACPI_STATUS 708 AcpiUtExecute_CID ( 709 ACPI_NAMESPACE_NODE *DeviceNode, 710 ACPI_PNP_DEVICE_ID_LIST **ReturnCidList); 711 712 ACPI_STATUS 713 AcpiUtExecute_CLS ( 714 ACPI_NAMESPACE_NODE *DeviceNode, 715 ACPI_PNP_DEVICE_ID **ReturnId); 716 717 718 /* 719 * utlock - reader/writer locks 720 */ 721 ACPI_STATUS 722 AcpiUtCreateRwLock ( 723 ACPI_RW_LOCK *Lock); 724 725 void 726 AcpiUtDeleteRwLock ( 727 ACPI_RW_LOCK *Lock); 728 729 ACPI_STATUS 730 AcpiUtAcquireReadLock ( 731 ACPI_RW_LOCK *Lock); 732 733 ACPI_STATUS 734 AcpiUtReleaseReadLock ( 735 ACPI_RW_LOCK *Lock); 736 737 ACPI_STATUS 738 AcpiUtAcquireWriteLock ( 739 ACPI_RW_LOCK *Lock); 740 741 void 742 AcpiUtReleaseWriteLock ( 743 ACPI_RW_LOCK *Lock); 744 745 746 /* 747 * utobject - internal object create/delete/cache routines 748 */ 749 ACPI_OPERAND_OBJECT * 750 AcpiUtCreateInternalObjectDbg ( 751 const char *ModuleName, 752 UINT32 LineNumber, 753 UINT32 ComponentId, 754 ACPI_OBJECT_TYPE Type); 755 756 void * 757 AcpiUtAllocateObjectDescDbg ( 758 const char *ModuleName, 759 UINT32 LineNumber, 760 UINT32 ComponentId); 761 762 #define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) 763 #define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) 764 765 void 766 AcpiUtDeleteObjectDesc ( 767 ACPI_OPERAND_OBJECT *Object); 768 769 BOOLEAN 770 AcpiUtValidInternalObject ( 771 void *Object); 772 773 ACPI_OPERAND_OBJECT * 774 AcpiUtCreatePackageObject ( 775 UINT32 Count); 776 777 ACPI_OPERAND_OBJECT * 778 AcpiUtCreateIntegerObject ( 779 UINT64 Value); 780 781 ACPI_OPERAND_OBJECT * 782 AcpiUtCreateBufferObject ( 783 ACPI_SIZE BufferSize); 784 785 ACPI_OPERAND_OBJECT * 786 AcpiUtCreateStringObject ( 787 ACPI_SIZE StringSize); 788 789 ACPI_STATUS 790 AcpiUtGetObjectSize( 791 ACPI_OPERAND_OBJECT *Obj, 792 ACPI_SIZE *ObjLength); 793 794 795 /* 796 * utosi - Support for the _OSI predefined control method 797 */ 798 ACPI_STATUS 799 AcpiUtInitializeInterfaces ( 800 void); 801 802 ACPI_STATUS 803 AcpiUtInterfaceTerminate ( 804 void); 805 806 ACPI_STATUS 807 AcpiUtInstallInterface ( 808 ACPI_STRING InterfaceName); 809 810 ACPI_STATUS 811 AcpiUtRemoveInterface ( 812 ACPI_STRING InterfaceName); 813 814 ACPI_STATUS 815 AcpiUtUpdateInterfaces ( 816 UINT8 Action); 817 818 ACPI_INTERFACE_INFO * 819 AcpiUtGetInterface ( 820 ACPI_STRING InterfaceName); 821 822 ACPI_STATUS 823 AcpiUtOsiImplementation ( 824 ACPI_WALK_STATE *WalkState); 825 826 827 /* 828 * utpredef - support for predefined names 829 */ 830 const ACPI_PREDEFINED_INFO * 831 AcpiUtGetNextPredefinedMethod ( 832 const ACPI_PREDEFINED_INFO *ThisName); 833 834 const ACPI_PREDEFINED_INFO * 835 AcpiUtMatchPredefinedMethod ( 836 char *Name); 837 838 void 839 AcpiUtGetExpectedReturnTypes ( 840 char *Buffer, 841 UINT32 ExpectedBtypes); 842 843 #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) 844 const ACPI_PREDEFINED_INFO * 845 AcpiUtMatchResourceName ( 846 char *Name); 847 848 void 849 AcpiUtDisplayPredefinedMethod ( 850 char *Buffer, 851 const ACPI_PREDEFINED_INFO *ThisName, 852 BOOLEAN MultiLine); 853 854 UINT32 855 AcpiUtGetResourceBitWidth ( 856 char *Buffer, 857 UINT16 Types); 858 #endif 859 860 861 /* 862 * utstate - Generic state creation/cache routines 863 */ 864 void 865 AcpiUtPushGenericState ( 866 ACPI_GENERIC_STATE **ListHead, 867 ACPI_GENERIC_STATE *State); 868 869 ACPI_GENERIC_STATE * 870 AcpiUtPopGenericState ( 871 ACPI_GENERIC_STATE **ListHead); 872 873 874 ACPI_GENERIC_STATE * 875 AcpiUtCreateGenericState ( 876 void); 877 878 ACPI_THREAD_STATE * 879 AcpiUtCreateThreadState ( 880 void); 881 882 ACPI_GENERIC_STATE * 883 AcpiUtCreateUpdateState ( 884 ACPI_OPERAND_OBJECT *Object, 885 UINT16 Action); 886 887 ACPI_GENERIC_STATE * 888 AcpiUtCreatePkgState ( 889 void *InternalObject, 890 void *ExternalObject, 891 UINT32 Index); 892 893 ACPI_STATUS 894 AcpiUtCreateUpdateStateAndPush ( 895 ACPI_OPERAND_OBJECT *Object, 896 UINT16 Action, 897 ACPI_GENERIC_STATE **StateList); 898 899 ACPI_GENERIC_STATE * 900 AcpiUtCreateControlState ( 901 void); 902 903 void 904 AcpiUtDeleteGenericState ( 905 ACPI_GENERIC_STATE *State); 906 907 908 /* 909 * utmath 910 */ 911 ACPI_STATUS 912 AcpiUtDivide ( 913 UINT64 InDividend, 914 UINT64 InDivisor, 915 UINT64 *OutQuotient, 916 UINT64 *OutRemainder); 917 918 ACPI_STATUS 919 AcpiUtShortDivide ( 920 UINT64 InDividend, 921 UINT32 Divisor, 922 UINT64 *OutQuotient, 923 UINT32 *OutRemainder); 924 925 ACPI_STATUS 926 AcpiUtShortMultiply ( 927 UINT64 InMultiplicand, 928 UINT32 Multiplier, 929 UINT64 *Outproduct); 930 931 ACPI_STATUS 932 AcpiUtShortShiftLeft ( 933 UINT64 Operand, 934 UINT32 Count, 935 UINT64 *OutResult); 936 937 ACPI_STATUS 938 AcpiUtShortShiftRight ( 939 UINT64 Operand, 940 UINT32 Count, 941 UINT64 *OutResult); 942 943 944 /* 945 * utmisc 946 */ 947 const ACPI_EXCEPTION_INFO * 948 AcpiUtValidateException ( 949 ACPI_STATUS Status); 950 951 BOOLEAN 952 AcpiUtIsPciRootBridge ( 953 char *Id); 954 955 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP) 956 BOOLEAN 957 AcpiUtIsAmlTable ( 958 ACPI_TABLE_HEADER *Table); 959 #endif 960 961 ACPI_STATUS 962 AcpiUtWalkPackageTree ( 963 ACPI_OPERAND_OBJECT *SourceObject, 964 void *TargetObject, 965 ACPI_PKG_CALLBACK WalkCallback, 966 void *Context); 967 968 /* Values for Base above (16=Hex, 10=Decimal) */ 969 970 #define ACPI_ANY_BASE 0 971 972 973 UINT32 974 AcpiUtDwordByteSwap ( 975 UINT32 Value); 976 977 void 978 AcpiUtSetIntegerWidth ( 979 UINT8 Revision); 980 981 #ifdef ACPI_DEBUG_OUTPUT 982 void 983 AcpiUtDisplayInitPathname ( 984 UINT8 Type, 985 ACPI_NAMESPACE_NODE *ObjHandle, 986 const char *Path); 987 #endif 988 989 990 /* 991 * utownerid - Support for Table/Method Owner IDs 992 */ 993 ACPI_STATUS 994 AcpiUtAllocateOwnerId ( 995 ACPI_OWNER_ID *OwnerId); 996 997 void 998 AcpiUtReleaseOwnerId ( 999 ACPI_OWNER_ID *OwnerId); 1000 1001 1002 /* 1003 * utresrc 1004 */ 1005 ACPI_STATUS 1006 AcpiUtWalkAmlResources ( 1007 ACPI_WALK_STATE *WalkState, 1008 UINT8 *Aml, 1009 ACPI_SIZE AmlLength, 1010 ACPI_WALK_AML_CALLBACK UserFunction, 1011 void **Context); 1012 1013 ACPI_STATUS 1014 AcpiUtValidateResource ( 1015 ACPI_WALK_STATE *WalkState, 1016 void *Aml, 1017 UINT8 *ReturnIndex); 1018 1019 UINT32 1020 AcpiUtGetDescriptorLength ( 1021 void *Aml); 1022 1023 UINT16 1024 AcpiUtGetResourceLength ( 1025 void *Aml); 1026 1027 UINT8 1028 AcpiUtGetResourceHeaderLength ( 1029 void *Aml); 1030 1031 UINT8 1032 AcpiUtGetResourceType ( 1033 void *Aml); 1034 1035 ACPI_STATUS 1036 AcpiUtGetResourceEndTag ( 1037 ACPI_OPERAND_OBJECT *ObjDesc, 1038 UINT8 **EndTag); 1039 1040 1041 /* 1042 * utstring - String and character utilities 1043 */ 1044 void 1045 AcpiUtPrintString ( 1046 char *String, 1047 UINT16 MaxLength); 1048 1049 #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP 1050 void 1051 UtConvertBackslashes ( 1052 char *Pathname); 1053 #endif 1054 1055 void 1056 AcpiUtRepairName ( 1057 char *Name); 1058 1059 #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) || defined (ACPI_DEBUG_OUTPUT) 1060 BOOLEAN 1061 AcpiUtSafeStrcpy ( 1062 char *Dest, 1063 ACPI_SIZE DestSize, 1064 char *Source); 1065 1066 void 1067 AcpiUtSafeStrncpy ( 1068 char *Dest, 1069 char *Source, 1070 ACPI_SIZE DestSize); 1071 1072 BOOLEAN 1073 AcpiUtSafeStrcat ( 1074 char *Dest, 1075 ACPI_SIZE DestSize, 1076 char *Source); 1077 1078 BOOLEAN 1079 AcpiUtSafeStrncat ( 1080 char *Dest, 1081 ACPI_SIZE DestSize, 1082 char *Source, 1083 ACPI_SIZE MaxTransferLength); 1084 #endif 1085 1086 1087 /* 1088 * utmutex - mutex support 1089 */ 1090 ACPI_STATUS 1091 AcpiUtMutexInitialize ( 1092 void); 1093 1094 void 1095 AcpiUtMutexTerminate ( 1096 void); 1097 1098 ACPI_STATUS 1099 AcpiUtAcquireMutex ( 1100 ACPI_MUTEX_HANDLE MutexId); 1101 1102 ACPI_STATUS 1103 AcpiUtReleaseMutex ( 1104 ACPI_MUTEX_HANDLE MutexId); 1105 1106 1107 /* 1108 * utalloc - memory allocation and object caching 1109 */ 1110 ACPI_STATUS 1111 AcpiUtCreateCaches ( 1112 void); 1113 1114 ACPI_STATUS 1115 AcpiUtDeleteCaches ( 1116 void); 1117 1118 ACPI_STATUS 1119 AcpiUtValidateBuffer ( 1120 ACPI_BUFFER *Buffer); 1121 1122 ACPI_STATUS 1123 AcpiUtInitializeBuffer ( 1124 ACPI_BUFFER *Buffer, 1125 ACPI_SIZE RequiredLength); 1126 1127 #ifdef ACPI_DBG_TRACK_ALLOCATIONS 1128 void * 1129 AcpiUtAllocateAndTrack ( 1130 ACPI_SIZE Size, 1131 UINT32 Component, 1132 const char *Module, 1133 UINT32 Line); 1134 1135 void * 1136 AcpiUtAllocateZeroedAndTrack ( 1137 ACPI_SIZE Size, 1138 UINT32 Component, 1139 const char *Module, 1140 UINT32 Line); 1141 1142 void 1143 AcpiUtFreeAndTrack ( 1144 void *Address, 1145 UINT32 Component, 1146 const char *Module, 1147 UINT32 Line); 1148 1149 void 1150 AcpiUtDumpAllocationInfo ( 1151 void); 1152 1153 void 1154 AcpiUtDumpAllocations ( 1155 UINT32 Component, 1156 const char *Module); 1157 1158 ACPI_STATUS 1159 AcpiUtCreateList ( 1160 const char *ListName, 1161 UINT16 ObjectSize, 1162 ACPI_MEMORY_LIST **ReturnCache); 1163 1164 #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 1165 1166 1167 /* 1168 * utaddress - address range check 1169 */ 1170 ACPI_STATUS 1171 AcpiUtAddAddressRange ( 1172 ACPI_ADR_SPACE_TYPE SpaceId, 1173 ACPI_PHYSICAL_ADDRESS Address, 1174 UINT32 Length, 1175 ACPI_NAMESPACE_NODE *RegionNode); 1176 1177 void 1178 AcpiUtRemoveAddressRange ( 1179 ACPI_ADR_SPACE_TYPE SpaceId, 1180 ACPI_NAMESPACE_NODE *RegionNode); 1181 1182 UINT32 1183 AcpiUtCheckAddressRange ( 1184 ACPI_ADR_SPACE_TYPE SpaceId, 1185 ACPI_PHYSICAL_ADDRESS Address, 1186 UINT32 Length, 1187 BOOLEAN Warn); 1188 1189 void 1190 AcpiUtDeleteAddressLists ( 1191 void); 1192 1193 1194 /* 1195 * utxferror - various error/warning output functions 1196 */ 1197 void ACPI_INTERNAL_VAR_XFACE 1198 AcpiUtPredefinedWarning ( 1199 const char *ModuleName, 1200 UINT32 LineNumber, 1201 char *Pathname, 1202 UINT8 NodeFlags, 1203 const char *Format, 1204 ...); 1205 1206 void ACPI_INTERNAL_VAR_XFACE 1207 AcpiUtPredefinedInfo ( 1208 const char *ModuleName, 1209 UINT32 LineNumber, 1210 char *Pathname, 1211 UINT8 NodeFlags, 1212 const char *Format, 1213 ...); 1214 1215 void ACPI_INTERNAL_VAR_XFACE 1216 AcpiUtPredefinedBiosError ( 1217 const char *ModuleName, 1218 UINT32 LineNumber, 1219 char *Pathname, 1220 UINT8 NodeFlags, 1221 const char *Format, 1222 ...); 1223 1224 void 1225 AcpiUtPrefixedNamespaceError ( 1226 const char *ModuleName, 1227 UINT32 LineNumber, 1228 ACPI_GENERIC_STATE *PrefixScope, 1229 const char *InternalName, 1230 ACPI_STATUS LookupStatus); 1231 1232 void 1233 AcpiUtMethodError ( 1234 const char *ModuleName, 1235 UINT32 LineNumber, 1236 const char *Message, 1237 ACPI_NAMESPACE_NODE *Node, 1238 const char *Path, 1239 ACPI_STATUS LookupStatus); 1240 1241 1242 /* 1243 * Utility functions for ACPI names and IDs 1244 */ 1245 const AH_PREDEFINED_NAME * 1246 AcpiAhMatchPredefinedName ( 1247 char *Nameseg); 1248 1249 const AH_DEVICE_ID * 1250 AcpiAhMatchHardwareId ( 1251 char *Hid); 1252 1253 const char * 1254 AcpiAhMatchUuid ( 1255 UINT8 *Data); 1256 1257 1258 /* 1259 * utuuid -- UUID support functions 1260 */ 1261 #if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP) 1262 void 1263 AcpiUtConvertStringToUuid ( 1264 char *InString, 1265 UINT8 *UuidBuffer); 1266 #endif 1267 1268 #endif /* _ACUTILS_H */ 1269