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