1 /******************************************************************************
3 * Module Name: utglobal - Global variables for the ACPI subsystem
6 *****************************************************************************/
8 /******************************************************************************
12 * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
13 * All rights reserved.
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights. You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23 * copy of the source code appearing in this file ("Covered Code") an
24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25 * base code distributed originally by Intel ("Original Intel Code") to copy,
26 * make derivatives, distribute, use and display any portion of the Covered
27 * Code in any form, with the right to sublicense such rights; and
29 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30 * license (with the right to sublicense), under only those claims of Intel
31 * patents that are infringed by the Original Intel Code, to make, use, sell,
32 * offer to sell, and import the Covered Code and derivative works thereof
33 * solely to the minimum extent necessary to exercise the above copyright
34 * license, and in no event shall the patent license extend to any additions
35 * to or modifications of the Original Intel Code. No other license or right
36 * is granted directly or by implication, estoppel or otherwise;
38 * The above copyright and patent license is granted only if the following
43 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44 * Redistribution of source code of any substantial portion of the Covered
45 * Code or modification with rights to further distribute source must include
46 * the above Copyright Notice, the above License, this list of Conditions,
47 * and the following Disclaimer and Export Compliance provision. In addition,
48 * Licensee must cause all Covered Code to which Licensee contributes to
49 * contain a file documenting the changes Licensee made to create that Covered
50 * Code and the date of any change. Licensee must include in that file the
51 * documentation of any changes made by any predecessor Licensee. Licensee
52 * must include a prominent statement that the modification is derived,
53 * directly or indirectly, from Original Intel Code.
55 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56 * Redistribution of source code of any substantial portion of the Covered
57 * Code or modification without rights to further distribute source must
58 * include the following Disclaimer and Export Compliance provision in the
59 * documentation and/or other materials provided with distribution. In
60 * addition, Licensee may not authorize further sublicense of source of any
61 * portion of the Covered Code, and must include terms to the effect that the
62 * license from Licensee to its licensee is limited to the intellectual
63 * property embodied in the software Licensee provides to its licensee, and
64 * not to intellectual property embodied in modifications its licensee may
67 * 3.3. Redistribution of Executable. Redistribution in executable form of any
68 * substantial portion of the Covered Code or modification must reproduce the
69 * above Copyright Notice, and the following Disclaimer and Export Compliance
70 * provision in the documentation and/or other materials provided with the
73 * 3.4. Intel retains all right, title, and interest in and to the Original
76 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77 * Intel shall be used in advertising or otherwise to promote the sale, use or
78 * other dealings in products derived from or relating to the Covered Code
79 * without prior written authorization from Intel.
81 * 4. Disclaimer and Export Compliance
83 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
86 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
87 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
88 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
91 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
97 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
100 * 4.3. Licensee shall not export, either directly or indirectly, any of this
101 * software or system incorporating such software without first obtaining any
102 * required license or other approval from the U. S. Department of Commerce or
103 * any other agency or department of the United States Government. In the
104 * event Licensee exports any such software from the United States or
105 * re-exports any such software from a foreign destination, Licensee shall
106 * ensure that the distribution and export/re-export of the software is in
107 * compliance with all laws, regulations, orders, or other restrictions of the
108 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109 * any of its subsidiaries will export/re-export any technical data, process,
110 * software, or service, directly or indirectly, to any country for which the
111 * United States government or any agency thereof requires an export license,
112 * other governmental approval, or letter of assurance, without first obtaining
113 * such license, approval or letter.
115 *****************************************************************************/
117 #define __UTGLOBAL_C__
118 #define DEFINE_ACPI_GLOBALS
120 #include <contrib/dev/acpica/acpi.h>
121 #include <contrib/dev/acpica/acnamesp.h>
123 ACPI_EXPORT_SYMBOL (AcpiGbl_FADT)
125 #define _COMPONENT ACPI_UTILITIES
126 ACPI_MODULE_NAME ("utglobal")
129 /*******************************************************************************
131 * Static global variable initialization.
133 ******************************************************************************/
136 * We want the debug switches statically initialized so they
137 * are already set when the debugger is entered.
140 /* Debug switch - level and trace mask */
142 #ifdef ACPI_DEBUG_OUTPUT
143 UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT;
145 UINT32 AcpiDbgLevel = ACPI_NORMAL_DEFAULT;
148 /* Debug switch - layer (component) mask */
150 UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT;
151 UINT32 AcpiGbl_NestingLevel = 0;
153 /* Debugger globals */
155 BOOLEAN AcpiGbl_DbTerminateThreads = FALSE;
156 BOOLEAN AcpiGbl_AbortMethod = FALSE;
157 BOOLEAN AcpiGbl_MethodExecuting = FALSE;
161 UINT32 AcpiGbl_StartupFlags = 0;
163 /* System starts uninitialized */
165 BOOLEAN AcpiGbl_Shutdown = TRUE;
167 const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] =
177 const char *AcpiGbl_HighestDstateNames[4] =
186 /*******************************************************************************
188 * FUNCTION: AcpiFormatException
190 * PARAMETERS: Status - The ACPI_STATUS code to be formatted
192 * RETURN: A string containing the exception text. A valid pointer is
195 * DESCRIPTION: This function translates an ACPI exception into an ASCII string
196 * It is here instead of utxface.c so it is always present.
198 ******************************************************************************/
201 AcpiFormatException (
204 const char *Exception = NULL;
207 ACPI_FUNCTION_ENTRY ();
210 Exception = AcpiUtValidateException (Status);
213 /* Exception code was not recognized */
215 ACPI_ERROR ((AE_INFO,
216 "Unknown exception code: 0x%8.8X", Status));
218 Exception = "UNKNOWN_STATUS_CODE";
221 return (ACPI_CAST_PTR (const char, Exception));
224 ACPI_EXPORT_SYMBOL (AcpiFormatException)
227 /*******************************************************************************
231 ******************************************************************************/
234 * Predefined ACPI Names (Built-in to the Interpreter)
237 * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
238 * during the initialization sequence.
239 * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
240 * perform a Notify() operation on it.
242 const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
244 {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
245 {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
246 {"_SB_", ACPI_TYPE_DEVICE, NULL},
247 {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
248 {"_TZ_", ACPI_TYPE_THERMAL, NULL},
249 {"_REV", ACPI_TYPE_INTEGER, (char *) ACPI_CA_SUPPORT_LEVEL},
250 {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
251 {"_GL_", ACPI_TYPE_MUTEX, (char *) 1},
253 #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
254 {"_OSI", ACPI_TYPE_METHOD, (char *) 1},
257 /* Table terminator */
259 {NULL, ACPI_TYPE_ANY, NULL}
263 * Properties of the ACPI Object Types, both internal and external.
264 * The table is indexed by values of ACPI_OBJECT_TYPE
266 const UINT8 AcpiGbl_NsProperties[] =
268 ACPI_NS_NORMAL, /* 00 Any */
269 ACPI_NS_NORMAL, /* 01 Number */
270 ACPI_NS_NORMAL, /* 02 String */
271 ACPI_NS_NORMAL, /* 03 Buffer */
272 ACPI_NS_NORMAL, /* 04 Package */
273 ACPI_NS_NORMAL, /* 05 FieldUnit */
274 ACPI_NS_NEWSCOPE, /* 06 Device */
275 ACPI_NS_NORMAL, /* 07 Event */
276 ACPI_NS_NEWSCOPE, /* 08 Method */
277 ACPI_NS_NORMAL, /* 09 Mutex */
278 ACPI_NS_NORMAL, /* 10 Region */
279 ACPI_NS_NEWSCOPE, /* 11 Power */
280 ACPI_NS_NEWSCOPE, /* 12 Processor */
281 ACPI_NS_NEWSCOPE, /* 13 Thermal */
282 ACPI_NS_NORMAL, /* 14 BufferField */
283 ACPI_NS_NORMAL, /* 15 DdbHandle */
284 ACPI_NS_NORMAL, /* 16 Debug Object */
285 ACPI_NS_NORMAL, /* 17 DefField */
286 ACPI_NS_NORMAL, /* 18 BankField */
287 ACPI_NS_NORMAL, /* 19 IndexField */
288 ACPI_NS_NORMAL, /* 20 Reference */
289 ACPI_NS_NORMAL, /* 21 Alias */
290 ACPI_NS_NORMAL, /* 22 MethodAlias */
291 ACPI_NS_NORMAL, /* 23 Notify */
292 ACPI_NS_NORMAL, /* 24 Address Handler */
293 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */
294 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */
295 ACPI_NS_NEWSCOPE, /* 27 Scope */
296 ACPI_NS_NORMAL, /* 28 Extra */
297 ACPI_NS_NORMAL, /* 29 Data */
298 ACPI_NS_NORMAL /* 30 Invalid */
302 /* Hex to ASCII conversion table */
304 static const char AcpiGbl_HexToAscii[] =
306 '0','1','2','3','4','5','6','7',
307 '8','9','A','B','C','D','E','F'
311 /*******************************************************************************
313 * FUNCTION: AcpiUtHexToAsciiChar
315 * PARAMETERS: Integer - Contains the hex digit
316 * Position - bit position of the digit within the
317 * integer (multiple of 4)
319 * RETURN: The converted Ascii character
321 * DESCRIPTION: Convert a hex digit to an Ascii character
323 ******************************************************************************/
326 AcpiUtHexToAsciiChar (
327 ACPI_INTEGER Integer,
331 return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]);
335 /******************************************************************************
337 * Event and Hardware globals
339 ******************************************************************************/
341 ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] =
343 /* Name Parent Register Register Bit Position Register Bit Mask */
345 /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_TIMER_STATUS, ACPI_BITMASK_TIMER_STATUS},
346 /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_BUS_MASTER_STATUS, ACPI_BITMASK_BUS_MASTER_STATUS},
347 /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_STATUS},
348 /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_STATUS},
349 /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_STATUS},
350 /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_STATUS},
351 /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_WAKE_STATUS, ACPI_BITMASK_WAKE_STATUS},
352 /* ACPI_BITREG_PCIEXP_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_PCIEXP_WAKE_STATUS, ACPI_BITMASK_PCIEXP_WAKE_STATUS},
354 /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_TIMER_ENABLE, ACPI_BITMASK_TIMER_ENABLE},
355 /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
356 /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_ENABLE},
357 /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
358 /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_ENABLE},
359 /* ACPI_BITREG_WAKE_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, 0, 0},
360 /* ACPI_BITREG_PCIEXP_WAKE_DISABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE, ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
362 /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SCI_ENABLE, ACPI_BITMASK_SCI_ENABLE},
363 /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_BUS_MASTER_RLD, ACPI_BITMASK_BUS_MASTER_RLD},
364 /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE, ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
365 /* ACPI_BITREG_SLEEP_TYPE_A */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X},
366 /* ACPI_BITREG_SLEEP_TYPE_B */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X},
367 /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_ENABLE, ACPI_BITMASK_SLEEP_ENABLE},
369 /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL, ACPI_BITPOSITION_ARB_DISABLE, ACPI_BITMASK_ARB_DISABLE}
373 ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
375 /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS, ACPI_BITREG_TIMER_ENABLE, ACPI_BITMASK_TIMER_STATUS, ACPI_BITMASK_TIMER_ENABLE},
376 /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS, ACPI_BITREG_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
377 /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS, ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_ENABLE},
378 /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS, ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
379 /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_ENABLE},
382 /*******************************************************************************
384 * FUNCTION: AcpiUtGetRegionName
390 * DESCRIPTION: Translate a Space ID into a name string (Debug only)
392 ******************************************************************************/
394 /* Region type decoding */
396 const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
410 AcpiUtGetRegionName (
414 if (SpaceId >= ACPI_USER_REGION_BEGIN)
416 return ("UserDefinedRegion");
418 else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
420 return ("InvalidSpaceId");
423 return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId]));
427 /*******************************************************************************
429 * FUNCTION: AcpiUtGetEventName
435 * DESCRIPTION: Translate a Event ID into a name string (Debug only)
437 ******************************************************************************/
439 /* Event type decoding */
441 static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
456 if (EventId > ACPI_EVENT_MAX)
458 return ("InvalidEventID");
461 return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId]));
465 /*******************************************************************************
467 * FUNCTION: AcpiUtGetTypeName
473 * DESCRIPTION: Translate a Type ID into a name string (Debug only)
475 ******************************************************************************/
478 * Elements of AcpiGbl_NsTypeNames below must match
479 * one-to-one with values of ACPI_OBJECT_TYPE
481 * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
482 * when stored in a table it really means that we have thus far seen no
483 * evidence to indicate what type is actually going to be stored for this entry.
485 static const char AcpiGbl_BadType[] = "UNDEFINED";
487 /* Printable names of the ACPI object types */
489 static const char *AcpiGbl_NsTypeNames[] =
496 /* 05 */ "FieldUnit",
503 /* 12 */ "Processor",
505 /* 14 */ "BufferField",
506 /* 15 */ "DdbHandle",
507 /* 16 */ "DebugObject",
508 /* 17 */ "RegionField",
509 /* 18 */ "BankField",
510 /* 19 */ "IndexField",
511 /* 20 */ "Reference",
513 /* 22 */ "MethodAlias",
515 /* 24 */ "AddrHandler",
516 /* 25 */ "ResourceDesc",
517 /* 26 */ "ResourceFld",
527 ACPI_OBJECT_TYPE Type)
530 if (Type > ACPI_TYPE_INVALID)
532 return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
535 return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type]));
540 AcpiUtGetObjectTypeName (
541 ACPI_OPERAND_OBJECT *ObjDesc)
546 return ("[NULL Object Descriptor]");
549 return (AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (ObjDesc)));
553 /*******************************************************************************
555 * FUNCTION: AcpiUtGetNodeName
557 * PARAMETERS: Object - A namespace node
559 * RETURN: Pointer to a string
561 * DESCRIPTION: Validate the node and return the node's ACPI name.
563 ******************************************************************************/
569 ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object;
572 /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
579 /* Check for Root node */
581 if ((Object == ACPI_ROOT_OBJECT) ||
582 (Object == AcpiGbl_RootNode))
587 /* Descriptor must be a namespace node */
589 if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
594 /* Name must be a valid ACPI name */
596 if (!AcpiUtValidAcpiName (Node->Name.Integer))
598 Node->Name.Integer = AcpiUtRepairName (Node->Name.Ascii);
601 /* Return the name */
603 return (Node->Name.Ascii);
607 /*******************************************************************************
609 * FUNCTION: AcpiUtGetDescriptorName
611 * PARAMETERS: Object - An ACPI object
613 * RETURN: Pointer to a string
615 * DESCRIPTION: Validate object and return the descriptor type
617 ******************************************************************************/
619 /* Printable names of object descriptor types */
621 static const char *AcpiGbl_DescTypeNames[] =
625 /* 02 */ "State-Generic",
626 /* 03 */ "State-Update",
627 /* 04 */ "State-Package",
628 /* 05 */ "State-Control",
629 /* 06 */ "State-RootParseScope",
630 /* 07 */ "State-ParseScope",
631 /* 08 */ "State-WalkScope",
632 /* 09 */ "State-Result",
633 /* 10 */ "State-Notify",
634 /* 11 */ "State-Thread",
643 AcpiUtGetDescriptorName (
649 return ("NULL OBJECT");
652 if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
654 return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
657 return (ACPI_CAST_PTR (char,
658 AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]));
663 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
665 * Strings and procedures used for debug only
668 /*******************************************************************************
670 * FUNCTION: AcpiUtGetMutexName
672 * PARAMETERS: MutexId - The predefined ID for this mutex.
674 * RETURN: String containing the name of the mutex. Always returns a valid
677 * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
679 ******************************************************************************/
686 if (MutexId > ACPI_MAX_MUTEX)
688 return ("Invalid Mutex ID");
691 return (AcpiGbl_MutexNames[MutexId]);
696 /*******************************************************************************
698 * FUNCTION: AcpiUtValidObjectType
700 * PARAMETERS: Type - Object type to be validated
702 * RETURN: TRUE if valid object type, FALSE otherwise
704 * DESCRIPTION: Validate an object type
706 ******************************************************************************/
709 AcpiUtValidObjectType (
710 ACPI_OBJECT_TYPE Type)
713 if (Type > ACPI_TYPE_LOCAL_MAX)
715 /* Note: Assumes all TYPEs are contiguous (external/local) */
724 /*******************************************************************************
726 * FUNCTION: AcpiUtInitGlobals
732 * DESCRIPTION: Init library globals. All globals that require specific
733 * initialization should be initialized here!
735 ******************************************************************************/
745 ACPI_FUNCTION_TRACE (UtInitGlobals);
748 /* Create all memory caches */
750 Status = AcpiUtCreateCaches ();
751 if (ACPI_FAILURE (Status))
756 /* Mutex locked flags */
758 for (i = 0; i < ACPI_NUM_MUTEX; i++)
760 AcpiGbl_MutexInfo[i].Mutex = NULL;
761 AcpiGbl_MutexInfo[i].ThreadId = ACPI_MUTEX_NOT_ACQUIRED;
762 AcpiGbl_MutexInfo[i].UseCount = 0;
765 for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++)
767 AcpiGbl_OwnerIdMask[i] = 0;
769 AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; /* Last ID is never valid */
774 AcpiGbl_GpeXruptListHead = NULL;
775 AcpiGbl_GpeFadtBlocks[0] = NULL;
776 AcpiGbl_GpeFadtBlocks[1] = NULL;
778 /* Global notify handlers */
780 AcpiGbl_SystemNotify.Handler = NULL;
781 AcpiGbl_DeviceNotify.Handler = NULL;
782 AcpiGbl_ExceptionHandler = NULL;
783 AcpiGbl_InitHandler = NULL;
785 /* Global Lock support */
787 AcpiGbl_GlobalLockSemaphore = NULL;
788 AcpiGbl_GlobalLockMutex = NULL;
789 AcpiGbl_GlobalLockAcquired = FALSE;
790 AcpiGbl_GlobalLockHandle = 0;
792 /* Miscellaneous variables */
794 AcpiGbl_CmSingleStep = FALSE;
795 AcpiGbl_DbTerminateThreads = FALSE;
796 AcpiGbl_Shutdown = FALSE;
797 AcpiGbl_NsLookupCount = 0;
798 AcpiGbl_PsFindCount = 0;
799 AcpiGbl_AcpiHardwarePresent = TRUE;
800 AcpiGbl_LastOwnerIdIndex = 0;
801 AcpiGbl_NextOwnerIdOffset = 0;
802 AcpiGbl_TraceMethodName = 0;
803 AcpiGbl_TraceDbgLevel = 0;
804 AcpiGbl_TraceDbgLayer = 0;
805 AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING;
806 AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT;
808 /* Hardware oriented */
810 AcpiGbl_EventsInitialized = FALSE;
811 AcpiGbl_SystemAwakeAndRunning = TRUE;
815 AcpiGbl_RootNode = NULL;
816 AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME;
817 AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED;
818 AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE;
819 AcpiGbl_RootNodeStruct.Child = NULL;
820 AcpiGbl_RootNodeStruct.Peer = NULL;
821 AcpiGbl_RootNodeStruct.Object = NULL;
822 AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST;
825 #ifdef ACPI_DEBUG_OUTPUT
826 AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX;
829 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
830 AcpiGbl_DisplayFinalMemStats = FALSE;
838 ACPI_EXPORT_SYMBOL (AcpiDbgLevel)
839 ACPI_EXPORT_SYMBOL (AcpiDbgLayer)
840 ACPI_EXPORT_SYMBOL (AcpiGpeCount)