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