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