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