Home | History | Annotate | Line # | Download | only in include
acutils.h revision 1.3
      1 /******************************************************************************
      2  *
      3  * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2011, 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 
     50 /* Strings used by the disassembler and debugger resource dump routines */
     51 
     52 #if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
     53 
     54 extern const char                       *AcpiGbl_BmDecode[];
     55 extern const char                       *AcpiGbl_ConfigDecode[];
     56 extern const char                       *AcpiGbl_ConsumeDecode[];
     57 extern const char                       *AcpiGbl_DecDecode[];
     58 extern const char                       *AcpiGbl_HeDecode[];
     59 extern const char                       *AcpiGbl_IoDecode[];
     60 extern const char                       *AcpiGbl_LlDecode[];
     61 extern const char                       *AcpiGbl_MaxDecode[];
     62 extern const char                       *AcpiGbl_MemDecode[];
     63 extern const char                       *AcpiGbl_MinDecode[];
     64 extern const char                       *AcpiGbl_MtpDecode[];
     65 extern const char                       *AcpiGbl_RngDecode[];
     66 extern const char                       *AcpiGbl_RwDecode[];
     67 extern const char                       *AcpiGbl_ShrDecode[];
     68 extern const char                       *AcpiGbl_SizDecode[];
     69 extern const char                       *AcpiGbl_TrsDecode[];
     70 extern const char                       *AcpiGbl_TtpDecode[];
     71 extern const char                       *AcpiGbl_TypDecode[];
     72 #endif
     73 
     74 /* Types for Resource descriptor entries */
     75 
     76 #define ACPI_INVALID_RESOURCE           0
     77 #define ACPI_FIXED_LENGTH               1
     78 #define ACPI_VARIABLE_LENGTH            2
     79 #define ACPI_SMALL_VARIABLE_LENGTH      3
     80 
     81 typedef
     82 ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
     83     UINT8                   *Aml,
     84     UINT32                  Length,
     85     UINT32                  Offset,
     86     UINT8                   ResourceIndex,
     87     void                    *Context);
     88 
     89 typedef
     90 ACPI_STATUS (*ACPI_PKG_CALLBACK) (
     91     UINT8                   ObjectType,
     92     ACPI_OPERAND_OBJECT     *SourceObject,
     93     ACPI_GENERIC_STATE      *State,
     94     void                    *Context);
     95 
     96 typedef struct acpi_pkg_info
     97 {
     98     UINT8                   *FreeSpace;
     99     ACPI_SIZE               Length;
    100     UINT32                  ObjectSpace;
    101     UINT32                  NumPackages;
    102 
    103 } ACPI_PKG_INFO;
    104 
    105 #define REF_INCREMENT       (UINT16) 0
    106 #define REF_DECREMENT       (UINT16) 1
    107 #define REF_FORCE_DELETE    (UINT16) 2
    108 
    109 /* AcpiUtDumpBuffer */
    110 
    111 #define DB_BYTE_DISPLAY     1
    112 #define DB_WORD_DISPLAY     2
    113 #define DB_DWORD_DISPLAY    4
    114 #define DB_QWORD_DISPLAY    8
    115 
    116 
    117 /*
    118  * utglobal - Global data structures and procedures
    119  */
    120 ACPI_STATUS
    121 AcpiUtInitGlobals (
    122     void);
    123 
    124 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
    125 
    126 const char *
    127 AcpiUtGetMutexName (
    128     UINT32                  MutexId);
    129 
    130 const char *
    131 AcpiUtGetNotifyName (
    132     UINT32                  NotifyValue);
    133 
    134 #endif
    135 
    136 char *
    137 AcpiUtGetTypeName (
    138     ACPI_OBJECT_TYPE        Type);
    139 
    140 char *
    141 AcpiUtGetNodeName (
    142     void                    *Object);
    143 
    144 const char *
    145 AcpiUtGetDescriptorName (
    146     void                    *Object);
    147 
    148 const char *
    149 AcpiUtGetReferenceName (
    150     ACPI_OPERAND_OBJECT     *Object);
    151 
    152 char *
    153 AcpiUtGetObjectTypeName (
    154     ACPI_OPERAND_OBJECT     *ObjDesc);
    155 
    156 char *
    157 AcpiUtGetRegionName (
    158     UINT8                   SpaceId);
    159 
    160 char *
    161 AcpiUtGetEventName (
    162     UINT32                  EventId);
    163 
    164 char
    165 AcpiUtHexToAsciiChar (
    166     UINT64                  Integer,
    167     UINT32                  Position);
    168 
    169 BOOLEAN
    170 AcpiUtValidObjectType (
    171     ACPI_OBJECT_TYPE        Type);
    172 
    173 
    174 /*
    175  * utinit - miscellaneous initialization and shutdown
    176  */
    177 ACPI_STATUS
    178 AcpiUtHardwareInitialize (
    179     void);
    180 
    181 void
    182 AcpiUtSubsystemShutdown (
    183     void);
    184 
    185 
    186 /*
    187  * utclib - Local implementations of C library functions
    188  */
    189 #ifndef ACPI_USE_SYSTEM_CLIBRARY
    190 
    191 ACPI_SIZE
    192 AcpiUtStrlen (
    193     const char              *String);
    194 
    195 char *
    196 AcpiUtStrcpy (
    197     char                    *DstString,
    198     const char              *SrcString);
    199 
    200 char *
    201 AcpiUtStrncpy (
    202     char                    *DstString,
    203     const char              *SrcString,
    204     ACPI_SIZE               Count);
    205 
    206 int
    207 AcpiUtMemcmp (
    208     const char              *Buffer1,
    209     const char              *Buffer2,
    210     ACPI_SIZE               Count);
    211 
    212 int
    213 AcpiUtStrncmp (
    214     const char              *String1,
    215     const char              *String2,
    216     ACPI_SIZE               Count);
    217 
    218 int
    219 AcpiUtStrcmp (
    220     const char              *String1,
    221     const char              *String2);
    222 
    223 char *
    224 AcpiUtStrcat (
    225     char                    *DstString,
    226     const char              *SrcString);
    227 
    228 char *
    229 AcpiUtStrncat (
    230     char                    *DstString,
    231     const char              *SrcString,
    232     ACPI_SIZE               Count);
    233 
    234 UINT32
    235 AcpiUtStrtoul (
    236     const char              *String,
    237     char                    **Terminator,
    238     UINT32                  Base);
    239 
    240 char *
    241 AcpiUtStrstr (
    242     char                    *String1,
    243     char                    *String2);
    244 
    245 void *
    246 AcpiUtMemcpy (
    247     void                    *Dest,
    248     const void              *Src,
    249     ACPI_SIZE               Count);
    250 
    251 void *
    252 AcpiUtMemset (
    253     void                    *Dest,
    254     UINT8                   Value,
    255     ACPI_SIZE               Count);
    256 
    257 int
    258 AcpiUtToUpper (
    259     int                     c);
    260 
    261 int
    262 AcpiUtToLower (
    263     int                     c);
    264 
    265 extern const UINT8 _acpi_ctype[];
    266 
    267 #define _ACPI_XA     0x00    /* extra alphabetic - not supported */
    268 #define _ACPI_XS     0x40    /* extra space */
    269 #define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
    270 #define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
    271 #define _ACPI_DI     0x04    /* '0'-'9' */
    272 #define _ACPI_LO     0x02    /* 'a'-'z' */
    273 #define _ACPI_PU     0x10    /* punctuation */
    274 #define _ACPI_SP     0x08    /* space */
    275 #define _ACPI_UP     0x01    /* 'A'-'Z' */
    276 #define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
    277 
    278 #define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
    279 #define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
    280 #define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
    281 #define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
    282 #define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
    283 #define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
    284 #define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
    285 
    286 #endif /* !ACPI_USE_SYSTEM_CLIBRARY */
    287 
    288 #define ACPI_IS_ASCII(c)  ((c) < 0x80)
    289 
    290 
    291 /*
    292  * utcopy - Object construction and conversion interfaces
    293  */
    294 ACPI_STATUS
    295 AcpiUtBuildSimpleObject(
    296     ACPI_OPERAND_OBJECT     *Obj,
    297     ACPI_OBJECT             *UserObj,
    298     UINT8                   *DataSpace,
    299     UINT32                  *BufferSpaceUsed);
    300 
    301 ACPI_STATUS
    302 AcpiUtBuildPackageObject (
    303     ACPI_OPERAND_OBJECT     *Obj,
    304     UINT8                   *Buffer,
    305     UINT32                  *SpaceUsed);
    306 
    307 ACPI_STATUS
    308 AcpiUtCopyIobjectToEobject (
    309     ACPI_OPERAND_OBJECT     *Obj,
    310     ACPI_BUFFER             *RetBuffer);
    311 
    312 ACPI_STATUS
    313 AcpiUtCopyEobjectToIobject (
    314     ACPI_OBJECT             *Obj,
    315     ACPI_OPERAND_OBJECT     **InternalObj);
    316 
    317 ACPI_STATUS
    318 AcpiUtCopyISimpleToIsimple (
    319     ACPI_OPERAND_OBJECT     *SourceObj,
    320     ACPI_OPERAND_OBJECT     *DestObj);
    321 
    322 ACPI_STATUS
    323 AcpiUtCopyIobjectToIobject (
    324     ACPI_OPERAND_OBJECT     *SourceDesc,
    325     ACPI_OPERAND_OBJECT     **DestDesc,
    326     ACPI_WALK_STATE         *WalkState);
    327 
    328 
    329 /*
    330  * utcreate - Object creation
    331  */
    332 ACPI_STATUS
    333 AcpiUtUpdateObjectReference (
    334     ACPI_OPERAND_OBJECT     *Object,
    335     UINT16                  Action);
    336 
    337 
    338 /*
    339  * utdebug - Debug interfaces
    340  */
    341 void
    342 AcpiUtInitStackPtrTrace (
    343     void);
    344 
    345 void
    346 AcpiUtTrackStackPtr (
    347     void);
    348 
    349 void
    350 AcpiUtTrace (
    351     UINT32                  LineNumber,
    352     const char              *FunctionName,
    353     const char              *ModuleName,
    354     UINT32                  ComponentId);
    355 
    356 void
    357 AcpiUtTracePtr (
    358     UINT32                  LineNumber,
    359     const char              *FunctionName,
    360     const char              *ModuleName,
    361     UINT32                  ComponentId,
    362     void                    *Pointer);
    363 
    364 void
    365 AcpiUtTraceU32 (
    366     UINT32                  LineNumber,
    367     const char              *FunctionName,
    368     const char              *ModuleName,
    369     UINT32                  ComponentId,
    370     UINT32                  Integer);
    371 
    372 void
    373 AcpiUtTraceStr (
    374     UINT32                  LineNumber,
    375     const char              *FunctionName,
    376     const char              *ModuleName,
    377     UINT32                  ComponentId,
    378     char                    *String);
    379 
    380 void
    381 AcpiUtExit (
    382     UINT32                  LineNumber,
    383     const char              *FunctionName,
    384     const char              *ModuleName,
    385     UINT32                  ComponentId);
    386 
    387 void
    388 AcpiUtStatusExit (
    389     UINT32                  LineNumber,
    390     const char              *FunctionName,
    391     const char              *ModuleName,
    392     UINT32                  ComponentId,
    393     ACPI_STATUS             Status);
    394 
    395 void
    396 AcpiUtValueExit (
    397     UINT32                  LineNumber,
    398     const char              *FunctionName,
    399     const char              *ModuleName,
    400     UINT32                  ComponentId,
    401     UINT64                  Value);
    402 
    403 void
    404 AcpiUtPtrExit (
    405     UINT32                  LineNumber,
    406     const char              *FunctionName,
    407     const char              *ModuleName,
    408     UINT32                  ComponentId,
    409     UINT8                   *Ptr);
    410 
    411 void
    412 AcpiUtDumpBuffer (
    413     UINT8                   *Buffer,
    414     UINT32                  Count,
    415     UINT32                  Display,
    416     UINT32                  componentId);
    417 
    418 void
    419 AcpiUtDumpBuffer2 (
    420     UINT8                   *Buffer,
    421     UINT32                  Count,
    422     UINT32                  Display);
    423 
    424 void
    425 AcpiUtReportError (
    426     char                    *ModuleName,
    427     UINT32                  LineNumber);
    428 
    429 void
    430 AcpiUtReportInfo (
    431     char                    *ModuleName,
    432     UINT32                  LineNumber);
    433 
    434 void
    435 AcpiUtReportWarning (
    436     char                    *ModuleName,
    437     UINT32                  LineNumber);
    438 
    439 /*
    440  * utdelete - Object deletion and reference counts
    441  */
    442 void
    443 AcpiUtAddReference (
    444     ACPI_OPERAND_OBJECT     *Object);
    445 
    446 void
    447 AcpiUtRemoveReference (
    448     ACPI_OPERAND_OBJECT     *Object);
    449 
    450 void
    451 AcpiUtDeleteInternalPackageObject (
    452     ACPI_OPERAND_OBJECT     *Object);
    453 
    454 void
    455 AcpiUtDeleteInternalSimpleObject (
    456     ACPI_OPERAND_OBJECT     *Object);
    457 
    458 void
    459 AcpiUtDeleteInternalObjectList (
    460     ACPI_OPERAND_OBJECT     **ObjList);
    461 
    462 
    463 /*
    464  * uteval - object evaluation
    465  */
    466 ACPI_STATUS
    467 AcpiUtEvaluateObject (
    468     ACPI_NAMESPACE_NODE     *PrefixNode,
    469     const char              *Path,
    470     UINT32                  ExpectedReturnBtypes,
    471     ACPI_OPERAND_OBJECT     **ReturnDesc);
    472 
    473 ACPI_STATUS
    474 AcpiUtEvaluateNumericObject (
    475     const char              *ObjectName,
    476     ACPI_NAMESPACE_NODE     *DeviceNode,
    477     UINT64                  *Value);
    478 
    479 ACPI_STATUS
    480 AcpiUtExecute_STA (
    481     ACPI_NAMESPACE_NODE     *DeviceNode,
    482     UINT32                  *StatusFlags);
    483 
    484 ACPI_STATUS
    485 AcpiUtExecutePowerMethods (
    486     ACPI_NAMESPACE_NODE     *DeviceNode,
    487     const char              **MethodNames,
    488     UINT8                   MethodCount,
    489     UINT8                   *OutValues);
    490 
    491 
    492 /*
    493  * utids - device ID support
    494  */
    495 ACPI_STATUS
    496 AcpiUtExecute_HID (
    497     ACPI_NAMESPACE_NODE     *DeviceNode,
    498     ACPI_DEVICE_ID          **ReturnId);
    499 
    500 ACPI_STATUS
    501 AcpiUtExecute_UID (
    502     ACPI_NAMESPACE_NODE     *DeviceNode,
    503     ACPI_DEVICE_ID          **ReturnId);
    504 
    505 ACPI_STATUS
    506 AcpiUtExecute_CID (
    507     ACPI_NAMESPACE_NODE     *DeviceNode,
    508     ACPI_DEVICE_ID_LIST     **ReturnCidList);
    509 
    510 
    511 /*
    512  * utlock - reader/writer locks
    513  */
    514 ACPI_STATUS
    515 AcpiUtCreateRwLock (
    516     ACPI_RW_LOCK            *Lock);
    517 
    518 void
    519 AcpiUtDeleteRwLock (
    520     ACPI_RW_LOCK            *Lock);
    521 
    522 ACPI_STATUS
    523 AcpiUtAcquireReadLock (
    524     ACPI_RW_LOCK            *Lock);
    525 
    526 ACPI_STATUS
    527 AcpiUtReleaseReadLock (
    528     ACPI_RW_LOCK            *Lock);
    529 
    530 ACPI_STATUS
    531 AcpiUtAcquireWriteLock (
    532     ACPI_RW_LOCK            *Lock);
    533 
    534 void
    535 AcpiUtReleaseWriteLock (
    536     ACPI_RW_LOCK            *Lock);
    537 
    538 
    539 /*
    540  * utobject - internal object create/delete/cache routines
    541  */
    542 ACPI_OPERAND_OBJECT  *
    543 AcpiUtCreateInternalObjectDbg (
    544     const char              *ModuleName,
    545     UINT32                  LineNumber,
    546     UINT32                  ComponentId,
    547     ACPI_OBJECT_TYPE        Type);
    548 
    549 void *
    550 AcpiUtAllocateObjectDescDbg (
    551     const char              *ModuleName,
    552     UINT32                  LineNumber,
    553     UINT32                  ComponentId);
    554 
    555 #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
    556 #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
    557 
    558 void
    559 AcpiUtDeleteObjectDesc (
    560     ACPI_OPERAND_OBJECT     *Object);
    561 
    562 BOOLEAN
    563 AcpiUtValidInternalObject (
    564     void                    *Object);
    565 
    566 ACPI_OPERAND_OBJECT *
    567 AcpiUtCreatePackageObject (
    568     UINT32                  Count);
    569 
    570 ACPI_OPERAND_OBJECT *
    571 AcpiUtCreateIntegerObject (
    572     UINT64                  Value);
    573 
    574 ACPI_OPERAND_OBJECT *
    575 AcpiUtCreateBufferObject (
    576     ACPI_SIZE               BufferSize);
    577 
    578 ACPI_OPERAND_OBJECT *
    579 AcpiUtCreateStringObject (
    580     ACPI_SIZE               StringSize);
    581 
    582 ACPI_STATUS
    583 AcpiUtGetObjectSize(
    584     ACPI_OPERAND_OBJECT     *Obj,
    585     ACPI_SIZE               *ObjLength);
    586 
    587 
    588 /*
    589  * utosi - Support for the _OSI predefined control method
    590  */
    591 ACPI_STATUS
    592 AcpiUtInitializeInterfaces (
    593     void);
    594 
    595 void
    596 AcpiUtInterfaceTerminate (
    597     void);
    598 
    599 ACPI_STATUS
    600 AcpiUtInstallInterface (
    601     ACPI_STRING             InterfaceName);
    602 
    603 ACPI_STATUS
    604 AcpiUtRemoveInterface (
    605     ACPI_STRING             InterfaceName);
    606 
    607 ACPI_INTERFACE_INFO *
    608 AcpiUtGetInterface (
    609     ACPI_STRING             InterfaceName);
    610 
    611 ACPI_STATUS
    612 AcpiUtOsiImplementation (
    613     ACPI_WALK_STATE         *WalkState);
    614 
    615 
    616 /*
    617  * utstate - Generic state creation/cache routines
    618  */
    619 void
    620 AcpiUtPushGenericState (
    621     ACPI_GENERIC_STATE      **ListHead,
    622     ACPI_GENERIC_STATE      *State);
    623 
    624 ACPI_GENERIC_STATE *
    625 AcpiUtPopGenericState (
    626     ACPI_GENERIC_STATE      **ListHead);
    627 
    628 
    629 ACPI_GENERIC_STATE *
    630 AcpiUtCreateGenericState (
    631     void);
    632 
    633 ACPI_THREAD_STATE *
    634 AcpiUtCreateThreadState (
    635     void);
    636 
    637 ACPI_GENERIC_STATE *
    638 AcpiUtCreateUpdateState (
    639     ACPI_OPERAND_OBJECT     *Object,
    640     UINT16                  Action);
    641 
    642 ACPI_GENERIC_STATE *
    643 AcpiUtCreatePkgState (
    644     void                    *InternalObject,
    645     void                    *ExternalObject,
    646     UINT16                  Index);
    647 
    648 ACPI_STATUS
    649 AcpiUtCreateUpdateStateAndPush (
    650     ACPI_OPERAND_OBJECT     *Object,
    651     UINT16                  Action,
    652     ACPI_GENERIC_STATE      **StateList);
    653 
    654 ACPI_STATUS
    655 AcpiUtCreatePkgStateAndPush (
    656     void                    *InternalObject,
    657     void                    *ExternalObject,
    658     UINT16                  Index,
    659     ACPI_GENERIC_STATE      **StateList);
    660 
    661 ACPI_GENERIC_STATE *
    662 AcpiUtCreateControlState (
    663     void);
    664 
    665 void
    666 AcpiUtDeleteGenericState (
    667     ACPI_GENERIC_STATE      *State);
    668 
    669 
    670 /*
    671  * utmath
    672  */
    673 ACPI_STATUS
    674 AcpiUtDivide (
    675     UINT64                  InDividend,
    676     UINT64                  InDivisor,
    677     UINT64                  *OutQuotient,
    678     UINT64                  *OutRemainder);
    679 
    680 ACPI_STATUS
    681 AcpiUtShortDivide (
    682     UINT64                  InDividend,
    683     UINT32                  Divisor,
    684     UINT64                  *OutQuotient,
    685     UINT32                  *OutRemainder);
    686 
    687 /*
    688  * utmisc
    689  */
    690 const char *
    691 AcpiUtValidateException (
    692     ACPI_STATUS             Status);
    693 
    694 BOOLEAN
    695 AcpiUtIsPciRootBridge (
    696     char                    *Id);
    697 
    698 BOOLEAN
    699 AcpiUtIsAmlTable (
    700     ACPI_TABLE_HEADER       *Table);
    701 
    702 ACPI_STATUS
    703 AcpiUtAllocateOwnerId (
    704     ACPI_OWNER_ID           *OwnerId);
    705 
    706 void
    707 AcpiUtReleaseOwnerId (
    708     ACPI_OWNER_ID           *OwnerId);
    709 
    710 ACPI_STATUS
    711 AcpiUtWalkPackageTree (
    712     ACPI_OPERAND_OBJECT     *SourceObject,
    713     void                    *TargetObject,
    714     ACPI_PKG_CALLBACK       WalkCallback,
    715     void                    *Context);
    716 
    717 void
    718 AcpiUtStrupr (
    719     char                    *SrcString);
    720 
    721 void
    722 AcpiUtStrlwr (
    723     char                    *SrcString);
    724 
    725 void
    726 AcpiUtPrintString (
    727     char                    *String,
    728     UINT8                   MaxLength);
    729 
    730 BOOLEAN
    731 AcpiUtValidAcpiName (
    732     UINT32                  Name);
    733 
    734 void
    735 AcpiUtRepairName (
    736     char                    *Name);
    737 
    738 BOOLEAN
    739 AcpiUtValidAcpiChar (
    740     char                    Character,
    741     UINT32                  Position);
    742 
    743 ACPI_STATUS
    744 AcpiUtStrtoul64 (
    745     char                    *String,
    746     UINT32                  Base,
    747     UINT64                  *RetInteger);
    748 
    749 /* Values for Base above (16=Hex, 10=Decimal) */
    750 
    751 #define ACPI_ANY_BASE        0
    752 
    753 UINT32
    754 AcpiUtDwordByteSwap (
    755     UINT32                  Value);
    756 
    757 void
    758 AcpiUtSetIntegerWidth (
    759     UINT8                   Revision);
    760 
    761 #ifdef ACPI_DEBUG_OUTPUT
    762 void
    763 AcpiUtDisplayInitPathname (
    764     UINT8                   Type,
    765     ACPI_NAMESPACE_NODE     *ObjHandle,
    766     const char              *Path);
    767 #endif
    768 
    769 
    770 /*
    771  * utresrc
    772  */
    773 ACPI_STATUS
    774 AcpiUtWalkAmlResources (
    775     UINT8                   *Aml,
    776     ACPI_SIZE               AmlLength,
    777     ACPI_WALK_AML_CALLBACK  UserFunction,
    778     void                    *Context);
    779 
    780 ACPI_STATUS
    781 AcpiUtValidateResource (
    782     void                    *Aml,
    783     UINT8                   *ReturnIndex);
    784 
    785 UINT32
    786 AcpiUtGetDescriptorLength (
    787     void                    *Aml);
    788 
    789 UINT16
    790 AcpiUtGetResourceLength (
    791     void                    *Aml);
    792 
    793 UINT8
    794 AcpiUtGetResourceHeaderLength (
    795     void                    *Aml);
    796 
    797 UINT8
    798 AcpiUtGetResourceType (
    799     void                    *Aml);
    800 
    801 ACPI_STATUS
    802 AcpiUtGetResourceEndTag (
    803     ACPI_OPERAND_OBJECT     *ObjDesc,
    804     UINT8                   **EndTag);
    805 
    806 
    807 /*
    808  * utmutex - mutex support
    809  */
    810 ACPI_STATUS
    811 AcpiUtMutexInitialize (
    812     void);
    813 
    814 void
    815 AcpiUtMutexTerminate (
    816     void);
    817 
    818 ACPI_STATUS
    819 AcpiUtAcquireMutex (
    820     ACPI_MUTEX_HANDLE       MutexId);
    821 
    822 ACPI_STATUS
    823 AcpiUtReleaseMutex (
    824     ACPI_MUTEX_HANDLE       MutexId);
    825 
    826 
    827 /*
    828  * utalloc - memory allocation and object caching
    829  */
    830 ACPI_STATUS
    831 AcpiUtCreateCaches (
    832     void);
    833 
    834 ACPI_STATUS
    835 AcpiUtDeleteCaches (
    836     void);
    837 
    838 ACPI_STATUS
    839 AcpiUtValidateBuffer (
    840     ACPI_BUFFER             *Buffer);
    841 
    842 ACPI_STATUS
    843 AcpiUtInitializeBuffer (
    844     ACPI_BUFFER             *Buffer,
    845     ACPI_SIZE               RequiredLength);
    846 
    847 void *
    848 AcpiUtAllocate (
    849     ACPI_SIZE               Size,
    850     UINT32                  Component,
    851     const char              *Module,
    852     UINT32                  Line);
    853 
    854 void *
    855 AcpiUtAllocateZeroed (
    856     ACPI_SIZE               Size,
    857     UINT32                  Component,
    858     const char              *Module,
    859     UINT32                  Line);
    860 
    861 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
    862 void *
    863 AcpiUtAllocateAndTrack (
    864     ACPI_SIZE               Size,
    865     UINT32                  Component,
    866     const char              *Module,
    867     UINT32                  Line);
    868 
    869 void *
    870 AcpiUtAllocateZeroedAndTrack (
    871     ACPI_SIZE               Size,
    872     UINT32                  Component,
    873     const char              *Module,
    874     UINT32                  Line);
    875 
    876 void
    877 AcpiUtFreeAndTrack (
    878     void                    *Address,
    879     UINT32                  Component,
    880     const char              *Module,
    881     UINT32                  Line);
    882 
    883 void
    884 AcpiUtDumpAllocationInfo (
    885     void);
    886 
    887 void
    888 AcpiUtDumpAllocations (
    889     UINT32                  Component,
    890     const char              *Module);
    891 
    892 ACPI_STATUS
    893 AcpiUtCreateList (
    894     const char              *ListName,
    895     UINT16                  ObjectSize,
    896     ACPI_MEMORY_LIST        **ReturnCache);
    897 
    898 #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
    899 
    900 
    901 /*
    902  * utxferror - various error/warning output functions
    903  */
    904 void ACPI_INTERNAL_VAR_XFACE
    905 AcpiUtPredefinedWarning (
    906     const char              *ModuleName,
    907     UINT32                  LineNumber,
    908     char                    *Pathname,
    909     UINT8                   NodeFlags,
    910     const char              *Format,
    911     ...);
    912 
    913 void ACPI_INTERNAL_VAR_XFACE
    914 AcpiUtPredefinedInfo (
    915     const char              *ModuleName,
    916     UINT32                  LineNumber,
    917     char                    *Pathname,
    918     UINT8                   NodeFlags,
    919     const char              *Format,
    920     ...);
    921 
    922 void
    923 AcpiUtNamespaceError (
    924     const char              *ModuleName,
    925     UINT32                  LineNumber,
    926     const char              *InternalName,
    927     ACPI_STATUS             LookupStatus);
    928 
    929 void
    930 AcpiUtMethodError (
    931     const char              *ModuleName,
    932     UINT32                  LineNumber,
    933     const char              *Message,
    934     ACPI_NAMESPACE_NODE     *Node,
    935     const char              *Path,
    936     ACPI_STATUS             LookupStatus);
    937 
    938 #endif /* _ACUTILS_H */
    939