aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/dev/acpica/utstate.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/utstate.c')
-rw-r--r--sys/contrib/dev/acpica/utstate.c57
1 files changed, 35 insertions, 22 deletions
diff --git a/sys/contrib/dev/acpica/utstate.c b/sys/contrib/dev/acpica/utstate.c
index bd049ecd1757..a58257bc0bd7 100644
--- a/sys/contrib/dev/acpica/utstate.c
+++ b/sys/contrib/dev/acpica/utstate.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utstate - state object support procedures
- * $Revision: 1.2 $
+ * $Revision: 1.8 $
*
******************************************************************************/
@@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
- * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
* All rights reserved.
*
* 2. License
@@ -179,7 +179,7 @@ AcpiUtPushGenericState (
ACPI_GENERIC_STATE **ListHead,
ACPI_GENERIC_STATE *State)
{
- ACPI_FUNCTION_TRACE ("UtPushGenericState");
+ ACPI_FUNCTION_TRACE (UtPushGenericState);
/* Push the state object onto the front of the list (stack) */
@@ -210,7 +210,7 @@ AcpiUtPopGenericState (
ACPI_GENERIC_STATE *State;
- ACPI_FUNCTION_TRACE ("UtPopGenericState");
+ ACPI_FUNCTION_TRACE (UtPopGenericState);
/* Remove the state object at the head of the list (stack) */
@@ -254,7 +254,7 @@ AcpiUtCreateGenericState (
if (State)
{
/* Initialize */
- State->Common.DataType = ACPI_DESC_TYPE_STATE;
+ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE;
}
return (State);
@@ -281,7 +281,7 @@ AcpiUtCreateThreadState (
ACPI_GENERIC_STATE *State;
- ACPI_FUNCTION_TRACE ("UtCreateThreadState");
+ ACPI_FUNCTION_TRACE (UtCreateThreadState);
/* Create the generic state object */
@@ -294,9 +294,17 @@ AcpiUtCreateThreadState (
/* Init fields specific to the update struct */
- State->Common.DataType = ACPI_DESC_TYPE_STATE_THREAD;
+ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_THREAD;
State->Thread.ThreadId = AcpiOsGetThreadId ();
+ /* Check for invalid thread ID - zero is very bad, it will break things */
+
+ if (!State->Thread.ThreadId)
+ {
+ ACPI_ERROR ((AE_INFO, "Invalid zero ID from AcpiOsGetThreadId"));
+ State->Thread.ThreadId = 1;
+ }
+
return_PTR ((ACPI_THREAD_STATE *) State);
}
@@ -324,7 +332,7 @@ AcpiUtCreateUpdateState (
ACPI_GENERIC_STATE *State;
- ACPI_FUNCTION_TRACE_PTR ("UtCreateUpdateState", Object);
+ ACPI_FUNCTION_TRACE_PTR (UtCreateUpdateState, Object);
/* Create the generic state object */
@@ -337,9 +345,9 @@ AcpiUtCreateUpdateState (
/* Init fields specific to the update struct */
- State->Common.DataType = ACPI_DESC_TYPE_STATE_UPDATE;
+ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_UPDATE;
State->Update.Object = Object;
- State->Update.Value = Action;
+ State->Update.Value = Action;
return_PTR (State);
}
@@ -367,7 +375,7 @@ AcpiUtCreatePkgState (
ACPI_GENERIC_STATE *State;
- ACPI_FUNCTION_TRACE_PTR ("UtCreatePkgState", InternalObject);
+ ACPI_FUNCTION_TRACE_PTR (UtCreatePkgState, InternalObject);
/* Create the generic state object */
@@ -380,11 +388,11 @@ AcpiUtCreatePkgState (
/* Init fields specific to the update struct */
- State->Common.DataType = ACPI_DESC_TYPE_STATE_PACKAGE;
+ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_PACKAGE;
State->Pkg.SourceObject = (ACPI_OPERAND_OBJECT *) InternalObject;
- State->Pkg.DestObject = ExternalObject;
- State->Pkg.Index = Index;
- State->Pkg.NumPackages = 1;
+ State->Pkg.DestObject = ExternalObject;
+ State->Pkg.Index= Index;
+ State->Pkg.NumPackages = 1;
return_PTR (State);
}
@@ -410,7 +418,7 @@ AcpiUtCreateControlState (
ACPI_GENERIC_STATE *State;
- ACPI_FUNCTION_TRACE ("UtCreateControlState");
+ ACPI_FUNCTION_TRACE (UtCreateControlState);
/* Create the generic state object */
@@ -423,8 +431,8 @@ AcpiUtCreateControlState (
/* Init fields specific to the control struct */
- State->Common.DataType = ACPI_DESC_TYPE_STATE_CONTROL;
- State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING;
+ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_CONTROL;
+ State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING;
return_PTR (State);
}
@@ -438,8 +446,8 @@ AcpiUtCreateControlState (
*
* RETURN: None
*
- * DESCRIPTION: Put a state object back into the global state cache. The object
- * is not actually freed at this time.
+ * DESCRIPTION: Release a state object to the state cache. NULL state objects
+ * are ignored.
*
******************************************************************************/
@@ -447,10 +455,15 @@ void
AcpiUtDeleteGenericState (
ACPI_GENERIC_STATE *State)
{
- ACPI_FUNCTION_TRACE ("UtDeleteGenericState");
+ ACPI_FUNCTION_TRACE (UtDeleteGenericState);
- (void) AcpiOsReleaseObject (AcpiGbl_StateCache, State);
+ /* Ignore null state */
+
+ if (State)
+ {
+ (void) AcpiOsReleaseObject (AcpiGbl_StateCache, State);
+ }
return_VOID;
}