acutils.h revision 217365
167754Smsmith/****************************************************************************** 267754Smsmith * 377424Smsmith * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures 467754Smsmith * 567754Smsmith *****************************************************************************/ 667754Smsmith 7217365Sjkim/* 8217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp. 970243Smsmith * All rights reserved. 1067754Smsmith * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 2567754Smsmith * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 2967754Smsmith * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 4367754Smsmith 4477424Smsmith#ifndef _ACUTILS_H 4577424Smsmith#define _ACUTILS_H 4667754Smsmith 4767754Smsmith 48167802Sjkimextern const UINT8 AcpiGbl_ResourceAmlSizes[]; 49167802Sjkim 50167802Sjkim/* Strings used by the disassembler and debugger resource dump routines */ 51167802Sjkim 52167802Sjkim#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) 53167802Sjkim 54167802Sjkimextern const char *AcpiGbl_BmDecode[]; 55167802Sjkimextern const char *AcpiGbl_ConfigDecode[]; 56167802Sjkimextern const char *AcpiGbl_ConsumeDecode[]; 57167802Sjkimextern const char *AcpiGbl_DecDecode[]; 58167802Sjkimextern const char *AcpiGbl_HeDecode[]; 59167802Sjkimextern const char *AcpiGbl_IoDecode[]; 60167802Sjkimextern const char *AcpiGbl_LlDecode[]; 61167802Sjkimextern const char *AcpiGbl_MaxDecode[]; 62167802Sjkimextern const char *AcpiGbl_MemDecode[]; 63167802Sjkimextern const char *AcpiGbl_MinDecode[]; 64167802Sjkimextern const char *AcpiGbl_MtpDecode[]; 65167802Sjkimextern const char *AcpiGbl_RngDecode[]; 66167802Sjkimextern const char *AcpiGbl_RwDecode[]; 67167802Sjkimextern const char *AcpiGbl_ShrDecode[]; 68167802Sjkimextern const char *AcpiGbl_SizDecode[]; 69167802Sjkimextern const char *AcpiGbl_TrsDecode[]; 70167802Sjkimextern const char *AcpiGbl_TtpDecode[]; 71167802Sjkimextern const char *AcpiGbl_TypDecode[]; 72167802Sjkim#endif 73167802Sjkim 74167802Sjkim/* Types for Resource descriptor entries */ 75167802Sjkim 76167802Sjkim#define ACPI_INVALID_RESOURCE 0 77167802Sjkim#define ACPI_FIXED_LENGTH 1 78167802Sjkim#define ACPI_VARIABLE_LENGTH 2 79167802Sjkim#define ACPI_SMALL_VARIABLE_LENGTH 3 80167802Sjkim 8173561Smsmithtypedef 82167802SjkimACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( 83167802Sjkim UINT8 *Aml, 84167802Sjkim UINT32 Length, 85167802Sjkim UINT32 Offset, 86167802Sjkim UINT8 ResourceIndex, 87167802Sjkim void *Context); 88167802Sjkim 89167802Sjkimtypedef 9073561SmsmithACPI_STATUS (*ACPI_PKG_CALLBACK) ( 9173561Smsmith UINT8 ObjectType, 9273561Smsmith ACPI_OPERAND_OBJECT *SourceObject, 9373561Smsmith ACPI_GENERIC_STATE *State, 9473561Smsmith void *Context); 9573561Smsmith 9673561Smsmithtypedef struct acpi_pkg_info 9773561Smsmith{ 9873561Smsmith UINT8 *FreeSpace; 9991116Smsmith ACPI_SIZE Length; 10073561Smsmith UINT32 ObjectSpace; 10173561Smsmith UINT32 NumPackages; 102114237Snjl 10373561Smsmith} ACPI_PKG_INFO; 10473561Smsmith 10567754Smsmith#define REF_INCREMENT (UINT16) 0 10667754Smsmith#define REF_DECREMENT (UINT16) 1 10767754Smsmith#define REF_FORCE_DELETE (UINT16) 2 10867754Smsmith 10977424Smsmith/* AcpiUtDumpBuffer */ 11067754Smsmith 11167754Smsmith#define DB_BYTE_DISPLAY 1 11267754Smsmith#define DB_WORD_DISPLAY 2 11367754Smsmith#define DB_DWORD_DISPLAY 4 11467754Smsmith#define DB_QWORD_DISPLAY 8 11567754Smsmith 11667754Smsmith 11767754Smsmith/* 118151937Sjkim * utglobal - Global data structures and procedures 11967754Smsmith */ 120193267SjkimACPI_STATUS 121151937SjkimAcpiUtInitGlobals ( 12267754Smsmith void); 12367754Smsmith 124102550Siwasaki#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 12569746Smsmith 126114237Snjlchar * 12777424SmsmithAcpiUtGetMutexName ( 12867754Smsmith UINT32 MutexId); 12967754Smsmith 130193267Sjkimconst char * 131193267SjkimAcpiUtGetNotifyName ( 132193267Sjkim UINT32 NotifyValue); 133193267Sjkim 134100966Siwasaki#endif 135100966Siwasaki 136114237Snjlchar * 13777424SmsmithAcpiUtGetTypeName ( 13891116Smsmith ACPI_OBJECT_TYPE Type); 13967754Smsmith 140114237Snjlchar * 141123315SnjlAcpiUtGetNodeName ( 142123315Snjl void *Object); 143123315Snjl 144123315Snjlchar * 145123315SnjlAcpiUtGetDescriptorName ( 146123315Snjl void *Object); 147123315Snjl 148193267Sjkimconst char * 149193267SjkimAcpiUtGetReferenceName ( 150193267Sjkim ACPI_OPERAND_OBJECT *Object); 151193267Sjkim 152123315Snjlchar * 15399679SiwasakiAcpiUtGetObjectTypeName ( 15499679Siwasaki ACPI_OPERAND_OBJECT *ObjDesc); 15599679Siwasaki 156114237Snjlchar * 15777424SmsmithAcpiUtGetRegionName ( 15869746Smsmith UINT8 SpaceId); 15969746Smsmith 160114237Snjlchar * 16191116SmsmithAcpiUtGetEventName ( 16291116Smsmith UINT32 EventId); 16369746Smsmith 16499679Siwasakichar 16582367SmsmithAcpiUtHexToAsciiChar ( 166202771Sjkim UINT64 Integer, 16782367Smsmith UINT32 Position); 16882367Smsmith 16967754SmsmithBOOLEAN 17077424SmsmithAcpiUtValidObjectType ( 17191116Smsmith ACPI_OBJECT_TYPE Type); 17267754Smsmith 17367754Smsmith 174151937Sjkim/* 175151937Sjkim * utinit - miscellaneous initialization and shutdown 176151937Sjkim */ 177151937SjkimACPI_STATUS 178151937SjkimAcpiUtHardwareInitialize ( 179151937Sjkim void); 18067754Smsmith 181151937Sjkimvoid 182151937SjkimAcpiUtSubsystemShutdown ( 183151937Sjkim void); 184151937Sjkim 185151937Sjkim 18667754Smsmith/* 187151937Sjkim * utclib - Local implementations of C library functions 18867754Smsmith */ 18971867Smsmith#ifndef ACPI_USE_SYSTEM_CLIBRARY 19071867Smsmith 191104470SiwasakiACPI_SIZE 19277424SmsmithAcpiUtStrlen ( 193114237Snjl const char *String); 19467754Smsmith 195114237Snjlchar * 19677424SmsmithAcpiUtStrcpy ( 197114237Snjl char *DstString, 198114237Snjl const char *SrcString); 19967754Smsmith 200114237Snjlchar * 20177424SmsmithAcpiUtStrncpy ( 202114237Snjl char *DstString, 203114237Snjl const char *SrcString, 204104470Siwasaki ACPI_SIZE Count); 20567754Smsmith 20699679Siwasakiint 207138287SmarksAcpiUtMemcmp ( 208138287Smarks const char *Buffer1, 209138287Smarks const char *Buffer2, 210138287Smarks ACPI_SIZE Count); 211138287Smarks 212138287Smarksint 21377424SmsmithAcpiUtStrncmp ( 214114237Snjl const char *String1, 215114237Snjl const char *String2, 216104470Siwasaki ACPI_SIZE Count); 21767754Smsmith 218104470Siwasakiint 21977424SmsmithAcpiUtStrcmp ( 220114237Snjl const char *String1, 221114237Snjl const char *String2); 22267754Smsmith 223114237Snjlchar * 22477424SmsmithAcpiUtStrcat ( 225114237Snjl char *DstString, 226114237Snjl const char *SrcString); 22767754Smsmith 228114237Snjlchar * 22977424SmsmithAcpiUtStrncat ( 230114237Snjl char *DstString, 231114237Snjl const char *SrcString, 232104470Siwasaki ACPI_SIZE Count); 23367754Smsmith 23467754SmsmithUINT32 23577424SmsmithAcpiUtStrtoul ( 236114237Snjl const char *String, 237114237Snjl char **Terminator, 23877424Smsmith UINT32 Base); 23967754Smsmith 240114237Snjlchar * 24177424SmsmithAcpiUtStrstr ( 242114237Snjl char *String1, 243114237Snjl char *String2); 24467754Smsmith 24567754Smsmithvoid * 24677424SmsmithAcpiUtMemcpy ( 24767754Smsmith void *Dest, 24867754Smsmith const void *Src, 249104470Siwasaki ACPI_SIZE Count); 25067754Smsmith 25167754Smsmithvoid * 25277424SmsmithAcpiUtMemset ( 25367754Smsmith void *Dest, 254193267Sjkim UINT8 Value, 255104470Siwasaki ACPI_SIZE Count); 25667754Smsmith 25799679Siwasakiint 25877424SmsmithAcpiUtToUpper ( 25999679Siwasaki int c); 26067754Smsmith 26199679Siwasakiint 26277424SmsmithAcpiUtToLower ( 26399679Siwasaki int c); 26467754Smsmith 26599679Siwasakiextern const UINT8 _acpi_ctype[]; 26699679Siwasaki 26799679Siwasaki#define _ACPI_XA 0x00 /* extra alphabetic - not supported */ 26899679Siwasaki#define _ACPI_XS 0x40 /* extra space */ 26999679Siwasaki#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ 27099679Siwasaki#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ 27199679Siwasaki#define _ACPI_DI 0x04 /* '0'-'9' */ 27299679Siwasaki#define _ACPI_LO 0x02 /* 'a'-'z' */ 27399679Siwasaki#define _ACPI_PU 0x10 /* punctuation */ 27499679Siwasaki#define _ACPI_SP 0x08 /* space */ 27599679Siwasaki#define _ACPI_UP 0x01 /* 'A'-'Z' */ 27699679Siwasaki#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ 27799679Siwasaki 27899679Siwasaki#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI)) 27999679Siwasaki#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP)) 28099679Siwasaki#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD)) 28199679Siwasaki#define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP)) 28299679Siwasaki#define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO)) 283100966Siwasaki#define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU)) 284100966Siwasaki#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) 28599679Siwasaki 286193267Sjkim#endif /* !ACPI_USE_SYSTEM_CLIBRARY */ 28767754Smsmith 288193267Sjkim#define ACPI_IS_ASCII(c) ((c) < 0x80) 289151937Sjkim 290193267Sjkim 29167754Smsmith/* 292151937Sjkim * utcopy - Object construction and conversion interfaces 29367754Smsmith */ 29467754SmsmithACPI_STATUS 29577424SmsmithAcpiUtBuildSimpleObject( 29667754Smsmith ACPI_OPERAND_OBJECT *Obj, 29767754Smsmith ACPI_OBJECT *UserObj, 29867754Smsmith UINT8 *DataSpace, 29967754Smsmith UINT32 *BufferSpaceUsed); 30067754Smsmith 30167754SmsmithACPI_STATUS 30277424SmsmithAcpiUtBuildPackageObject ( 30367754Smsmith ACPI_OPERAND_OBJECT *Obj, 30467754Smsmith UINT8 *Buffer, 30567754Smsmith UINT32 *SpaceUsed); 30667754Smsmith 30767754SmsmithACPI_STATUS 30877424SmsmithAcpiUtCopyIobjectToEobject ( 30967754Smsmith ACPI_OPERAND_OBJECT *Obj, 31067754Smsmith ACPI_BUFFER *RetBuffer); 31167754Smsmith 31267754SmsmithACPI_STATUS 31377424SmsmithAcpiUtCopyEobjectToIobject ( 31467754Smsmith ACPI_OBJECT *Obj, 31584491Smsmith ACPI_OPERAND_OBJECT **InternalObj); 31667754Smsmith 31767754SmsmithACPI_STATUS 31877424SmsmithAcpiUtCopyISimpleToIsimple ( 31967754Smsmith ACPI_OPERAND_OBJECT *SourceObj, 32067754Smsmith ACPI_OPERAND_OBJECT *DestObj); 32167754Smsmith 32267754SmsmithACPI_STATUS 32391116SmsmithAcpiUtCopyIobjectToIobject ( 32491116Smsmith ACPI_OPERAND_OBJECT *SourceDesc, 32591116Smsmith ACPI_OPERAND_OBJECT **DestDesc, 32691116Smsmith ACPI_WALK_STATE *WalkState); 32791116Smsmith 32891116Smsmith 32967754Smsmith/* 330151937Sjkim * utcreate - Object creation 33167754Smsmith */ 33267754SmsmithACPI_STATUS 33377424SmsmithAcpiUtUpdateObjectReference ( 33467754Smsmith ACPI_OPERAND_OBJECT *Object, 33567754Smsmith UINT16 Action); 33667754Smsmith 33767754Smsmith 33867754Smsmith/* 339151937Sjkim * utdebug - Debug interfaces 34067754Smsmith */ 34183174Smsmithvoid 34283174SmsmithAcpiUtInitStackPtrTrace ( 34367754Smsmith void); 34467754Smsmith 34567754Smsmithvoid 34683174SmsmithAcpiUtTrackStackPtr ( 34783174Smsmith void); 34867754Smsmith 34967754Smsmithvoid 35083174SmsmithAcpiUtTrace ( 35167754Smsmith UINT32 LineNumber, 352151937Sjkim const char *FunctionName, 353193267Sjkim const char *ModuleName, 354151937Sjkim UINT32 ComponentId); 35567754Smsmith 35667754Smsmithvoid 35783174SmsmithAcpiUtTracePtr ( 35867754Smsmith UINT32 LineNumber, 359151937Sjkim const char *FunctionName, 360193267Sjkim const char *ModuleName, 361151937Sjkim UINT32 ComponentId, 36267754Smsmith void *Pointer); 36367754Smsmith 36467754Smsmithvoid 36583174SmsmithAcpiUtTraceU32 ( 36667754Smsmith UINT32 LineNumber, 367151937Sjkim const char *FunctionName, 368193267Sjkim const char *ModuleName, 369151937Sjkim UINT32 ComponentId, 37067754Smsmith UINT32 Integer); 37167754Smsmith 37267754Smsmithvoid 37383174SmsmithAcpiUtTraceStr ( 37467754Smsmith UINT32 LineNumber, 375151937Sjkim const char *FunctionName, 376193267Sjkim const char *ModuleName, 377151937Sjkim UINT32 ComponentId, 378114237Snjl char *String); 37967754Smsmith 38067754Smsmithvoid 38183174SmsmithAcpiUtExit ( 38267754Smsmith UINT32 LineNumber, 383151937Sjkim const char *FunctionName, 384193267Sjkim const char *ModuleName, 385151937Sjkim UINT32 ComponentId); 38667754Smsmith 38767754Smsmithvoid 38883174SmsmithAcpiUtStatusExit ( 38967754Smsmith UINT32 LineNumber, 390151937Sjkim const char *FunctionName, 391193267Sjkim const char *ModuleName, 392151937Sjkim UINT32 ComponentId, 39367754Smsmith ACPI_STATUS Status); 39467754Smsmith 39567754Smsmithvoid 39683174SmsmithAcpiUtValueExit ( 39767754Smsmith UINT32 LineNumber, 398151937Sjkim const char *FunctionName, 399193267Sjkim const char *ModuleName, 400151937Sjkim UINT32 ComponentId, 401202771Sjkim UINT64 Value); 40267754Smsmith 40367754Smsmithvoid 40483174SmsmithAcpiUtPtrExit ( 40567754Smsmith UINT32 LineNumber, 406151937Sjkim const char *FunctionName, 407193267Sjkim const char *ModuleName, 408151937Sjkim UINT32 ComponentId, 40967754Smsmith UINT8 *Ptr); 41067754Smsmith 41167754Smsmithvoid 412167802SjkimAcpiUtDumpBuffer ( 413167802Sjkim UINT8 *Buffer, 414167802Sjkim UINT32 Count, 415167802Sjkim UINT32 Display, 416167802Sjkim UINT32 componentId); 41767754Smsmith 41867754Smsmithvoid 419167802SjkimAcpiUtDumpBuffer2 ( 420167802Sjkim UINT8 *Buffer, 421167802Sjkim UINT32 Count, 422167802Sjkim UINT32 Display); 423167802Sjkim 424167802Sjkimvoid 42583174SmsmithAcpiUtReportError ( 426114237Snjl char *ModuleName, 427167802Sjkim UINT32 LineNumber); 42867754Smsmith 42967754Smsmithvoid 430167802SjkimAcpiUtReportInfo ( 431114237Snjl char *ModuleName, 432167802Sjkim UINT32 LineNumber); 43367754Smsmith 43467754Smsmithvoid 435167802SjkimAcpiUtReportWarning ( 436167802Sjkim char *ModuleName, 437167802Sjkim UINT32 LineNumber); 43867754Smsmith 43967754Smsmith/* 440151937Sjkim * utdelete - Object deletion and reference counts 44167754Smsmith */ 442151937Sjkimvoid 443151937SjkimAcpiUtAddReference ( 444151937Sjkim ACPI_OPERAND_OBJECT *Object); 44567754Smsmith 44667754Smsmithvoid 447151937SjkimAcpiUtRemoveReference ( 44867754Smsmith ACPI_OPERAND_OBJECT *Object); 44967754Smsmith 45067754Smsmithvoid 45177424SmsmithAcpiUtDeleteInternalPackageObject ( 45267754Smsmith ACPI_OPERAND_OBJECT *Object); 45367754Smsmith 45467754Smsmithvoid 45577424SmsmithAcpiUtDeleteInternalSimpleObject ( 45667754Smsmith ACPI_OPERAND_OBJECT *Object); 45767754Smsmith 45899679Siwasakivoid 45977424SmsmithAcpiUtDeleteInternalObjectList ( 46067754Smsmith ACPI_OPERAND_OBJECT **ObjList); 46167754Smsmith 46267754Smsmith 46367754Smsmith/* 464151937Sjkim * uteval - object evaluation 46567754Smsmith */ 46667754SmsmithACPI_STATUS 467114237SnjlAcpiUtEvaluateObject ( 468114237Snjl ACPI_NAMESPACE_NODE *PrefixNode, 469114237Snjl char *Path, 470114237Snjl UINT32 ExpectedReturnBtypes, 471114237Snjl ACPI_OPERAND_OBJECT **ReturnDesc); 472114237Snjl 473114237SnjlACPI_STATUS 47477424SmsmithAcpiUtEvaluateNumericObject ( 475114237Snjl char *ObjectName, 47667754Smsmith ACPI_NAMESPACE_NODE *DeviceNode, 477202771Sjkim UINT64 *Value); 47867754Smsmith 47967754SmsmithACPI_STATUS 480197104SjkimAcpiUtExecute_STA ( 48167754Smsmith ACPI_NAMESPACE_NODE *DeviceNode, 482197104Sjkim UINT32 *StatusFlags); 48367754Smsmith 48467754SmsmithACPI_STATUS 485197104SjkimAcpiUtExecutePowerMethods ( 48687031Smsmith ACPI_NAMESPACE_NODE *DeviceNode, 487197104Sjkim const char **MethodNames, 488197104Sjkim UINT8 MethodCount, 489197104Sjkim UINT8 *OutValues); 49087031Smsmith 491197104Sjkim 492197104Sjkim/* 493197104Sjkim * utids - device ID support 494197104Sjkim */ 49587031SmsmithACPI_STATUS 496197104SjkimAcpiUtExecute_HID ( 49767754Smsmith ACPI_NAMESPACE_NODE *DeviceNode, 498197104Sjkim ACPI_DEVICE_ID **ReturnId); 49967754Smsmith 50067754SmsmithACPI_STATUS 50177424SmsmithAcpiUtExecute_UID ( 50267754Smsmith ACPI_NAMESPACE_NODE *DeviceNode, 503197104Sjkim ACPI_DEVICE_ID **ReturnId); 50467754Smsmith 505126372SnjlACPI_STATUS 506197104SjkimAcpiUtExecute_CID ( 507126372Snjl ACPI_NAMESPACE_NODE *DeviceNode, 508197104Sjkim ACPI_DEVICE_ID_LIST **ReturnCidList); 50967754Smsmith 510197104Sjkim 511193267Sjkim/* 512193267Sjkim * utlock - reader/writer locks 513193267Sjkim */ 514193267SjkimACPI_STATUS 515193267SjkimAcpiUtCreateRwLock ( 516193267Sjkim ACPI_RW_LOCK *Lock); 51767754Smsmith 518193267Sjkimvoid 519193267SjkimAcpiUtDeleteRwLock ( 520193267Sjkim ACPI_RW_LOCK *Lock); 521193267Sjkim 522193267SjkimACPI_STATUS 523193267SjkimAcpiUtAcquireReadLock ( 524193267Sjkim ACPI_RW_LOCK *Lock); 525193267Sjkim 526193267SjkimACPI_STATUS 527193267SjkimAcpiUtReleaseReadLock ( 528193267Sjkim ACPI_RW_LOCK *Lock); 529193267Sjkim 530193267SjkimACPI_STATUS 531193267SjkimAcpiUtAcquireWriteLock ( 532193267Sjkim ACPI_RW_LOCK *Lock); 533193267Sjkim 534193267Sjkimvoid 535193267SjkimAcpiUtReleaseWriteLock ( 536193267Sjkim ACPI_RW_LOCK *Lock); 537193267Sjkim 538193267Sjkim 53967754Smsmith/* 540151937Sjkim * utobject - internal object create/delete/cache routines 54167754Smsmith */ 54283174SmsmithACPI_OPERAND_OBJECT * 54383174SmsmithAcpiUtCreateInternalObjectDbg ( 544193267Sjkim const char *ModuleName, 54583174Smsmith UINT32 LineNumber, 54683174Smsmith UINT32 ComponentId, 54791116Smsmith ACPI_OBJECT_TYPE Type); 54883174Smsmith 54967754Smsmithvoid * 55083174SmsmithAcpiUtAllocateObjectDescDbg ( 551193267Sjkim const char *ModuleName, 55267754Smsmith UINT32 LineNumber, 55367754Smsmith UINT32 ComponentId); 55467754Smsmith 555151937Sjkim#define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) 556151937Sjkim#define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) 55767754Smsmith 55867754Smsmithvoid 55977424SmsmithAcpiUtDeleteObjectDesc ( 56067754Smsmith ACPI_OPERAND_OBJECT *Object); 56167754Smsmith 56267754SmsmithBOOLEAN 56377424SmsmithAcpiUtValidInternalObject ( 56467754Smsmith void *Object); 56567754Smsmith 566107325SiwasakiACPI_OPERAND_OBJECT * 567193267SjkimAcpiUtCreatePackageObject ( 568193267Sjkim UINT32 Count); 569193267Sjkim 570193267SjkimACPI_OPERAND_OBJECT * 571199337SjkimAcpiUtCreateIntegerObject ( 572199337Sjkim UINT64 Value); 573199337Sjkim 574199337SjkimACPI_OPERAND_OBJECT * 575107325SiwasakiAcpiUtCreateBufferObject ( 576107325Siwasaki ACPI_SIZE BufferSize); 57767754Smsmith 578138287SmarksACPI_OPERAND_OBJECT * 579138287SmarksAcpiUtCreateStringObject ( 580138287Smarks ACPI_SIZE StringSize); 581107325Siwasaki 58267754SmsmithACPI_STATUS 58377424SmsmithAcpiUtGetObjectSize( 58467754Smsmith ACPI_OPERAND_OBJECT *Obj, 58591116Smsmith ACPI_SIZE *ObjLength); 58667754Smsmith 58767754Smsmith 58867754Smsmith/* 589210976Sjkim * utosi - Support for the _OSI predefined control method 590210976Sjkim */ 591210976SjkimACPI_STATUS 592210976SjkimAcpiUtInitializeInterfaces ( 593210976Sjkim void); 594210976Sjkim 595210976Sjkimvoid 596210976SjkimAcpiUtInterfaceTerminate ( 597210976Sjkim void); 598210976Sjkim 599210976SjkimACPI_STATUS 600210976SjkimAcpiUtInstallInterface ( 601210976Sjkim ACPI_STRING InterfaceName); 602210976Sjkim 603210976SjkimACPI_STATUS 604210976SjkimAcpiUtRemoveInterface ( 605210976Sjkim ACPI_STRING InterfaceName); 606210976Sjkim 607210976SjkimACPI_INTERFACE_INFO * 608210976SjkimAcpiUtGetInterface ( 609210976Sjkim ACPI_STRING InterfaceName); 610210976Sjkim 611210976SjkimACPI_STATUS 612210976SjkimAcpiUtOsiImplementation ( 613210976Sjkim ACPI_WALK_STATE *WalkState); 614210976Sjkim 615210976Sjkim 616210976Sjkim/* 617151937Sjkim * utstate - Generic state creation/cache routines 61867754Smsmith */ 61967754Smsmithvoid 62077424SmsmithAcpiUtPushGenericState ( 62167754Smsmith ACPI_GENERIC_STATE **ListHead, 62267754Smsmith ACPI_GENERIC_STATE *State); 62367754Smsmith 62467754SmsmithACPI_GENERIC_STATE * 62577424SmsmithAcpiUtPopGenericState ( 62667754Smsmith ACPI_GENERIC_STATE **ListHead); 62767754Smsmith 62867754Smsmith 62967754SmsmithACPI_GENERIC_STATE * 63077424SmsmithAcpiUtCreateGenericState ( 63167754Smsmith void); 63267754Smsmith 63387031SmsmithACPI_THREAD_STATE * 63487031SmsmithAcpiUtCreateThreadState ( 63587031Smsmith void); 63687031Smsmith 63767754SmsmithACPI_GENERIC_STATE * 63877424SmsmithAcpiUtCreateUpdateState ( 63967754Smsmith ACPI_OPERAND_OBJECT *Object, 64067754Smsmith UINT16 Action); 64167754Smsmith 64273561SmsmithACPI_GENERIC_STATE * 64377424SmsmithAcpiUtCreatePkgState ( 64473561Smsmith void *InternalObject, 64573561Smsmith void *ExternalObject, 64673561Smsmith UINT16 Index); 64773561Smsmith 64867754SmsmithACPI_STATUS 64977424SmsmithAcpiUtCreateUpdateStateAndPush ( 65067754Smsmith ACPI_OPERAND_OBJECT *Object, 65167754Smsmith UINT16 Action, 65267754Smsmith ACPI_GENERIC_STATE **StateList); 65367754Smsmith 65473561SmsmithACPI_STATUS 65577424SmsmithAcpiUtCreatePkgStateAndPush ( 65673561Smsmith void *InternalObject, 65773561Smsmith void *ExternalObject, 65873561Smsmith UINT16 Index, 65973561Smsmith ACPI_GENERIC_STATE **StateList); 66073561Smsmith 66167754SmsmithACPI_GENERIC_STATE * 66277424SmsmithAcpiUtCreateControlState ( 66367754Smsmith void); 66467754Smsmith 66567754Smsmithvoid 66677424SmsmithAcpiUtDeleteGenericState ( 66767754Smsmith ACPI_GENERIC_STATE *State); 66867754Smsmith 66967754Smsmith 67067754Smsmith/* 671151937Sjkim * utmath 67267754Smsmith */ 67384491SmsmithACPI_STATUS 67484491SmsmithAcpiUtDivide ( 675202771Sjkim UINT64 InDividend, 676202771Sjkim UINT64 InDivisor, 677202771Sjkim UINT64 *OutQuotient, 678202771Sjkim UINT64 *OutRemainder); 67984491Smsmith 68084491SmsmithACPI_STATUS 68184491SmsmithAcpiUtShortDivide ( 682202771Sjkim UINT64 InDividend, 68384491Smsmith UINT32 Divisor, 684202771Sjkim UINT64 *OutQuotient, 68584491Smsmith UINT32 *OutRemainder); 68684491Smsmith 687151937Sjkim/* 688151937Sjkim * utmisc 689151937Sjkim */ 690167802Sjkimconst char * 691167802SjkimAcpiUtValidateException ( 692167802Sjkim ACPI_STATUS Status); 693167802Sjkim 694167802SjkimBOOLEAN 695197104SjkimAcpiUtIsPciRootBridge ( 696197104Sjkim char *Id); 697197104Sjkim 698197104SjkimBOOLEAN 699167802SjkimAcpiUtIsAmlTable ( 700167802Sjkim ACPI_TABLE_HEADER *Table); 701167802Sjkim 702151937SjkimACPI_STATUS 703151937SjkimAcpiUtAllocateOwnerId ( 704151937Sjkim ACPI_OWNER_ID *OwnerId); 705151937Sjkim 706151937Sjkimvoid 707151937SjkimAcpiUtReleaseOwnerId ( 708151937Sjkim ACPI_OWNER_ID *OwnerId); 709151937Sjkim 710151937SjkimACPI_STATUS 711151937SjkimAcpiUtWalkPackageTree ( 712151937Sjkim ACPI_OPERAND_OBJECT *SourceObject, 713151937Sjkim void *TargetObject, 714151937Sjkim ACPI_PKG_CALLBACK WalkCallback, 715151937Sjkim void *Context); 716151937Sjkim 717151937Sjkimvoid 718151937SjkimAcpiUtStrupr ( 719151937Sjkim char *SrcString); 720151937Sjkim 721151937Sjkimvoid 722209746SjkimAcpiUtStrlwr ( 723209746Sjkim char *SrcString); 724209746Sjkim 725209746Sjkimvoid 726151937SjkimAcpiUtPrintString ( 727151937Sjkim char *String, 728151937Sjkim UINT8 MaxLength); 729151937Sjkim 73067754SmsmithBOOLEAN 73177424SmsmithAcpiUtValidAcpiName ( 73267754Smsmith UINT32 Name); 73367754Smsmith 734193267Sjkimvoid 735167802SjkimAcpiUtRepairName ( 736167802Sjkim char *Name); 737167802Sjkim 73867754SmsmithBOOLEAN 739167802SjkimAcpiUtValidAcpiChar ( 740167802Sjkim char Character, 741193267Sjkim UINT32 Position); 74267754Smsmith 74399679SiwasakiACPI_STATUS 74499679SiwasakiAcpiUtStrtoul64 ( 745114237Snjl char *String, 74699679Siwasaki UINT32 Base, 747202771Sjkim UINT64 *RetInteger); 74899679Siwasaki 749138287Smarks/* Values for Base above (16=Hex, 10=Decimal) */ 750138287Smarks 751138287Smarks#define ACPI_ANY_BASE 0 752138287Smarks 753151937SjkimUINT32 75499679SiwasakiAcpiUtDwordByteSwap ( 75599679Siwasaki UINT32 Value); 75699679Siwasaki 75799679Siwasakivoid 75899679SiwasakiAcpiUtSetIntegerWidth ( 75999679Siwasaki UINT8 Revision); 76099679Siwasaki 761102550Siwasaki#ifdef ACPI_DEBUG_OUTPUT 76273561Smsmithvoid 76377424SmsmithAcpiUtDisplayInitPathname ( 764114237Snjl UINT8 Type, 765114237Snjl ACPI_NAMESPACE_NODE *ObjHandle, 76673561Smsmith char *Path); 76773561Smsmith#endif 76873561Smsmith 76973561Smsmith 77067754Smsmith/* 771167802Sjkim * utresrc 772167802Sjkim */ 773167802SjkimACPI_STATUS 774167802SjkimAcpiUtWalkAmlResources ( 775167802Sjkim UINT8 *Aml, 776167802Sjkim ACPI_SIZE AmlLength, 777167802Sjkim ACPI_WALK_AML_CALLBACK UserFunction, 778167802Sjkim void *Context); 779167802Sjkim 780167802SjkimACPI_STATUS 781167802SjkimAcpiUtValidateResource ( 782167802Sjkim void *Aml, 783167802Sjkim UINT8 *ReturnIndex); 784167802Sjkim 785167802SjkimUINT32 786167802SjkimAcpiUtGetDescriptorLength ( 787167802Sjkim void *Aml); 788167802Sjkim 789167802SjkimUINT16 790167802SjkimAcpiUtGetResourceLength ( 791167802Sjkim void *Aml); 792167802Sjkim 793167802SjkimUINT8 794167802SjkimAcpiUtGetResourceHeaderLength ( 795167802Sjkim void *Aml); 796167802Sjkim 797167802SjkimUINT8 798167802SjkimAcpiUtGetResourceType ( 799167802Sjkim void *Aml); 800167802Sjkim 801167802SjkimACPI_STATUS 802167802SjkimAcpiUtGetResourceEndTag ( 803167802Sjkim ACPI_OPERAND_OBJECT *ObjDesc, 804167802Sjkim UINT8 **EndTag); 805167802Sjkim 806167802Sjkim 807167802Sjkim/* 808151937Sjkim * utmutex - mutex support 80967754Smsmith */ 810151937SjkimACPI_STATUS 811151937SjkimAcpiUtMutexInitialize ( 812151937Sjkim void); 81367754Smsmith 81482367Smsmithvoid 815151937SjkimAcpiUtMutexTerminate ( 816151937Sjkim void); 81782367Smsmith 818151937SjkimACPI_STATUS 819151937SjkimAcpiUtAcquireMutex ( 820151937Sjkim ACPI_MUTEX_HANDLE MutexId); 82182367Smsmith 82291116SmsmithACPI_STATUS 823151937SjkimAcpiUtReleaseMutex ( 824151937Sjkim ACPI_MUTEX_HANDLE MutexId); 825151937Sjkim 826151937Sjkim 827151937Sjkim/* 828151937Sjkim * utalloc - memory allocation and object caching 829151937Sjkim */ 830151937SjkimACPI_STATUS 831151937SjkimAcpiUtCreateCaches ( 832151937Sjkim void); 833151937Sjkim 834151937SjkimACPI_STATUS 835151937SjkimAcpiUtDeleteCaches ( 836151937Sjkim void); 837151937Sjkim 838151937SjkimACPI_STATUS 83991116SmsmithAcpiUtValidateBuffer ( 84091116Smsmith ACPI_BUFFER *Buffer); 84182367Smsmith 84291116SmsmithACPI_STATUS 84391116SmsmithAcpiUtInitializeBuffer ( 84491116Smsmith ACPI_BUFFER *Buffer, 84591116Smsmith ACPI_SIZE RequiredLength); 84682367Smsmith 84782367Smsmithvoid * 84880062SmsmithAcpiUtAllocate ( 84991116Smsmith ACPI_SIZE Size, 85067754Smsmith UINT32 Component, 851193267Sjkim const char *Module, 85267754Smsmith UINT32 Line); 85367754Smsmith 85467754Smsmithvoid * 855167802SjkimAcpiUtAllocateZeroed ( 85691116Smsmith ACPI_SIZE Size, 85767754Smsmith UINT32 Component, 858193267Sjkim const char *Module, 85967754Smsmith UINT32 Line); 86067754Smsmith 86191116Smsmith#ifdef ACPI_DBG_TRACK_ALLOCATIONS 86291116Smsmithvoid * 86391116SmsmithAcpiUtAllocateAndTrack ( 86491116Smsmith ACPI_SIZE Size, 86591116Smsmith UINT32 Component, 866193267Sjkim const char *Module, 86791116Smsmith UINT32 Line); 86891116Smsmith 86991116Smsmithvoid * 870167802SjkimAcpiUtAllocateZeroedAndTrack ( 87191116Smsmith ACPI_SIZE Size, 87291116Smsmith UINT32 Component, 873193267Sjkim const char *Module, 87491116Smsmith UINT32 Line); 87591116Smsmith 87667754Smsmithvoid 87791116SmsmithAcpiUtFreeAndTrack ( 87867754Smsmith void *Address, 87967754Smsmith UINT32 Component, 880193267Sjkim const char *Module, 88167754Smsmith UINT32 Line); 88299679Siwasaki 88367754Smsmithvoid 88477424SmsmithAcpiUtDumpAllocationInfo ( 88567754Smsmith void); 88667754Smsmith 88767754Smsmithvoid 88884491SmsmithAcpiUtDumpAllocations ( 88967754Smsmith UINT32 Component, 890193267Sjkim const char *Module); 891167802Sjkim 892167802SjkimACPI_STATUS 893167802SjkimAcpiUtCreateList ( 894167802Sjkim char *ListName, 895167802Sjkim UINT16 ObjectSize, 896167802Sjkim ACPI_MEMORY_LIST **ReturnCache); 897167802Sjkim 898212761Sjkim#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 899167802Sjkim 90067754Smsmith 901212761Sjkim/* 902212761Sjkim * utxferror - various error/warning output functions 903212761Sjkim */ 904212761Sjkimvoid ACPI_INTERNAL_VAR_XFACE 905212761SjkimAcpiUtPredefinedWarning ( 906212761Sjkim const char *ModuleName, 907212761Sjkim UINT32 LineNumber, 908212761Sjkim char *Pathname, 909212761Sjkim UINT8 NodeFlags, 910212761Sjkim const char *Format, 911212761Sjkim ...); 912212761Sjkim 913212761Sjkimvoid ACPI_INTERNAL_VAR_XFACE 914212761SjkimAcpiUtPredefinedInfo ( 915212761Sjkim const char *ModuleName, 916212761Sjkim UINT32 LineNumber, 917212761Sjkim char *Pathname, 918212761Sjkim UINT8 NodeFlags, 919212761Sjkim const char *Format, 920212761Sjkim ...); 921212761Sjkim 922212761Sjkimvoid 923212761SjkimAcpiUtNamespaceError ( 924212761Sjkim const char *ModuleName, 925212761Sjkim UINT32 LineNumber, 926212761Sjkim const char *InternalName, 927212761Sjkim ACPI_STATUS LookupStatus); 928212761Sjkim 929212761Sjkimvoid 930212761SjkimAcpiUtMethodError ( 931212761Sjkim const char *ModuleName, 932212761Sjkim UINT32 LineNumber, 933212761Sjkim const char *Message, 934212761Sjkim ACPI_NAMESPACE_NODE *Node, 935212761Sjkim const char *Path, 936212761Sjkim ACPI_STATUS LookupStatus); 937212761Sjkim 93877424Smsmith#endif /* _ACUTILS_H */ 939