Subversion Repositories Kolibri OS

Rev

Rev 1498 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /******************************************************************************
  2.  *
  3.  * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
  4.  *
  5.  *****************************************************************************/
  6.  
  7. /******************************************************************************
  8.  *
  9.  * 1. Copyright Notice
  10.  *
  11.  * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
  12.  * All rights reserved.
  13.  *
  14.  * 2. License
  15.  *
  16.  * 2.1. This is your license from Intel Corp. under its intellectual property
  17.  * rights.  You may have additional license terms from the party that provided
  18.  * you this software, covering your right to use that party's intellectual
  19.  * property rights.
  20.  *
  21.  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
  22.  * copy of the source code appearing in this file ("Covered Code") an
  23.  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
  24.  * base code distributed originally by Intel ("Original Intel Code") to copy,
  25.  * make derivatives, distribute, use and display any portion of the Covered
  26.  * Code in any form, with the right to sublicense such rights; and
  27.  *
  28.  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
  29.  * license (with the right to sublicense), under only those claims of Intel
  30.  * patents that are infringed by the Original Intel Code, to make, use, sell,
  31.  * offer to sell, and import the Covered Code and derivative works thereof
  32.  * solely to the minimum extent necessary to exercise the above copyright
  33.  * license, and in no event shall the patent license extend to any additions
  34.  * to or modifications of the Original Intel Code.  No other license or right
  35.  * is granted directly or by implication, estoppel or otherwise;
  36.  *
  37.  * The above copyright and patent license is granted only if the following
  38.  * conditions are met:
  39.  *
  40.  * 3. Conditions
  41.  *
  42.  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
  43.  * Redistribution of source code of any substantial portion of the Covered
  44.  * Code or modification with rights to further distribute source must include
  45.  * the above Copyright Notice, the above License, this list of Conditions,
  46.  * and the following Disclaimer and Export Compliance provision.  In addition,
  47.  * Licensee must cause all Covered Code to which Licensee contributes to
  48.  * contain a file documenting the changes Licensee made to create that Covered
  49.  * Code and the date of any change.  Licensee must include in that file the
  50.  * documentation of any changes made by any predecessor Licensee.  Licensee
  51.  * must include a prominent statement that the modification is derived,
  52.  * directly or indirectly, from Original Intel Code.
  53.  *
  54.  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
  55.  * Redistribution of source code of any substantial portion of the Covered
  56.  * Code or modification without rights to further distribute source must
  57.  * include the following Disclaimer and Export Compliance provision in the
  58.  * documentation and/or other materials provided with distribution.  In
  59.  * addition, Licensee may not authorize further sublicense of source of any
  60.  * portion of the Covered Code, and must include terms to the effect that the
  61.  * license from Licensee to its licensee is limited to the intellectual
  62.  * property embodied in the software Licensee provides to its licensee, and
  63.  * not to intellectual property embodied in modifications its licensee may
  64.  * make.
  65.  *
  66.  * 3.3. Redistribution of Executable. Redistribution in executable form of any
  67.  * substantial portion of the Covered Code or modification must reproduce the
  68.  * above Copyright Notice, and the following Disclaimer and Export Compliance
  69.  * provision in the documentation and/or other materials provided with the
  70.  * distribution.
  71.  *
  72.  * 3.4. Intel retains all right, title, and interest in and to the Original
  73.  * Intel Code.
  74.  *
  75.  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
  76.  * Intel shall be used in advertising or otherwise to promote the sale, use or
  77.  * other dealings in products derived from or relating to the Covered Code
  78.  * without prior written authorization from Intel.
  79.  *
  80.  * 4. Disclaimer and Export Compliance
  81.  *
  82.  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
  83.  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
  84.  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
  85.  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
  86.  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
  87.  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
  88.  * PARTICULAR PURPOSE.
  89.  *
  90.  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
  91.  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
  92.  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
  93.  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
  94.  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
  95.  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
  96.  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
  97.  * LIMITED REMEDY.
  98.  *
  99.  * 4.3. Licensee shall not export, either directly or indirectly, any of this
  100.  * software or system incorporating such software without first obtaining any
  101.  * required license or other approval from the U. S. Department of Commerce or
  102.  * any other agency or department of the United States Government.  In the
  103.  * event Licensee exports any such software from the United States or
  104.  * re-exports any such software from a foreign destination, Licensee shall
  105.  * ensure that the distribution and export/re-export of the software is in
  106.  * compliance with all laws, regulations, orders, or other restrictions of the
  107.  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
  108.  * any of its subsidiaries will export/re-export any technical data, process,
  109.  * software, or service, directly or indirectly, to any country for which the
  110.  * United States government or any agency thereof requires an export license,
  111.  * other governmental approval, or letter of assurance, without first obtaining
  112.  * such license, approval or letter.
  113.  *
  114.  *****************************************************************************/
  115.  
  116. #ifndef _ACUTILS_H
  117. #define _ACUTILS_H
  118.  
  119.  
  120. extern const UINT8                      AcpiGbl_ResourceAmlSizes[];
  121.  
  122. /* Strings used by the disassembler and debugger resource dump routines */
  123.  
  124. #if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
  125.  
  126. extern const char                       *AcpiGbl_BmDecode[];
  127. extern const char                       *AcpiGbl_ConfigDecode[];
  128. extern const char                       *AcpiGbl_ConsumeDecode[];
  129. extern const char                       *AcpiGbl_DecDecode[];
  130. extern const char                       *AcpiGbl_HeDecode[];
  131. extern const char                       *AcpiGbl_IoDecode[];
  132. extern const char                       *AcpiGbl_LlDecode[];
  133. extern const char                       *AcpiGbl_MaxDecode[];
  134. extern const char                       *AcpiGbl_MemDecode[];
  135. extern const char                       *AcpiGbl_MinDecode[];
  136. extern const char                       *AcpiGbl_MtpDecode[];
  137. extern const char                       *AcpiGbl_RngDecode[];
  138. extern const char                       *AcpiGbl_RwDecode[];
  139. extern const char                       *AcpiGbl_ShrDecode[];
  140. extern const char                       *AcpiGbl_SizDecode[];
  141. extern const char                       *AcpiGbl_TrsDecode[];
  142. extern const char                       *AcpiGbl_TtpDecode[];
  143. extern const char                       *AcpiGbl_TypDecode[];
  144. #endif
  145.  
  146. /* Types for Resource descriptor entries */
  147.  
  148. #define ACPI_INVALID_RESOURCE           0
  149. #define ACPI_FIXED_LENGTH               1
  150. #define ACPI_VARIABLE_LENGTH            2
  151. #define ACPI_SMALL_VARIABLE_LENGTH      3
  152.  
  153. typedef
  154. ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
  155.     UINT8                   *Aml,
  156.     UINT32                  Length,
  157.     UINT32                  Offset,
  158.     UINT8                   ResourceIndex,
  159.     void                    *Context);
  160.  
  161. typedef
  162. ACPI_STATUS (*ACPI_PKG_CALLBACK) (
  163.     UINT8                   ObjectType,
  164.     ACPI_OPERAND_OBJECT     *SourceObject,
  165.     ACPI_GENERIC_STATE      *State,
  166.     void                    *Context);
  167.  
  168. typedef struct acpi_pkg_info
  169. {
  170.     UINT8                   *FreeSpace;
  171.     ACPI_SIZE               Length;
  172.     UINT32                  ObjectSpace;
  173.     UINT32                  NumPackages;
  174.  
  175. } ACPI_PKG_INFO;
  176.  
  177. #define REF_INCREMENT       (UINT16) 0
  178. #define REF_DECREMENT       (UINT16) 1
  179. #define REF_FORCE_DELETE    (UINT16) 2
  180.  
  181. /* AcpiUtDumpBuffer */
  182.  
  183. #define DB_BYTE_DISPLAY     1
  184. #define DB_WORD_DISPLAY     2
  185. #define DB_DWORD_DISPLAY    4
  186. #define DB_QWORD_DISPLAY    8
  187.  
  188.  
  189. /*
  190.  * utglobal - Global data structures and procedures
  191.  */
  192. ACPI_STATUS
  193. AcpiUtInitGlobals (
  194.     void);
  195.  
  196. #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
  197.  
  198. char *
  199. AcpiUtGetMutexName (
  200.     UINT32                  MutexId);
  201.  
  202. const char *
  203. AcpiUtGetNotifyName (
  204.     UINT32                  NotifyValue);
  205.  
  206. #endif
  207.  
  208. char *
  209. AcpiUtGetTypeName (
  210.     ACPI_OBJECT_TYPE        Type);
  211.  
  212. char *
  213. AcpiUtGetNodeName (
  214.     void                    *Object);
  215.  
  216. char *
  217. AcpiUtGetDescriptorName (
  218.     void                    *Object);
  219.  
  220. const char *
  221. AcpiUtGetReferenceName (
  222.     ACPI_OPERAND_OBJECT     *Object);
  223.  
  224. char *
  225. AcpiUtGetObjectTypeName (
  226.     ACPI_OPERAND_OBJECT     *ObjDesc);
  227.  
  228. char *
  229. AcpiUtGetRegionName (
  230.     UINT8                   SpaceId);
  231.  
  232. char *
  233. AcpiUtGetEventName (
  234.     UINT32                  EventId);
  235.  
  236. char
  237. AcpiUtHexToAsciiChar (
  238.     UINT64                  Integer,
  239.     UINT32                  Position);
  240.  
  241. BOOLEAN
  242. AcpiUtValidObjectType (
  243.     ACPI_OBJECT_TYPE        Type);
  244.  
  245.  
  246. /*
  247.  * utinit - miscellaneous initialization and shutdown
  248.  */
  249. ACPI_STATUS
  250. AcpiUtHardwareInitialize (
  251.     void);
  252.  
  253. void
  254. AcpiUtSubsystemShutdown (
  255.     void);
  256.  
  257.  
  258. /*
  259.  * utclib - Local implementations of C library functions
  260.  */
  261. #ifndef ACPI_USE_SYSTEM_CLIBRARY
  262.  
  263. ACPI_SIZE
  264. AcpiUtStrlen (
  265.     const char              *String);
  266.  
  267. char *
  268. AcpiUtStrcpy (
  269.     char                    *DstString,
  270.     const char              *SrcString);
  271.  
  272. char *
  273. AcpiUtStrncpy (
  274.     char                    *DstString,
  275.     const char              *SrcString,
  276.     ACPI_SIZE               Count);
  277.  
  278. int
  279. AcpiUtMemcmp (
  280.     const char              *Buffer1,
  281.     const char              *Buffer2,
  282.     ACPI_SIZE               Count);
  283.  
  284. int
  285. AcpiUtStrncmp (
  286.     const char              *String1,
  287.     const char              *String2,
  288.     ACPI_SIZE               Count);
  289.  
  290. int
  291. AcpiUtStrcmp (
  292.     const char              *String1,
  293.     const char              *String2);
  294.  
  295. char *
  296. AcpiUtStrcat (
  297.     char                    *DstString,
  298.     const char              *SrcString);
  299.  
  300. char *
  301. AcpiUtStrncat (
  302.     char                    *DstString,
  303.     const char              *SrcString,
  304.     ACPI_SIZE               Count);
  305.  
  306. UINT32
  307. AcpiUtStrtoul (
  308.     const char              *String,
  309.     char                    **Terminator,
  310.     UINT32                  Base);
  311.  
  312. char *
  313. AcpiUtStrstr (
  314.     char                    *String1,
  315.     char                    *String2);
  316.  
  317. void *
  318. AcpiUtMemcpy (
  319.     void                    *Dest,
  320.     const void              *Src,
  321.     ACPI_SIZE               Count);
  322.  
  323. void *
  324. AcpiUtMemset (
  325.     void                    *Dest,
  326.     UINT8                   Value,
  327.     ACPI_SIZE               Count);
  328.  
  329. int
  330. AcpiUtToUpper (
  331.     int                     c);
  332.  
  333. int
  334. AcpiUtToLower (
  335.     int                     c);
  336.  
  337. extern const UINT8 _acpi_ctype[];
  338.  
  339. #define _ACPI_XA     0x00    /* extra alphabetic - not supported */
  340. #define _ACPI_XS     0x40    /* extra space */
  341. #define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
  342. #define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
  343. #define _ACPI_DI     0x04    /* '0'-'9' */
  344. #define _ACPI_LO     0x02    /* 'a'-'z' */
  345. #define _ACPI_PU     0x10    /* punctuation */
  346. #define _ACPI_SP     0x08    /* space */
  347. #define _ACPI_UP     0x01    /* 'A'-'Z' */
  348. #define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
  349.  
  350. #define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
  351. #define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
  352. #define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
  353. #define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
  354. #define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
  355. #define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
  356. #define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
  357.  
  358. #endif /* !ACPI_USE_SYSTEM_CLIBRARY */
  359.  
  360. #define ACPI_IS_ASCII(c)  ((c) < 0x80)
  361.  
  362.  
  363. /*
  364.  * utcopy - Object construction and conversion interfaces
  365.  */
  366. ACPI_STATUS
  367. AcpiUtBuildSimpleObject(
  368.     ACPI_OPERAND_OBJECT     *Obj,
  369.     ACPI_OBJECT             *UserObj,
  370.     UINT8                   *DataSpace,
  371.     UINT32                  *BufferSpaceUsed);
  372.  
  373. ACPI_STATUS
  374. AcpiUtBuildPackageObject (
  375.     ACPI_OPERAND_OBJECT     *Obj,
  376.     UINT8                   *Buffer,
  377.     UINT32                  *SpaceUsed);
  378.  
  379. ACPI_STATUS
  380. AcpiUtCopyIobjectToEobject (
  381.     ACPI_OPERAND_OBJECT     *Obj,
  382.     ACPI_BUFFER             *RetBuffer);
  383.  
  384. ACPI_STATUS
  385. AcpiUtCopyEobjectToIobject (
  386.     ACPI_OBJECT             *Obj,
  387.     ACPI_OPERAND_OBJECT     **InternalObj);
  388.  
  389. ACPI_STATUS
  390. AcpiUtCopyISimpleToIsimple (
  391.     ACPI_OPERAND_OBJECT     *SourceObj,
  392.     ACPI_OPERAND_OBJECT     *DestObj);
  393.  
  394. ACPI_STATUS
  395. AcpiUtCopyIobjectToIobject (
  396.     ACPI_OPERAND_OBJECT     *SourceDesc,
  397.     ACPI_OPERAND_OBJECT     **DestDesc,
  398.     ACPI_WALK_STATE         *WalkState);
  399.  
  400.  
  401. /*
  402.  * utcreate - Object creation
  403.  */
  404. ACPI_STATUS
  405. AcpiUtUpdateObjectReference (
  406.     ACPI_OPERAND_OBJECT     *Object,
  407.     UINT16                  Action);
  408.  
  409.  
  410. /*
  411.  * utdebug - Debug interfaces
  412.  */
  413. void
  414. AcpiUtInitStackPtrTrace (
  415.     void);
  416.  
  417. void
  418. AcpiUtTrackStackPtr (
  419.     void);
  420.  
  421. void
  422. AcpiUtTrace (
  423.     UINT32                  LineNumber,
  424.     const char              *FunctionName,
  425.     const char              *ModuleName,
  426.     UINT32                  ComponentId);
  427.  
  428. void
  429. AcpiUtTracePtr (
  430.     UINT32                  LineNumber,
  431.     const char              *FunctionName,
  432.     const char              *ModuleName,
  433.     UINT32                  ComponentId,
  434.     void                    *Pointer);
  435.  
  436. void
  437. AcpiUtTraceU32 (
  438.     UINT32                  LineNumber,
  439.     const char              *FunctionName,
  440.     const char              *ModuleName,
  441.     UINT32                  ComponentId,
  442.     UINT32                  Integer);
  443.  
  444. void
  445. AcpiUtTraceStr (
  446.     UINT32                  LineNumber,
  447.     const char              *FunctionName,
  448.     const char              *ModuleName,
  449.     UINT32                  ComponentId,
  450.     char                    *String);
  451.  
  452. void
  453. AcpiUtExit (
  454.     UINT32                  LineNumber,
  455.     const char              *FunctionName,
  456.     const char              *ModuleName,
  457.     UINT32                  ComponentId);
  458.  
  459. void
  460. AcpiUtStatusExit (
  461.     UINT32                  LineNumber,
  462.     const char              *FunctionName,
  463.     const char              *ModuleName,
  464.     UINT32                  ComponentId,
  465.     ACPI_STATUS             Status);
  466.  
  467. void
  468. AcpiUtValueExit (
  469.     UINT32                  LineNumber,
  470.     const char              *FunctionName,
  471.     const char              *ModuleName,
  472.     UINT32                  ComponentId,
  473.     UINT64                  Value);
  474.  
  475. void
  476. AcpiUtPtrExit (
  477.     UINT32                  LineNumber,
  478.     const char              *FunctionName,
  479.     const char              *ModuleName,
  480.     UINT32                  ComponentId,
  481.     UINT8                   *Ptr);
  482.  
  483. void
  484. AcpiUtDumpBuffer (
  485.     UINT8                   *Buffer,
  486.     UINT32                  Count,
  487.     UINT32                  Display,
  488.     UINT32                  componentId);
  489.  
  490. void
  491. AcpiUtDumpBuffer2 (
  492.     UINT8                   *Buffer,
  493.     UINT32                  Count,
  494.     UINT32                  Display);
  495.  
  496. void
  497. AcpiUtReportError (
  498.     char                    *ModuleName,
  499.     UINT32                  LineNumber);
  500.  
  501. void
  502. AcpiUtReportInfo (
  503.     char                    *ModuleName,
  504.     UINT32                  LineNumber);
  505.  
  506. void
  507. AcpiUtReportWarning (
  508.     char                    *ModuleName,
  509.     UINT32                  LineNumber);
  510.  
  511. /*
  512.  * utdelete - Object deletion and reference counts
  513.  */
  514. void
  515. AcpiUtAddReference (
  516.     ACPI_OPERAND_OBJECT     *Object);
  517.  
  518. void
  519. AcpiUtRemoveReference (
  520.     ACPI_OPERAND_OBJECT     *Object);
  521.  
  522. void
  523. AcpiUtDeleteInternalPackageObject (
  524.     ACPI_OPERAND_OBJECT     *Object);
  525.  
  526. void
  527. AcpiUtDeleteInternalSimpleObject (
  528.     ACPI_OPERAND_OBJECT     *Object);
  529.  
  530. void
  531. AcpiUtDeleteInternalObjectList (
  532.     ACPI_OPERAND_OBJECT     **ObjList);
  533.  
  534.  
  535. /*
  536.  * uteval - object evaluation
  537.  */
  538. ACPI_STATUS
  539. AcpiUtEvaluateObject (
  540.     ACPI_NAMESPACE_NODE     *PrefixNode,
  541.     char                    *Path,
  542.     UINT32                  ExpectedReturnBtypes,
  543.     ACPI_OPERAND_OBJECT     **ReturnDesc);
  544.  
  545. ACPI_STATUS
  546. AcpiUtEvaluateNumericObject (
  547.     char                    *ObjectName,
  548.     ACPI_NAMESPACE_NODE     *DeviceNode,
  549.     UINT64                  *Value);
  550.  
  551. ACPI_STATUS
  552. AcpiUtExecute_STA (
  553.     ACPI_NAMESPACE_NODE     *DeviceNode,
  554.     UINT32                  *StatusFlags);
  555.  
  556. ACPI_STATUS
  557. AcpiUtExecutePowerMethods (
  558.     ACPI_NAMESPACE_NODE     *DeviceNode,
  559.     const char              **MethodNames,
  560.     UINT8                   MethodCount,
  561.     UINT8                   *OutValues);
  562.  
  563.  
  564. /*
  565.  * utids - device ID support
  566.  */
  567. ACPI_STATUS
  568. AcpiUtExecute_HID (
  569.     ACPI_NAMESPACE_NODE     *DeviceNode,
  570.     ACPI_DEVICE_ID          **ReturnId);
  571.  
  572. ACPI_STATUS
  573. AcpiUtExecute_UID (
  574.     ACPI_NAMESPACE_NODE     *DeviceNode,
  575.     ACPI_DEVICE_ID          **ReturnId);
  576.  
  577. ACPI_STATUS
  578. AcpiUtExecute_CID (
  579.     ACPI_NAMESPACE_NODE     *DeviceNode,
  580.     ACPI_DEVICE_ID_LIST     **ReturnCidList);
  581.  
  582.  
  583. /*
  584.  * utlock - reader/writer locks
  585.  */
  586. ACPI_STATUS
  587. AcpiUtCreateRwLock (
  588.     ACPI_RW_LOCK            *Lock);
  589.  
  590. void
  591. AcpiUtDeleteRwLock (
  592.     ACPI_RW_LOCK            *Lock);
  593.  
  594. ACPI_STATUS
  595. AcpiUtAcquireReadLock (
  596.     ACPI_RW_LOCK            *Lock);
  597.  
  598. ACPI_STATUS
  599. AcpiUtReleaseReadLock (
  600.     ACPI_RW_LOCK            *Lock);
  601.  
  602. ACPI_STATUS
  603. AcpiUtAcquireWriteLock (
  604.     ACPI_RW_LOCK            *Lock);
  605.  
  606. void
  607. AcpiUtReleaseWriteLock (
  608.     ACPI_RW_LOCK            *Lock);
  609.  
  610.  
  611. /*
  612.  * utobject - internal object create/delete/cache routines
  613.  */
  614. ACPI_OPERAND_OBJECT  *
  615. AcpiUtCreateInternalObjectDbg (
  616.     const char              *ModuleName,
  617.     UINT32                  LineNumber,
  618.     UINT32                  ComponentId,
  619.     ACPI_OBJECT_TYPE        Type);
  620.  
  621. void *
  622. AcpiUtAllocateObjectDescDbg (
  623.     const char              *ModuleName,
  624.     UINT32                  LineNumber,
  625.     UINT32                  ComponentId);
  626.  
  627. #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
  628. #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
  629.  
  630. void
  631. AcpiUtDeleteObjectDesc (
  632.     ACPI_OPERAND_OBJECT     *Object);
  633.  
  634. BOOLEAN
  635. AcpiUtValidInternalObject (
  636.     void                    *Object);
  637.  
  638. ACPI_OPERAND_OBJECT *
  639. AcpiUtCreatePackageObject (
  640.     UINT32                  Count);
  641.  
  642. ACPI_OPERAND_OBJECT *
  643. AcpiUtCreateIntegerObject (
  644.     UINT64                  Value);
  645.  
  646. ACPI_OPERAND_OBJECT *
  647. AcpiUtCreateBufferObject (
  648.     ACPI_SIZE               BufferSize);
  649.  
  650. ACPI_OPERAND_OBJECT *
  651. AcpiUtCreateStringObject (
  652.     ACPI_SIZE               StringSize);
  653.  
  654. ACPI_STATUS
  655. AcpiUtGetObjectSize(
  656.     ACPI_OPERAND_OBJECT     *Obj,
  657.     ACPI_SIZE               *ObjLength);
  658.  
  659.  
  660. /*
  661.  * utosi - Support for the _OSI predefined control method
  662.  */
  663. ACPI_STATUS
  664. AcpiUtInitializeInterfaces (
  665.     void);
  666.  
  667. void
  668. AcpiUtInterfaceTerminate (
  669.     void);
  670.  
  671. ACPI_STATUS
  672. AcpiUtInstallInterface (
  673.     ACPI_STRING             InterfaceName);
  674.  
  675. ACPI_STATUS
  676. AcpiUtRemoveInterface (
  677.     ACPI_STRING             InterfaceName);
  678.  
  679. ACPI_INTERFACE_INFO *
  680. AcpiUtGetInterface (
  681.     ACPI_STRING             InterfaceName);
  682.  
  683. ACPI_STATUS
  684. AcpiUtOsiImplementation (
  685.     ACPI_WALK_STATE         *WalkState);
  686.  
  687.  
  688. /*
  689.  * utstate - Generic state creation/cache routines
  690.  */
  691. void
  692. AcpiUtPushGenericState (
  693.     ACPI_GENERIC_STATE      **ListHead,
  694.     ACPI_GENERIC_STATE      *State);
  695.  
  696. ACPI_GENERIC_STATE *
  697. AcpiUtPopGenericState (
  698.     ACPI_GENERIC_STATE      **ListHead);
  699.  
  700.  
  701. ACPI_GENERIC_STATE *
  702. AcpiUtCreateGenericState (
  703.     void);
  704.  
  705. ACPI_THREAD_STATE *
  706. AcpiUtCreateThreadState (
  707.     void);
  708.  
  709. ACPI_GENERIC_STATE *
  710. AcpiUtCreateUpdateState (
  711.     ACPI_OPERAND_OBJECT     *Object,
  712.     UINT16                  Action);
  713.  
  714. ACPI_GENERIC_STATE *
  715. AcpiUtCreatePkgState (
  716.     void                    *InternalObject,
  717.     void                    *ExternalObject,
  718.     UINT16                  Index);
  719.  
  720. ACPI_STATUS
  721. AcpiUtCreateUpdateStateAndPush (
  722.     ACPI_OPERAND_OBJECT     *Object,
  723.     UINT16                  Action,
  724.     ACPI_GENERIC_STATE      **StateList);
  725.  
  726. ACPI_STATUS
  727. AcpiUtCreatePkgStateAndPush (
  728.     void                    *InternalObject,
  729.     void                    *ExternalObject,
  730.     UINT16                  Index,
  731.     ACPI_GENERIC_STATE      **StateList);
  732.  
  733. ACPI_GENERIC_STATE *
  734. AcpiUtCreateControlState (
  735.     void);
  736.  
  737. void
  738. AcpiUtDeleteGenericState (
  739.     ACPI_GENERIC_STATE      *State);
  740.  
  741.  
  742. /*
  743.  * utmath
  744.  */
  745. ACPI_STATUS
  746. AcpiUtDivide (
  747.     UINT64                  InDividend,
  748.     UINT64                  InDivisor,
  749.     UINT64                  *OutQuotient,
  750.     UINT64                  *OutRemainder);
  751.  
  752. ACPI_STATUS
  753. AcpiUtShortDivide (
  754.     UINT64                  InDividend,
  755.     UINT32                  Divisor,
  756.     UINT64                  *OutQuotient,
  757.     UINT32                  *OutRemainder);
  758.  
  759. /*
  760.  * utmisc
  761.  */
  762. const char *
  763. AcpiUtValidateException (
  764.     ACPI_STATUS             Status);
  765.  
  766. BOOLEAN
  767. AcpiUtIsPciRootBridge (
  768.     char                    *Id);
  769.  
  770. BOOLEAN
  771. AcpiUtIsAmlTable (
  772.     ACPI_TABLE_HEADER       *Table);
  773.  
  774. ACPI_STATUS
  775. AcpiUtAllocateOwnerId (
  776.     ACPI_OWNER_ID           *OwnerId);
  777.  
  778. void
  779. AcpiUtReleaseOwnerId (
  780.     ACPI_OWNER_ID           *OwnerId);
  781.  
  782. ACPI_STATUS
  783. AcpiUtWalkPackageTree (
  784.     ACPI_OPERAND_OBJECT     *SourceObject,
  785.     void                    *TargetObject,
  786.     ACPI_PKG_CALLBACK       WalkCallback,
  787.     void                    *Context);
  788.  
  789. void
  790. AcpiUtStrupr (
  791.     char                    *SrcString);
  792.  
  793. void
  794. AcpiUtStrlwr (
  795.     char                    *SrcString);
  796.  
  797. void
  798. AcpiUtPrintString (
  799.     char                    *String,
  800.     UINT8                   MaxLength);
  801.  
  802. BOOLEAN
  803. AcpiUtValidAcpiName (
  804.     UINT32                  Name);
  805.  
  806. void
  807. AcpiUtRepairName (
  808.     char                    *Name);
  809.  
  810. BOOLEAN
  811. AcpiUtValidAcpiChar (
  812.     char                    Character,
  813.     UINT32                  Position);
  814.  
  815. ACPI_STATUS
  816. AcpiUtStrtoul64 (
  817.     char                    *String,
  818.     UINT32                  Base,
  819.     UINT64                  *RetInteger);
  820.  
  821. /* Values for Base above (16=Hex, 10=Decimal) */
  822.  
  823. #define ACPI_ANY_BASE        0
  824.  
  825. UINT32
  826. AcpiUtDwordByteSwap (
  827.     UINT32                  Value);
  828.  
  829. void
  830. AcpiUtSetIntegerWidth (
  831.     UINT8                   Revision);
  832.  
  833. #ifdef ACPI_DEBUG_OUTPUT
  834. void
  835. AcpiUtDisplayInitPathname (
  836.     UINT8                   Type,
  837.     ACPI_NAMESPACE_NODE     *ObjHandle,
  838.     char                    *Path);
  839. #endif
  840.  
  841.  
  842. /*
  843.  * utresrc
  844.  */
  845. ACPI_STATUS
  846. AcpiUtWalkAmlResources (
  847.     UINT8                   *Aml,
  848.     ACPI_SIZE               AmlLength,
  849.     ACPI_WALK_AML_CALLBACK  UserFunction,
  850.     void                    *Context);
  851.  
  852. ACPI_STATUS
  853. AcpiUtValidateResource (
  854.     void                    *Aml,
  855.     UINT8                   *ReturnIndex);
  856.  
  857. UINT32
  858. AcpiUtGetDescriptorLength (
  859.     void                    *Aml);
  860.  
  861. UINT16
  862. AcpiUtGetResourceLength (
  863.     void                    *Aml);
  864.  
  865. UINT8
  866. AcpiUtGetResourceHeaderLength (
  867.     void                    *Aml);
  868.  
  869. UINT8
  870. AcpiUtGetResourceType (
  871.     void                    *Aml);
  872.  
  873. ACPI_STATUS
  874. AcpiUtGetResourceEndTag (
  875.     ACPI_OPERAND_OBJECT     *ObjDesc,
  876.     UINT8                   **EndTag);
  877.  
  878.  
  879. /*
  880.  * utmutex - mutex support
  881.  */
  882. ACPI_STATUS
  883. AcpiUtMutexInitialize (
  884.     void);
  885.  
  886. void
  887. AcpiUtMutexTerminate (
  888.     void);
  889.  
  890. ACPI_STATUS
  891. AcpiUtAcquireMutex (
  892.     ACPI_MUTEX_HANDLE       MutexId);
  893.  
  894. ACPI_STATUS
  895. AcpiUtReleaseMutex (
  896.     ACPI_MUTEX_HANDLE       MutexId);
  897.  
  898.  
  899. /*
  900.  * utalloc - memory allocation and object caching
  901.  */
  902. ACPI_STATUS
  903. AcpiUtCreateCaches (
  904.     void);
  905.  
  906. ACPI_STATUS
  907. AcpiUtDeleteCaches (
  908.     void);
  909.  
  910. ACPI_STATUS
  911. AcpiUtValidateBuffer (
  912.     ACPI_BUFFER             *Buffer);
  913.  
  914. ACPI_STATUS
  915. AcpiUtInitializeBuffer (
  916.     ACPI_BUFFER             *Buffer,
  917.     ACPI_SIZE               RequiredLength);
  918.  
  919. void *
  920. AcpiUtAllocate (
  921.     ACPI_SIZE               Size,
  922.     UINT32                  Component,
  923.     const char              *Module,
  924.     UINT32                  Line);
  925.  
  926. void *
  927. AcpiUtAllocateZeroed (
  928.     ACPI_SIZE               Size,
  929.     UINT32                  Component,
  930.     const char              *Module,
  931.     UINT32                  Line);
  932.  
  933. #ifdef ACPI_DBG_TRACK_ALLOCATIONS
  934. void *
  935. AcpiUtAllocateAndTrack (
  936.     ACPI_SIZE               Size,
  937.     UINT32                  Component,
  938.     const char              *Module,
  939.     UINT32                  Line);
  940.  
  941. void *
  942. AcpiUtAllocateZeroedAndTrack (
  943.     ACPI_SIZE               Size,
  944.     UINT32                  Component,
  945.     const char              *Module,
  946.     UINT32                  Line);
  947.  
  948. void
  949. AcpiUtFreeAndTrack (
  950.     void                    *Address,
  951.     UINT32                  Component,
  952.     const char              *Module,
  953.     UINT32                  Line);
  954.  
  955. void
  956. AcpiUtDumpAllocationInfo (
  957.     void);
  958.  
  959. void
  960. AcpiUtDumpAllocations (
  961.     UINT32                  Component,
  962.     const char              *Module);
  963.  
  964. ACPI_STATUS
  965. AcpiUtCreateList (
  966.     char                    *ListName,
  967.     UINT16                  ObjectSize,
  968.     ACPI_MEMORY_LIST        **ReturnCache);
  969.  
  970. #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
  971.  
  972.  
  973. /*
  974.  * utxferror - various error/warning output functions
  975.  */
  976. void ACPI_INTERNAL_VAR_XFACE
  977. AcpiUtPredefinedWarning (
  978.     const char              *ModuleName,
  979.     UINT32                  LineNumber,
  980.     char                    *Pathname,
  981.     UINT8                   NodeFlags,
  982.     const char              *Format,
  983.     ...);
  984.  
  985. void ACPI_INTERNAL_VAR_XFACE
  986. AcpiUtPredefinedInfo (
  987.     const char              *ModuleName,
  988.     UINT32                  LineNumber,
  989.     char                    *Pathname,
  990.     UINT8                   NodeFlags,
  991.     const char              *Format,
  992.     ...);
  993.  
  994. void
  995. AcpiUtNamespaceError (
  996.     const char              *ModuleName,
  997.     UINT32                  LineNumber,
  998.     const char              *InternalName,
  999.     ACPI_STATUS             LookupStatus);
  1000.  
  1001. void
  1002. AcpiUtMethodError (
  1003.     const char              *ModuleName,
  1004.     UINT32                  LineNumber,
  1005.     const char              *Message,
  1006.     ACPI_NAMESPACE_NODE     *Node,
  1007.     const char              *Path,
  1008.     ACPI_STATUS             LookupStatus);
  1009.  
  1010. #endif /* _ACUTILS_H */
  1011.