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