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