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