aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/dev/acpica/Subsystem/Common/cmutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/Subsystem/Common/cmutils.c')
-rw-r--r--sys/contrib/dev/acpica/Subsystem/Common/cmutils.c1181
1 files changed, 0 insertions, 1181 deletions
diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmutils.c b/sys/contrib/dev/acpica/Subsystem/Common/cmutils.c
deleted file mode 100644
index 123e4e1901b3..000000000000
--- a/sys/contrib/dev/acpica/Subsystem/Common/cmutils.c
+++ /dev/null
@@ -1,1181 +0,0 @@
-/*******************************************************************************
- *
- * Module Name: cmutils - common utility procedures
- * $Revision: 27 $
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * 1. Copyright Notice
- *
- * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.
- * All rights reserved.
- *
- * 2. License
- *
- * 2.1. This is your license from Intel Corp. under its intellectual property
- * rights. You may have additional license terms from the party that provided
- * you this software, covering your right to use that party's intellectual
- * property rights.
- *
- * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
- * copy of the source code appearing in this file ("Covered Code") an
- * irrevocable, perpetual, worldwide license under Intel's copyrights in the
- * base code distributed originally by Intel ("Original Intel Code") to copy,
- * make derivatives, distribute, use and display any portion of the Covered
- * Code in any form, with the right to sublicense such rights; and
- *
- * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
- * license (with the right to sublicense), under only those claims of Intel
- * patents that are infringed by the Original Intel Code, to make, use, sell,
- * offer to sell, and import the Covered Code and derivative works thereof
- * solely to the minimum extent necessary to exercise the above copyright
- * license, and in no event shall the patent license extend to any additions
- * to or modifications of the Original Intel Code. No other license or right
- * is granted directly or by implication, estoppel or otherwise;
- *
- * The above copyright and patent license is granted only if the following
- * conditions are met:
- *
- * 3. Conditions
- *
- * 3.1. Redistribution of Source with Rights to Further Distribute Source.
- * Redistribution of source code of any substantial portion of the Covered
- * Code or modification with rights to further distribute source must include
- * the above Copyright Notice, the above License, this list of Conditions,
- * and the following Disclaimer and Export Compliance provision. In addition,
- * Licensee must cause all Covered Code to which Licensee contributes to
- * contain a file documenting the changes Licensee made to create that Covered
- * Code and the date of any change. Licensee must include in that file the
- * documentation of any changes made by any predecessor Licensee. Licensee
- * must include a prominent statement that the modification is derived,
- * directly or indirectly, from Original Intel Code.
- *
- * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
- * Redistribution of source code of any substantial portion of the Covered
- * Code or modification without rights to further distribute source must
- * include the following Disclaimer and Export Compliance provision in the
- * documentation and/or other materials provided with distribution. In
- * addition, Licensee may not authorize further sublicense of source of any
- * portion of the Covered Code, and must include terms to the effect that the
- * license from Licensee to its licensee is limited to the intellectual
- * property embodied in the software Licensee provides to its licensee, and
- * not to intellectual property embodied in modifications its licensee may
- * make.
- *
- * 3.3. Redistribution of Executable. Redistribution in executable form of any
- * substantial portion of the Covered Code or modification must reproduce the
- * above Copyright Notice, and the following Disclaimer and Export Compliance
- * provision in the documentation and/or other materials provided with the
- * distribution.
- *
- * 3.4. Intel retains all right, title, and interest in and to the Original
- * Intel Code.
- *
- * 3.5. Neither the name Intel nor any other trademark owned or controlled by
- * Intel shall be used in advertising or otherwise to promote the sale, use or
- * other dealings in products derived from or relating to the Covered Code
- * without prior written authorization from Intel.
- *
- * 4. Disclaimer and Export Compliance
- *
- * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
- * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
- * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
- * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
- * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
- * PARTICULAR PURPOSE.
- *
- * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
- * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
- * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
- * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
- * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
- * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
- * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
- * LIMITED REMEDY.
- *
- * 4.3. Licensee shall not export, either directly or indirectly, any of this
- * software or system incorporating such software without first obtaining any
- * required license or other approval from the U. S. Department of Commerce or
- * any other agency or department of the United States Government. In the
- * event Licensee exports any such software from the United States or
- * re-exports any such software from a foreign destination, Licensee shall
- * ensure that the distribution and export/re-export of the software is in
- * compliance with all laws, regulations, orders, or other restrictions of the
- * U.S. Export Administration Regulations. Licensee agrees that neither it nor
- * any of its subsidiaries will export/re-export any technical data, process,
- * software, or service, directly or indirectly, to any country for which the
- * United States government or any agency thereof requires an export license,
- * other governmental approval, or letter of assurance, without first obtaining
- * such license, approval or letter.
- *
- *****************************************************************************/
-
-
-#define __CMUTILS_C__
-
-#include "acpi.h"
-#include "acevents.h"
-#include "achware.h"
-#include "acnamesp.h"
-#include "acinterp.h"
-#include "amlcode.h"
-#include "acdebug.h"
-
-
-#define _COMPONENT MISCELLANEOUS
- MODULE_NAME ("cmutils")
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmValidAcpiName
- *
- * PARAMETERS: Character - The character to be examined
- *
- * RETURN: 1 if Character may appear in a name, else 0
- *
- * DESCRIPTION: Check for a valid ACPI name. Each character must be one of:
- * 1) Upper case alpha
- * 2) numeric
- * 3) underscore
- *
- ******************************************************************************/
-
-BOOLEAN
-AcpiCmValidAcpiName (
- UINT32 Name)
-{
- NATIVE_CHAR *NamePtr = (NATIVE_CHAR *) &Name;
- UINT32 i;
-
-
- for (i = 0; i < ACPI_NAME_SIZE; i++)
- {
- if (!((NamePtr[i] == '_') ||
- (NamePtr[i] >= 'A' && NamePtr[i] <= 'Z') ||
- (NamePtr[i] >= '0' && NamePtr[i] <= '9')))
- {
- return (FALSE);
- }
- }
-
-
- return (TRUE);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmValidAcpiCharacter
- *
- * PARAMETERS: Character - The character to be examined
- *
- * RETURN: 1 if Character may appear in a name, else 0
- *
- * DESCRIPTION: Check for a printable character
- *
- ******************************************************************************/
-
-BOOLEAN
-AcpiCmValidAcpiCharacter (
- NATIVE_CHAR Character)
-{
-
- return ((BOOLEAN) ((Character == '_') ||
- (Character >= 'A' && Character <= 'Z') ||
- (Character >= '0' && Character <= '9')));
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmMutexInitialize
- *
- * PARAMETERS: None.
- *
- * RETURN: Status
- *
- * DESCRIPTION: Create the system mutex objects.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmMutexInitialize (
- void)
-{
- UINT32 i;
- ACPI_STATUS Status;
-
-
- FUNCTION_TRACE ("CmMutexInitialize");
-
-
- /*
- * Create each of the predefined mutex objects
- */
- for (i = 0; i < NUM_MTX; i++)
- {
- Status = AcpiCmCreateMutex (i);
- if (ACPI_FAILURE (Status))
- {
- return_ACPI_STATUS (Status);
- }
- }
-
- return_ACPI_STATUS (AE_OK);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmMutexTerminate
- *
- * PARAMETERS: None.
- *
- * RETURN: None.
- *
- * DESCRIPTION: Delete all of the system mutex objects.
- *
- ******************************************************************************/
-
-void
-AcpiCmMutexTerminate (
- void)
-{
- UINT32 i;
-
-
- FUNCTION_TRACE ("CmMutexTerminate");
-
-
- /*
- * Delete each predefined mutex object
- */
- for (i = 0; i < NUM_MTX; i++)
- {
- AcpiCmDeleteMutex (i);
- }
-
- return_VOID;
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmCreateMutex
- *
- * PARAMETERS: MutexID - ID of the mutex to be created
- *
- * RETURN: Status
- *
- * DESCRIPTION: Create a mutex object.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmCreateMutex (
- ACPI_MUTEX_HANDLE MutexId)
-{
- ACPI_STATUS Status = AE_OK;
-
-
- FUNCTION_TRACE_U32 ("CmCreateMutex", MutexId);
-
-
- if (MutexId > MAX_MTX)
- {
- return_ACPI_STATUS (AE_BAD_PARAMETER);
- }
-
-
- if (!AcpiGbl_AcpiMutexInfo[MutexId].Mutex)
- {
- Status = AcpiOsCreateSemaphore (1, 1,
- &AcpiGbl_AcpiMutexInfo[MutexId].Mutex);
- AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE;
- AcpiGbl_AcpiMutexInfo[MutexId].UseCount = 0;
- }
-
- return_ACPI_STATUS (Status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmDeleteMutex
- *
- * PARAMETERS: MutexID - ID of the mutex to be deleted
- *
- * RETURN: Status
- *
- * DESCRIPTION: Delete a mutex object.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmDeleteMutex (
- ACPI_MUTEX_HANDLE MutexId)
-{
- ACPI_STATUS Status;
-
-
- FUNCTION_TRACE_U32 ("CmDeleteMutex", MutexId);
-
-
- if (MutexId > MAX_MTX)
- {
- return_ACPI_STATUS (AE_BAD_PARAMETER);
- }
-
-
- Status = AcpiOsDeleteSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex);
-
- AcpiGbl_AcpiMutexInfo[MutexId].Mutex = NULL;
- AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE;
-
- return_ACPI_STATUS (Status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmAcquireMutex
- *
- * PARAMETERS: MutexID - ID of the mutex to be acquired
- *
- * RETURN: Status
- *
- * DESCRIPTION: Acquire a mutex object.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmAcquireMutex (
- ACPI_MUTEX_HANDLE MutexId)
-{
- ACPI_STATUS Status;
-
-
- DEBUG_PRINT (TRACE_MUTEX,
- ("Acquiring Mutex [%s]\n", AcpiCmGetMutexName (MutexId)));
-
- if (MutexId > MAX_MTX)
- {
- return (AE_BAD_PARAMETER);
- }
-
-
- Status = AcpiOsWaitSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex,
- 1, WAIT_FOREVER);
-
- DEBUG_PRINT (TRACE_MUTEX, ("Acquired Mutex [%s] Status %s\n",
- AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status)));
-
- if (ACPI_SUCCESS (Status))
- {
- AcpiGbl_AcpiMutexInfo[MutexId].Locked = TRUE;
- AcpiGbl_AcpiMutexInfo[MutexId].UseCount++;
- }
-
- return (Status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmReleaseMutex
- *
- * PARAMETERS: MutexID - ID of the mutex to be released
- *
- * RETURN: Status
- *
- * DESCRIPTION: Release a mutex object.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmReleaseMutex (
- ACPI_MUTEX_HANDLE MutexId)
-{
- ACPI_STATUS Status;
-
-
- DEBUG_PRINT (TRACE_MUTEX,
- ("Releasing Mutex [%s]\n", AcpiCmGetMutexName (MutexId)));
-
- if (MutexId > MAX_MTX)
- {
- return (AE_BAD_PARAMETER);
- }
-
-
- AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE; /* Mark before unlocking */
-
- Status = AcpiOsSignalSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex, 1);
-
- if (ACPI_FAILURE (Status))
- {
- DEBUG_PRINT (ACPI_ERROR, ("Error Releasing Mutex [%s], %s\n",
- AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status)));
- }
- else
- {
- DEBUG_PRINT (TRACE_MUTEX, ("Released Mutex [%s], %s\n",
- AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status)));
- }
-
- return (Status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmCreateUpdateStateAndPush
- *
- * PARAMETERS: *Object - Object to be added to the new state
- * Action - Increment/Decrement
- * StateList - List the state will be added to
- *
- * RETURN: None
- *
- * DESCRIPTION: Create a new state and push it
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmCreateUpdateStateAndPush (
- ACPI_OPERAND_OBJECT *Object,
- UINT16 Action,
- ACPI_GENERIC_STATE **StateList)
-{
- ACPI_GENERIC_STATE *State;
-
-
- /* Ignore null objects; these are expected */
-
- if (!Object)
- {
- return (AE_OK);
- }
-
- State = AcpiCmCreateUpdateState (Object, Action);
- if (!State)
- {
- return (AE_NO_MEMORY);
- }
-
-
- AcpiCmPushGenericState (StateList, State);
- return (AE_OK);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmCreatePkgStateAndPush
- *
- * PARAMETERS: *Object - Object to be added to the new state
- * Action - Increment/Decrement
- * StateList - List the state will be added to
- *
- * RETURN: None
- *
- * DESCRIPTION: Create a new state and push it
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmCreatePkgStateAndPush (
- void *InternalObject,
- void *ExternalObject,
- UINT16 Index,
- ACPI_GENERIC_STATE **StateList)
-{
- ACPI_GENERIC_STATE *State;
-
-
-
- State = AcpiCmCreatePkgState (InternalObject, ExternalObject, Index);
- if (!State)
- {
- return (AE_NO_MEMORY);
- }
-
-
- AcpiCmPushGenericState (StateList, State);
- return (AE_OK);
-}
-
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmPushGenericState
- *
- * PARAMETERS: ListHead - Head of the state stack
- * State - State object to push
- *
- * RETURN: Status
- *
- * DESCRIPTION: Push a state object onto a state stack
- *
- ******************************************************************************/
-
-void
-AcpiCmPushGenericState (
- ACPI_GENERIC_STATE **ListHead,
- ACPI_GENERIC_STATE *State)
-{
- FUNCTION_TRACE ("CmPushGenericState");
-
- /* Push the state object onto the front of the list (stack) */
-
- State->Common.Next = *ListHead;
- *ListHead = State;
-
- return_VOID;
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmPopGenericState
- *
- * PARAMETERS: ListHead - Head of the state stack
- *
- * RETURN: Status
- *
- * DESCRIPTION: Pop a state object from a state stack
- *
- ******************************************************************************/
-
-ACPI_GENERIC_STATE *
-AcpiCmPopGenericState (
- ACPI_GENERIC_STATE **ListHead)
-{
- ACPI_GENERIC_STATE *State;
-
-
- FUNCTION_TRACE ("DsPopGenericState");
-
-
- /* Remove the state object at the head of the list (stack) */
-
- State = *ListHead;
- if (State)
- {
- /* Update the list head */
-
- *ListHead = State->Common.Next;
- }
-
- return_PTR (State);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmCreateGenericState
- *
- * PARAMETERS: None
- *
- * RETURN: Status
- *
- * DESCRIPTION: Create a generic state object. Attempt to obtain one from
- * the global state cache; If none available, create a new one.
- *
- ******************************************************************************/
-
-ACPI_GENERIC_STATE *
-AcpiCmCreateGenericState (void)
-{
- ACPI_GENERIC_STATE *State;
-
-
- AcpiCmAcquireMutex (ACPI_MTX_CACHES);
-
- AcpiGbl_StateCacheRequests++;
-
- /* Check the cache first */
-
- if (AcpiGbl_GenericStateCache)
- {
- /* There is an object available, use it */
-
- State = AcpiGbl_GenericStateCache;
- AcpiGbl_GenericStateCache = State->Common.Next;
- State->Common.Next = NULL;
-
- AcpiGbl_StateCacheHits++;
- AcpiGbl_GenericStateCacheDepth--;
-
- AcpiCmReleaseMutex (ACPI_MTX_CACHES);
-
- DEBUG_PRINT (TRACE_EXEC, ("CreateGenState: State %p from cache\n", State));
- }
-
- else
- {
- /* The cache is empty, create a new object */
-
- AcpiCmReleaseMutex (ACPI_MTX_CACHES);
-
- State = AcpiCmCallocate (sizeof (ACPI_GENERIC_STATE));
- }
-
- /* Initialize */
-
- if (State)
- {
- /* Always zero out the object before init */
-
- MEMSET (State, 0, sizeof (ACPI_GENERIC_STATE));
-
- State->Common.DataType = ACPI_DESC_TYPE_STATE;
- }
-
- return (State);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmCreateUpdateState
- *
- * PARAMETERS: Object - Initial Object to be installed in the
- * state
- * Action - Update action to be performed
- *
- * RETURN: Status
- *
- * DESCRIPTION: Create an "Update State" - a flavor of the generic state used
- * to update reference counts and delete complex objects such
- * as packages.
- *
- ******************************************************************************/
-
-ACPI_GENERIC_STATE *
-AcpiCmCreateUpdateState (
- ACPI_OPERAND_OBJECT *Object,
- UINT16 Action)
-{
- ACPI_GENERIC_STATE *State;
-
-
- FUNCTION_TRACE_PTR ("CmCreateUpdateState", Object);
-
-
- /* Create the generic state object */
-
- State = AcpiCmCreateGenericState ();
- if (!State)
- {
- return (NULL);
- }
-
- /* Init fields specific to the update struct */
-
- State->Update.Object = Object;
- State->Update.Value = Action;
-
- return_PTR (State);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmCreatePkgState
- *
- * PARAMETERS: Object - Initial Object to be installed in the
- * state
- * Action - Update action to be performed
- *
- * RETURN: Status
- *
- * DESCRIPTION: Create an "Update State" - a flavor of the generic state used
- * to update reference counts and delete complex objects such
- * as packages.
- *
- ******************************************************************************/
-
-ACPI_GENERIC_STATE *
-AcpiCmCreatePkgState (
- void *InternalObject,
- void *ExternalObject,
- UINT16 Index)
-{
- ACPI_GENERIC_STATE *State;
-
-
- FUNCTION_TRACE_PTR ("CmCreatePkgState", InternalObject);
-
-
- /* Create the generic state object */
-
- State = AcpiCmCreateGenericState ();
- if (!State)
- {
- return (NULL);
- }
-
- /* Init fields specific to the update struct */
-
- State->Pkg.SourceObject = (ACPI_OPERAND_OBJECT *) InternalObject;
- State->Pkg.DestObject = ExternalObject;
- State->Pkg.Index = Index;
- State->Pkg.NumPackages = 1;
-
- return_PTR (State);
-}
-
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmCreateControlState
- *
- * PARAMETERS: None
- *
- * RETURN: Status
- *
- * DESCRIPTION: Create a "Control State" - a flavor of the generic state used
- * to support nested IF/WHILE constructs in the AML.
- *
- ******************************************************************************/
-
-ACPI_GENERIC_STATE *
-AcpiCmCreateControlState (
- void)
-{
- ACPI_GENERIC_STATE *State;
-
-
- FUNCTION_TRACE ("CmCreateControlState");
-
- /* Create the generic state object */
-
- State = AcpiCmCreateGenericState ();
- if (!State)
- {
- return (NULL);
- }
-
-
- /* Init fields specific to the control struct */
-
- State->Common.State = CONTROL_CONDITIONAL_EXECUTING;
-
- return_PTR (State);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmDeleteGenericState
- *
- * PARAMETERS: State - The state object to be deleted
- *
- * RETURN: Status
- *
- * DESCRIPTION: Put a state object back into the global state cache. The object
- * is not actually freed at this time.
- *
- ******************************************************************************/
-
-void
-AcpiCmDeleteGenericState (
- ACPI_GENERIC_STATE *State)
-{
- FUNCTION_TRACE ("CmDeleteGenericState");
-
-
- /* If cache is full, just free this state object */
-
- if (AcpiGbl_GenericStateCacheDepth >= MAX_STATE_CACHE_DEPTH)
- {
- AcpiCmFree (State);
- }
-
- /* Otherwise put this object back into the cache */
-
- else
- {
- AcpiCmAcquireMutex (ACPI_MTX_CACHES);
-
- /* Clear the state */
-
- MEMSET (State, 0, sizeof (ACPI_GENERIC_STATE));
- State->Common.DataType = ACPI_DESC_TYPE_STATE;
-
- /* Put the object at the head of the global cache list */
-
- State->Common.Next = AcpiGbl_GenericStateCache;
- AcpiGbl_GenericStateCache = State;
- AcpiGbl_GenericStateCacheDepth++;
-
-
- AcpiCmReleaseMutex (ACPI_MTX_CACHES);
- }
- return_VOID;
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmDeleteGenericStateCache
- *
- * PARAMETERS: None
- *
- * RETURN: Status
- *
- * DESCRIPTION: Purge the global state object cache. Used during subsystem
- * termination.
- *
- ******************************************************************************/
-
-void
-AcpiCmDeleteGenericStateCache (
- void)
-{
- ACPI_GENERIC_STATE *Next;
-
-
- FUNCTION_TRACE ("CmDeleteGenericStateCache");
-
-
- /* Traverse the global cache list */
-
- while (AcpiGbl_GenericStateCache)
- {
- /* Delete one cached state object */
-
- Next = AcpiGbl_GenericStateCache->Common.Next;
- AcpiCmFree (AcpiGbl_GenericStateCache);
- AcpiGbl_GenericStateCache = Next;
- AcpiGbl_GenericStateCacheDepth--;
- }
-
- return_VOID;
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmResolvePackageReferences
- *
- * PARAMETERS: ObjDesc - The Package object on which to resolve refs
- *
- * RETURN: Status
- *
- * DESCRIPTION: Walk through a package and turn internal references into values
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmResolvePackageReferences (
- ACPI_OPERAND_OBJECT *ObjDesc)
-{
- UINT32 Count;
- ACPI_OPERAND_OBJECT *SubObject;
-
-
- FUNCTION_TRACE ("AcpiCmResolvePackageReferences");
-
-
- if (ObjDesc->Common.Type != ACPI_TYPE_PACKAGE)
- {
- /* The object must be a package */
-
- REPORT_ERROR (("Must resolve Package Refs on a Package\n"));
- return_ACPI_STATUS(AE_ERROR);
- }
-
- /*
- * TBD: what about nested packages? */
-
- for (Count = 0; Count < ObjDesc->Package.Count; Count++)
- {
- SubObject = ObjDesc->Package.Elements[Count];
-
- if (SubObject->Common.Type == INTERNAL_TYPE_REFERENCE)
- {
- if (SubObject->Reference.OpCode == AML_ZERO_OP)
- {
- SubObject->Common.Type = ACPI_TYPE_INTEGER;
- SubObject->Integer.Value = 0;
- }
- else if (SubObject->Reference.OpCode == AML_ONE_OP)
- {
- SubObject->Common.Type = ACPI_TYPE_INTEGER;
- SubObject->Integer.Value = 1;
- }
- else if (SubObject->Reference.OpCode == AML_ONES_OP)
- {
- SubObject->Common.Type = ACPI_TYPE_INTEGER;
- SubObject->Integer.Value = ACPI_INTEGER_MAX;
- }
- }
- }
-
- return_ACPI_STATUS(AE_OK);
-}
-
-#ifdef ACPI_DEBUG
-
-/******************************************************************************
- *
- * FUNCTION: AcpiCmDisplayInitPathname
- *
- * PARAMETERS: ObjHandle - Handle whose pathname will be displayed
- * Path - Additional path string to be appended
- *
- * RETURN: ACPI_STATUS
- *
- * DESCRIPTION: Display full pathnbame of an object, DEBUG ONLY
- *
- *****************************************************************************/
-
-void
-AcpiCmDisplayInitPathname (
- ACPI_HANDLE ObjHandle,
- char *Path)
-{
- ACPI_STATUS Status;
- UINT32 Length = 128;
- char Buffer[128];
-
-
- Status = AcpiNsHandleToPathname (ObjHandle, &Length, Buffer);
- if (ACPI_SUCCESS (Status))
- {
- if (Path)
- {
- DEBUG_PRINT (TRACE_INIT, ("%s.%s\n", Buffer, Path))
- }
- else
- {
- DEBUG_PRINT (TRACE_INIT, ("%s\n", Buffer))
- }
- }
-}
-#endif
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiCmWalkPackageTree
- *
- * PARAMETERS: ObjDesc - The Package object on which to resolve refs
- *
- * RETURN: Status
- *
- * DESCRIPTION: Walk through a package
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiCmWalkPackageTree (
- ACPI_OPERAND_OBJECT *SourceObject,
- void *TargetObject,
- ACPI_PKG_CALLBACK WalkCallback,
- void *Context)
-{
- ACPI_STATUS Status = AE_OK;
- ACPI_GENERIC_STATE *StateList = NULL;
- ACPI_GENERIC_STATE *State;
- UINT32 ThisIndex;
- ACPI_OPERAND_OBJECT *ThisSourceObj;
-
-
- FUNCTION_TRACE ("AcpiCmWalkPackageTree");
-
-
- State = AcpiCmCreatePkgState (SourceObject, TargetObject, 0);
- if (!State)
- {
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- while (State)
- {
- ThisIndex = State->Pkg.Index;
- ThisSourceObj = (ACPI_OPERAND_OBJECT *)
- State->Pkg.SourceObject->Package.Elements[ThisIndex];
-
- /*
- * Check for
- * 1) An uninitialized package element. It is completely
- * legal to declare a package and leave it uninitialized
- * 2) Not an internal object - can be a namespace node instead
- * 3) Any type other than a package. Packages are handled in else case below.
- */
- if ((!ThisSourceObj) ||
- (!VALID_DESCRIPTOR_TYPE (
- ThisSourceObj, ACPI_DESC_TYPE_INTERNAL)) ||
- (!IS_THIS_OBJECT_TYPE (
- ThisSourceObj, ACPI_TYPE_PACKAGE)))
- {
-
- Status = WalkCallback (0, ThisSourceObj, State, Context);
- if (ACPI_FAILURE (Status))
- {
- /* TBD: must delete package created up to this point */
-
- return_ACPI_STATUS (Status);
- }
-
- State->Pkg.Index++;
- while (State->Pkg.Index >= State->Pkg.SourceObject->Package.Count)
- {
- /*
- * We've handled all of the objects at this level, This means
- * that we have just completed a package. That package may
- * have contained one or more packages itself.
- *
- * Delete this state and pop the previous state (package).
- */
- AcpiCmDeleteGenericState (State);
- State = AcpiCmPopGenericState (&StateList);
-
-
- /* Finished when there are no more states */
-
- if (!State)
- {
- /*
- * We have handled all of the objects in the top level
- * package just add the length of the package objects
- * and exit
- */
- return_ACPI_STATUS (AE_OK);
- }
-
- /*
- * Go back up a level and move the index past the just
- * completed package object.
- */
- State->Pkg.Index++;
- }
- }
-
- else
- {
- /* This is a sub-object of type package */
-
- Status = WalkCallback (1, ThisSourceObj, State, Context);
- if (ACPI_FAILURE (Status))
- {
- /* TBD: must delete package created up to this point */
-
- return_ACPI_STATUS (Status);
- }
-
-
- /*
- * The callback above returned a new target package object.
- */
-
- /*
- * Push the current state and create a new one
- */
- AcpiCmPushGenericState (&StateList, State);
- State = AcpiCmCreatePkgState (ThisSourceObj, State->Pkg.ThisTargetObj, 0);
- if (!State)
- {
- /* TBD: must delete package created up to this point */
-
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
- }
- }
-
- /* We should never get here */
-
- return (AE_AML_INTERNAL);
-
-}
-
-
-
-/*******************************************************************************
- *
- * FUNCTION: _ReportError
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * ComponentId - Caller's component ID (for error output)
- * Message - Error message to use on failure
- *
- * RETURN: None
- *
- * DESCRIPTION: Print error message
- *
- ******************************************************************************/
-
-void
-_ReportError (
- NATIVE_CHAR *ModuleName,
- UINT32 LineNumber,
- UINT32 ComponentId)
-{
-
-
- AcpiOsPrintf ("%8s-%04d: *** Error: ", ModuleName, LineNumber);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: _ReportWarning
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * ComponentId - Caller's component ID (for error output)
- * Message - Error message to use on failure
- *
- * RETURN: None
- *
- * DESCRIPTION: Print warning message
- *
- ******************************************************************************/
-
-void
-_ReportWarning (
- NATIVE_CHAR *ModuleName,
- UINT32 LineNumber,
- UINT32 ComponentId)
-{
-
- AcpiOsPrintf ("%8s-%04d: *** Warning: ", ModuleName, LineNumber);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: _ReportInfo
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * ComponentId - Caller's component ID (for error output)
- * Message - Error message to use on failure
- *
- * RETURN: None
- *
- * DESCRIPTION: Print information message
- *
- ******************************************************************************/
-
-void
-_ReportInfo (
- NATIVE_CHAR *ModuleName,
- UINT32 LineNumber,
- UINT32 ComponentId)
-{
-
- AcpiOsPrintf ("%8s-%04d: *** Info: ", ModuleName, LineNumber);
-}
-
-