Home | History | Annotate | Line # | Download | only in include
acutils.h revision 1.9
      1 /******************************************************************************
      2  *
      3  * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2015, 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 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  * utfileio - file operations
    488  */
    489 #ifdef ACPI_APPLICATION
    490 ACPI_STATUS
    491 AcpiUtReadTableFromFile (
    492     char                    *Filename,
    493     ACPI_TABLE_HEADER       **Table);
    494 #endif
    495 
    496 
    497 /*
    498  * utids - device ID support
    499  */
    500 ACPI_STATUS
    501 AcpiUtExecute_HID (
    502     ACPI_NAMESPACE_NODE     *DeviceNode,
    503     ACPI_PNP_DEVICE_ID      **ReturnId);
    504 
    505 ACPI_STATUS
    506 AcpiUtExecute_UID (
    507     ACPI_NAMESPACE_NODE     *DeviceNode,
    508     ACPI_PNP_DEVICE_ID      **ReturnId);
    509 
    510 ACPI_STATUS
    511 AcpiUtExecute_SUB (
    512     ACPI_NAMESPACE_NODE     *DeviceNode,
    513     ACPI_PNP_DEVICE_ID      **ReturnId);
    514 
    515 ACPI_STATUS
    516 AcpiUtExecute_CID (
    517     ACPI_NAMESPACE_NODE     *DeviceNode,
    518     ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
    519 
    520 ACPI_STATUS
    521 AcpiUtExecute_CLS (
    522     ACPI_NAMESPACE_NODE     *DeviceNode,
    523     ACPI_PNP_DEVICE_ID      **ReturnId);
    524 
    525 
    526 /*
    527  * utlock - reader/writer locks
    528  */
    529 ACPI_STATUS
    530 AcpiUtCreateRwLock (
    531     ACPI_RW_LOCK            *Lock);
    532 
    533 void
    534 AcpiUtDeleteRwLock (
    535     ACPI_RW_LOCK            *Lock);
    536 
    537 ACPI_STATUS
    538 AcpiUtAcquireReadLock (
    539     ACPI_RW_LOCK            *Lock);
    540 
    541 ACPI_STATUS
    542 AcpiUtReleaseReadLock (
    543     ACPI_RW_LOCK            *Lock);
    544 
    545 ACPI_STATUS
    546 AcpiUtAcquireWriteLock (
    547     ACPI_RW_LOCK            *Lock);
    548 
    549 void
    550 AcpiUtReleaseWriteLock (
    551     ACPI_RW_LOCK            *Lock);
    552 
    553 
    554 /*
    555  * utobject - internal object create/delete/cache routines
    556  */
    557 ACPI_OPERAND_OBJECT  *
    558 AcpiUtCreateInternalObjectDbg (
    559     const char              *ModuleName,
    560     UINT32                  LineNumber,
    561     UINT32                  ComponentId,
    562     ACPI_OBJECT_TYPE        Type);
    563 
    564 void *
    565 AcpiUtAllocateObjectDescDbg (
    566     const char              *ModuleName,
    567     UINT32                  LineNumber,
    568     UINT32                  ComponentId);
    569 
    570 #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
    571 #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
    572 
    573 void
    574 AcpiUtDeleteObjectDesc (
    575     ACPI_OPERAND_OBJECT     *Object);
    576 
    577 BOOLEAN
    578 AcpiUtValidInternalObject (
    579     void                    *Object);
    580 
    581 ACPI_OPERAND_OBJECT *
    582 AcpiUtCreatePackageObject (
    583     UINT32                  Count);
    584 
    585 ACPI_OPERAND_OBJECT *
    586 AcpiUtCreateIntegerObject (
    587     UINT64                  Value);
    588 
    589 ACPI_OPERAND_OBJECT *
    590 AcpiUtCreateBufferObject (
    591     ACPI_SIZE               BufferSize);
    592 
    593 ACPI_OPERAND_OBJECT *
    594 AcpiUtCreateStringObject (
    595     ACPI_SIZE               StringSize);
    596 
    597 ACPI_STATUS
    598 AcpiUtGetObjectSize(
    599     ACPI_OPERAND_OBJECT     *Obj,
    600     ACPI_SIZE               *ObjLength);
    601 
    602 
    603 /*
    604  * utosi - Support for the _OSI predefined control method
    605  */
    606 ACPI_STATUS
    607 AcpiUtInitializeInterfaces (
    608     void);
    609 
    610 ACPI_STATUS
    611 AcpiUtInterfaceTerminate (
    612     void);
    613 
    614 ACPI_STATUS
    615 AcpiUtInstallInterface (
    616     ACPI_STRING             InterfaceName);
    617 
    618 ACPI_STATUS
    619 AcpiUtRemoveInterface (
    620     ACPI_STRING             InterfaceName);
    621 
    622 ACPI_STATUS
    623 AcpiUtUpdateInterfaces (
    624     UINT8                   Action);
    625 
    626 ACPI_INTERFACE_INFO *
    627 AcpiUtGetInterface (
    628     ACPI_STRING             InterfaceName);
    629 
    630 ACPI_STATUS
    631 AcpiUtOsiImplementation (
    632     ACPI_WALK_STATE         *WalkState);
    633 
    634 
    635 /*
    636  * utpredef - support for predefined names
    637  */
    638 const ACPI_PREDEFINED_INFO *
    639 AcpiUtGetNextPredefinedMethod (
    640     const ACPI_PREDEFINED_INFO  *ThisName);
    641 
    642 const ACPI_PREDEFINED_INFO *
    643 AcpiUtMatchPredefinedMethod (
    644     char                        *Name);
    645 
    646 void
    647 AcpiUtGetExpectedReturnTypes (
    648     char                    *Buffer,
    649     UINT32                  ExpectedBtypes);
    650 
    651 #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
    652 const ACPI_PREDEFINED_INFO *
    653 AcpiUtMatchResourceName (
    654     char                        *Name);
    655 
    656 void
    657 AcpiUtDisplayPredefinedMethod (
    658     char                        *Buffer,
    659     const ACPI_PREDEFINED_INFO  *ThisName,
    660     BOOLEAN                     MultiLine);
    661 
    662 UINT32
    663 AcpiUtGetResourceBitWidth (
    664     char                    *Buffer,
    665     UINT16                  Types);
    666 #endif
    667 
    668 
    669 /*
    670  * utstate - Generic state creation/cache routines
    671  */
    672 void
    673 AcpiUtPushGenericState (
    674     ACPI_GENERIC_STATE      **ListHead,
    675     ACPI_GENERIC_STATE      *State);
    676 
    677 ACPI_GENERIC_STATE *
    678 AcpiUtPopGenericState (
    679     ACPI_GENERIC_STATE      **ListHead);
    680 
    681 
    682 ACPI_GENERIC_STATE *
    683 AcpiUtCreateGenericState (
    684     void);
    685 
    686 ACPI_THREAD_STATE *
    687 AcpiUtCreateThreadState (
    688     void);
    689 
    690 ACPI_GENERIC_STATE *
    691 AcpiUtCreateUpdateState (
    692     ACPI_OPERAND_OBJECT     *Object,
    693     UINT16                  Action);
    694 
    695 ACPI_GENERIC_STATE *
    696 AcpiUtCreatePkgState (
    697     void                    *InternalObject,
    698     void                    *ExternalObject,
    699     UINT16                  Index);
    700 
    701 ACPI_STATUS
    702 AcpiUtCreateUpdateStateAndPush (
    703     ACPI_OPERAND_OBJECT     *Object,
    704     UINT16                  Action,
    705     ACPI_GENERIC_STATE      **StateList);
    706 
    707 ACPI_GENERIC_STATE *
    708 AcpiUtCreateControlState (
    709     void);
    710 
    711 void
    712 AcpiUtDeleteGenericState (
    713     ACPI_GENERIC_STATE      *State);
    714 
    715 
    716 /*
    717  * utmath
    718  */
    719 ACPI_STATUS
    720 AcpiUtDivide (
    721     UINT64                  InDividend,
    722     UINT64                  InDivisor,
    723     UINT64                  *OutQuotient,
    724     UINT64                  *OutRemainder);
    725 
    726 ACPI_STATUS
    727 AcpiUtShortDivide (
    728     UINT64                  InDividend,
    729     UINT32                  Divisor,
    730     UINT64                  *OutQuotient,
    731     UINT32                  *OutRemainder);
    732 
    733 
    734 /*
    735  * utmisc
    736  */
    737 const ACPI_EXCEPTION_INFO *
    738 AcpiUtValidateException (
    739     ACPI_STATUS             Status);
    740 
    741 BOOLEAN
    742 AcpiUtIsPciRootBridge (
    743     char                    *Id);
    744 
    745 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP)
    746 BOOLEAN
    747 AcpiUtIsAmlTable (
    748     ACPI_TABLE_HEADER       *Table);
    749 #endif
    750 
    751 ACPI_STATUS
    752 AcpiUtWalkPackageTree (
    753     ACPI_OPERAND_OBJECT     *SourceObject,
    754     void                    *TargetObject,
    755     ACPI_PKG_CALLBACK       WalkCallback,
    756     void                    *Context);
    757 
    758 /* Values for Base above (16=Hex, 10=Decimal) */
    759 
    760 #define ACPI_ANY_BASE        0
    761 
    762 
    763 UINT32
    764 AcpiUtDwordByteSwap (
    765     UINT32                  Value);
    766 
    767 void
    768 AcpiUtSetIntegerWidth (
    769     UINT8                   Revision);
    770 
    771 #ifdef ACPI_DEBUG_OUTPUT
    772 void
    773 AcpiUtDisplayInitPathname (
    774     UINT8                   Type,
    775     ACPI_NAMESPACE_NODE     *ObjHandle,
    776     const char              *Path);
    777 #endif
    778 
    779 
    780 /*
    781  * utownerid - Support for Table/Method Owner IDs
    782  */
    783 ACPI_STATUS
    784 AcpiUtAllocateOwnerId (
    785     ACPI_OWNER_ID           *OwnerId);
    786 
    787 void
    788 AcpiUtReleaseOwnerId (
    789     ACPI_OWNER_ID           *OwnerId);
    790 
    791 
    792 /*
    793  * utresrc
    794  */
    795 ACPI_STATUS
    796 AcpiUtWalkAmlResources (
    797     ACPI_WALK_STATE         *WalkState,
    798     UINT8                   *Aml,
    799     ACPI_SIZE               AmlLength,
    800     ACPI_WALK_AML_CALLBACK  UserFunction,
    801     void                    **Context);
    802 
    803 ACPI_STATUS
    804 AcpiUtValidateResource (
    805     ACPI_WALK_STATE         *WalkState,
    806     void                    *Aml,
    807     UINT8                   *ReturnIndex);
    808 
    809 UINT32
    810 AcpiUtGetDescriptorLength (
    811     void                    *Aml);
    812 
    813 UINT16
    814 AcpiUtGetResourceLength (
    815     void                    *Aml);
    816 
    817 UINT8
    818 AcpiUtGetResourceHeaderLength (
    819     void                    *Aml);
    820 
    821 UINT8
    822 AcpiUtGetResourceType (
    823     void                    *Aml);
    824 
    825 ACPI_STATUS
    826 AcpiUtGetResourceEndTag (
    827     ACPI_OPERAND_OBJECT     *ObjDesc,
    828     UINT8                   **EndTag);
    829 
    830 
    831 /*
    832  * utstring - String and character utilities
    833  */
    834 void
    835 AcpiUtPrintString (
    836     char                    *String,
    837     UINT16                  MaxLength);
    838 
    839 #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP
    840 void
    841 UtConvertBackslashes (
    842     char                    *Pathname);
    843 #endif
    844 
    845 BOOLEAN
    846 AcpiUtValidAcpiName (
    847     char                    *Name);
    848 
    849 BOOLEAN
    850 AcpiUtValidAcpiChar (
    851     char                    Character,
    852     UINT32                  Position);
    853 
    854 void
    855 AcpiUtRepairName (
    856     char                    *Name);
    857 
    858 #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION)
    859 BOOLEAN
    860 AcpiUtSafeStrcpy (
    861     char                    *Dest,
    862     ACPI_SIZE               DestSize,
    863     char                    *Source);
    864 
    865 BOOLEAN
    866 AcpiUtSafeStrcat (
    867     char                    *Dest,
    868     ACPI_SIZE               DestSize,
    869     char                    *Source);
    870 
    871 BOOLEAN
    872 AcpiUtSafeStrncat (
    873     char                    *Dest,
    874     ACPI_SIZE               DestSize,
    875     char                    *Source,
    876     ACPI_SIZE               MaxTransferLength);
    877 #endif
    878 
    879 
    880 /*
    881  * utmutex - mutex support
    882  */
    883 ACPI_STATUS
    884 AcpiUtMutexInitialize (
    885     void);
    886 
    887 void
    888 AcpiUtMutexTerminate (
    889     void);
    890 
    891 ACPI_STATUS
    892 AcpiUtAcquireMutex (
    893     ACPI_MUTEX_HANDLE       MutexId);
    894 
    895 ACPI_STATUS
    896 AcpiUtReleaseMutex (
    897     ACPI_MUTEX_HANDLE       MutexId);
    898 
    899 
    900 /*
    901  * utalloc - memory allocation and object caching
    902  */
    903 ACPI_STATUS
    904 AcpiUtCreateCaches (
    905     void);
    906 
    907 ACPI_STATUS
    908 AcpiUtDeleteCaches (
    909     void);
    910 
    911 ACPI_STATUS
    912 AcpiUtValidateBuffer (
    913     ACPI_BUFFER             *Buffer);
    914 
    915 ACPI_STATUS
    916 AcpiUtInitializeBuffer (
    917     ACPI_BUFFER             *Buffer,
    918     ACPI_SIZE               RequiredLength);
    919 
    920 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
    921 void *
    922 AcpiUtAllocateAndTrack (
    923     ACPI_SIZE               Size,
    924     UINT32                  Component,
    925     const char              *Module,
    926     UINT32                  Line);
    927 
    928 void *
    929 AcpiUtAllocateZeroedAndTrack (
    930     ACPI_SIZE               Size,
    931     UINT32                  Component,
    932     const char              *Module,
    933     UINT32                  Line);
    934 
    935 void
    936 AcpiUtFreeAndTrack (
    937     void                    *Address,
    938     UINT32                  Component,
    939     const char              *Module,
    940     UINT32                  Line);
    941 
    942 void
    943 AcpiUtDumpAllocationInfo (
    944     void);
    945 
    946 void
    947 AcpiUtDumpAllocations (
    948     UINT32                  Component,
    949     const char              *Module);
    950 
    951 ACPI_STATUS
    952 AcpiUtCreateList (
    953     const char              *ListName,
    954     UINT16                  ObjectSize,
    955     ACPI_MEMORY_LIST        **ReturnCache);
    956 
    957 #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
    958 
    959 
    960 /*
    961  * utaddress - address range check
    962  */
    963 ACPI_STATUS
    964 AcpiUtAddAddressRange (
    965     ACPI_ADR_SPACE_TYPE     SpaceId,
    966     ACPI_PHYSICAL_ADDRESS   Address,
    967     UINT32                  Length,
    968     ACPI_NAMESPACE_NODE     *RegionNode);
    969 
    970 void
    971 AcpiUtRemoveAddressRange (
    972     ACPI_ADR_SPACE_TYPE     SpaceId,
    973     ACPI_NAMESPACE_NODE     *RegionNode);
    974 
    975 UINT32
    976 AcpiUtCheckAddressRange (
    977     ACPI_ADR_SPACE_TYPE     SpaceId,
    978     ACPI_PHYSICAL_ADDRESS   Address,
    979     UINT32                  Length,
    980     BOOLEAN                 Warn);
    981 
    982 void
    983 AcpiUtDeleteAddressLists (
    984     void);
    985 
    986 
    987 /*
    988  * utxferror - various error/warning output functions
    989  */
    990 void ACPI_INTERNAL_VAR_XFACE
    991 AcpiUtPredefinedWarning (
    992     const char              *ModuleName,
    993     UINT32                  LineNumber,
    994     char                    *Pathname,
    995     UINT8                   NodeFlags,
    996     const char              *Format,
    997     ...);
    998 
    999 void ACPI_INTERNAL_VAR_XFACE
   1000 AcpiUtPredefinedInfo (
   1001     const char              *ModuleName,
   1002     UINT32                  LineNumber,
   1003     char                    *Pathname,
   1004     UINT8                   NodeFlags,
   1005     const char              *Format,
   1006     ...);
   1007 
   1008 void ACPI_INTERNAL_VAR_XFACE
   1009 AcpiUtPredefinedBiosError (
   1010     const char              *ModuleName,
   1011     UINT32                  LineNumber,
   1012     char                    *Pathname,
   1013     UINT8                   NodeFlags,
   1014     const char              *Format,
   1015     ...);
   1016 
   1017 void
   1018 AcpiUtNamespaceError (
   1019     const char              *ModuleName,
   1020     UINT32                  LineNumber,
   1021     const char              *InternalName,
   1022     ACPI_STATUS             LookupStatus);
   1023 
   1024 void
   1025 AcpiUtMethodError (
   1026     const char              *ModuleName,
   1027     UINT32                  LineNumber,
   1028     const char              *Message,
   1029     ACPI_NAMESPACE_NODE     *Node,
   1030     const char              *Path,
   1031     ACPI_STATUS             LookupStatus);
   1032 
   1033 
   1034 /*
   1035  * Utility functions for ACPI names and IDs
   1036  */
   1037 const AH_PREDEFINED_NAME *
   1038 AcpiAhMatchPredefinedName (
   1039     char                    *Nameseg);
   1040 
   1041 const AH_DEVICE_ID *
   1042 AcpiAhMatchHardwareId (
   1043     char                    *Hid);
   1044 
   1045 const char *
   1046 AcpiAhMatchUuid (
   1047     UINT8                   *Data);
   1048 
   1049 
   1050 /*
   1051  * utprint - printf/vprintf output functions
   1052  */
   1053 const char *
   1054 AcpiUtScanNumber (
   1055     const char              *String,
   1056     UINT64                  *NumberPtr);
   1057 
   1058 const char *
   1059 AcpiUtPrintNumber (
   1060     char                    *String,
   1061     UINT64                  Number);
   1062 
   1063 int
   1064 AcpiUtVsnprintf (
   1065     char                    *String,
   1066     ACPI_SIZE               Size,
   1067     const char              *Format,
   1068     va_list                 Args);
   1069 
   1070 int
   1071 AcpiUtSnprintf (
   1072     char                    *String,
   1073     ACPI_SIZE               Size,
   1074     const char              *Format,
   1075     ...);
   1076 
   1077 #ifdef ACPI_APPLICATION
   1078 int
   1079 AcpiUtFileVprintf (
   1080     ACPI_FILE               File,
   1081     const char              *Format,
   1082     va_list                 Args);
   1083 
   1084 int
   1085 AcpiUtFilePrintf (
   1086     ACPI_FILE               File,
   1087     const char              *Format,
   1088     ...);
   1089 #endif
   1090 
   1091 
   1092 /*
   1093  * utuuid -- UUID support functions
   1094  */
   1095 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP|| defined ACPI_DISASSEMBLER)
   1096 void
   1097 AcpiUtConvertStringToUuid (
   1098     const char              *InString,
   1099     UINT8                   *UuidBuffer);
   1100 #endif
   1101 
   1102 #endif /* _ACUTILS_H */
   1103