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