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