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