summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/nseval.c
diff options
context:
space:
mode:
authornjl <njl@FreeBSD.org>2004-05-25 02:34:44 +0000
committernjl <njl@FreeBSD.org>2004-05-25 02:34:44 +0000
commit7dda61e34c56846a7ad4da7feef2a91aec7b9c02 (patch)
tree29dd9bbba1b290e1293c9cd9f23c53bf025abfa3 /sys/contrib/dev/acpica/nseval.c
parentdddb7af88f13c7148125c30a85f44b025270f810 (diff)
downloadFreeBSD-src-7dda61e34c56846a7ad4da7feef2a91aec7b9c02.zip
FreeBSD-src-7dda61e34c56846a7ad4da7feef2a91aec7b9c02.tar.gz
Vendor import of Intel ACPI-CA 20040514.
Diffstat (limited to 'sys/contrib/dev/acpica/nseval.c')
-rw-r--r--sys/contrib/dev/acpica/nseval.c94
1 files changed, 33 insertions, 61 deletions
diff --git a/sys/contrib/dev/acpica/nseval.c b/sys/contrib/dev/acpica/nseval.c
index 688f92b..93cf067 100644
--- a/sys/contrib/dev/acpica/nseval.c
+++ b/sys/contrib/dev/acpica/nseval.c
@@ -2,7 +2,7 @@
*
* Module Name: nseval - Object evaluation interfaces -- includes control
* method lookup and execution.
- * $Revision: 125 $
+ * $Revision: 127 $
*
******************************************************************************/
@@ -152,13 +152,10 @@
ACPI_STATUS
AcpiNsEvaluateRelative (
- ACPI_NAMESPACE_NODE *Handle,
char *Pathname,
- ACPI_OPERAND_OBJECT **Params,
- ACPI_OPERAND_OBJECT **ReturnObject)
+ ACPI_PARAMETER_INFO *Info)
{
ACPI_STATUS Status;
- ACPI_NAMESPACE_NODE *PrefixNode;
ACPI_NAMESPACE_NODE *Node = NULL;
ACPI_GENERIC_STATE *ScopeInfo;
char *InternalPath = NULL;
@@ -170,7 +167,7 @@ AcpiNsEvaluateRelative (
/*
* Must have a valid object handle
*/
- if (!Handle)
+ if (!Info || !Info->Node)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
@@ -197,8 +194,8 @@ AcpiNsEvaluateRelative (
goto Cleanup;
}
- PrefixNode = AcpiNsMapHandleToNode (Handle);
- if (!PrefixNode)
+ Info->Node = AcpiNsMapHandleToNode (Info->Node);
+ if (!Info->Node)
{
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
Status = AE_BAD_PARAMETER;
@@ -207,7 +204,7 @@ AcpiNsEvaluateRelative (
/* Lookup the name in the namespace */
- ScopeInfo->Scope.Node = PrefixNode;
+ ScopeInfo->Scope.Node = Info->Node;
Status = AcpiNsLookup (ScopeInfo, InternalPath, ACPI_TYPE_ANY,
ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, NULL,
&Node);
@@ -228,7 +225,8 @@ AcpiNsEvaluateRelative (
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%s [%p] Value %p\n",
Pathname, Node, AcpiNsGetAttachedObject (Node)));
- Status = AcpiNsEvaluateByHandle (Node, Params, ReturnObject);
+ Info->Node = Node;
+ Status = AcpiNsEvaluateByHandle (Info);
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "*** Completed eval of object %s ***\n",
Pathname));
@@ -247,6 +245,7 @@ Cleanup1:
* FUNCTION: AcpiNsEvaluateByName
*
* PARAMETERS: Pathname - Fully qualified pathname to the object
+ * Info - Contains:
* ReturnObject - Where to put method's return value (if
* any). If NULL, no value is returned.
* Params - List of parameters to pass to the method,
@@ -265,11 +264,9 @@ Cleanup1:
ACPI_STATUS
AcpiNsEvaluateByName (
char *Pathname,
- ACPI_OPERAND_OBJECT **Params,
- ACPI_OPERAND_OBJECT **ReturnObject)
+ ACPI_PARAMETER_INFO *Info)
{
ACPI_STATUS Status;
- ACPI_NAMESPACE_NODE *Node = NULL;
char *InternalPath = NULL;
@@ -294,7 +291,7 @@ AcpiNsEvaluateByName (
Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY,
ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, NULL,
- &Node);
+ &Info->Node);
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
@@ -310,9 +307,9 @@ AcpiNsEvaluateByName (
* to evaluate it.
*/
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%s [%p] Value %p\n",
- Pathname, Node, AcpiNsGetAttachedObject (Node)));
+ Pathname, Info->Node, AcpiNsGetAttachedObject (Info->Node)));
- Status = AcpiNsEvaluateByHandle (Node, Params, ReturnObject);
+ Status = AcpiNsEvaluateByHandle (Info);
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "*** Completed eval of object %s ***\n",
Pathname));
@@ -339,6 +336,7 @@ Cleanup:
* Params - List of parameters to pass to the method,
* terminated by NULL. Params itself may be
* NULL if no parameters are being passed.
+ * ParamType - Type of Parameter list
* ReturnObject - Where to put method's return value (if
* any). If NULL, no value is returned.
*
@@ -352,13 +350,9 @@ Cleanup:
ACPI_STATUS
AcpiNsEvaluateByHandle (
- ACPI_NAMESPACE_NODE *Handle,
- ACPI_OPERAND_OBJECT **Params,
- ACPI_OPERAND_OBJECT **ReturnObject)
+ ACPI_PARAMETER_INFO *Info)
{
- ACPI_NAMESPACE_NODE *Node;
ACPI_STATUS Status;
- ACPI_OPERAND_OBJECT *LocalReturnObject;
ACPI_FUNCTION_TRACE ("NsEvaluateByHandle");
@@ -373,17 +367,14 @@ AcpiNsEvaluateByHandle (
/* Parameter Validation */
- if (!Handle)
+ if (!Info)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
- if (ReturnObject)
- {
- /* Initialize the return value to an invalid object */
+ /* Initialize the return value to an invalid object */
- *ReturnObject = NULL;
- }
+ Info->ReturnObject = NULL;
/* Get the prefix handle and Node */
@@ -393,8 +384,8 @@ AcpiNsEvaluateByHandle (
return_ACPI_STATUS (Status);
}
- Node = AcpiNsMapHandleToNode (Handle);
- if (!Node)
+ Info->Node = AcpiNsMapHandleToNode (Info->Node);
+ if (!Info->Node)
{
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
return_ACPI_STATUS (AE_BAD_PARAMETER);
@@ -405,9 +396,9 @@ AcpiNsEvaluateByHandle (
* so that proper scoping context will be established
* before execution.
*/
- if (AcpiNsGetType (Node) == ACPI_TYPE_LOCAL_METHOD_ALIAS)
+ if (AcpiNsGetType (Info->Node) == ACPI_TYPE_LOCAL_METHOD_ALIAS)
{
- Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object);
+ Info->Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Info->Node->Object);
}
/*
@@ -419,13 +410,12 @@ AcpiNsEvaluateByHandle (
* In both cases, the namespace is unlocked by the
* AcpiNs* procedure
*/
- if (AcpiNsGetType (Node) == ACPI_TYPE_METHOD)
+ if (AcpiNsGetType (Info->Node) == ACPI_TYPE_METHOD)
{
/*
* Case 1) We have an actual control method to execute
*/
- Status = AcpiNsExecuteControlMethod (Node, Params,
- &LocalReturnObject);
+ Status = AcpiNsExecuteControlMethod (Info);
}
else
{
@@ -433,7 +423,7 @@ AcpiNsEvaluateByHandle (
* Case 2) Object is NOT a method, just return its
* current value
*/
- Status = AcpiNsGetObjectValue (Node, &LocalReturnObject);
+ Status = AcpiNsGetObjectValue (Info);
}
/*
@@ -442,21 +432,6 @@ AcpiNsEvaluateByHandle (
*/
if (Status == AE_CTRL_RETURN_VALUE)
{
- /*
- * If the Method returned a value and the caller
- * provided a place to store a returned value, Copy
- * the returned value to the object descriptor provided
- * by the caller.
- */
- if (ReturnObject)
- {
- /*
- * Valid return object, copy the pointer to
- * the returned object
- */
- *ReturnObject = LocalReturnObject;
- }
-
/* Map AE_CTRL_RETURN_VALUE to AE_OK, we are done with it */
Status = AE_OK;
@@ -491,9 +466,7 @@ AcpiNsEvaluateByHandle (
ACPI_STATUS
AcpiNsExecuteControlMethod (
- ACPI_NAMESPACE_NODE *MethodNode,
- ACPI_OPERAND_OBJECT **Params,
- ACPI_OPERAND_OBJECT **ReturnObjDesc)
+ ACPI_PARAMETER_INFO *Info)
{
ACPI_STATUS Status;
ACPI_OPERAND_OBJECT *ObjDesc;
@@ -504,7 +477,7 @@ AcpiNsExecuteControlMethod (
/* Verify that there is a method associated with this object */
- ObjDesc = AcpiNsGetAttachedObject (MethodNode);
+ ObjDesc = AcpiNsGetAttachedObject (Info->Node);
if (!ObjDesc)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No attached method object\n"));
@@ -513,7 +486,7 @@ AcpiNsExecuteControlMethod (
return_ACPI_STATUS (AE_NULL_OBJECT);
}
- ACPI_DUMP_PATHNAME (MethodNode, "Execute Method:",
+ ACPI_DUMP_PATHNAME (Info->Node, "Execute Method:",
ACPI_LV_INFO, _COMPONENT);
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Method at AML address %p Length %X\n",
@@ -542,7 +515,7 @@ AcpiNsExecuteControlMethod (
return_ACPI_STATUS (Status);
}
- Status = AcpiPsxExecute (MethodNode, Params, ReturnObjDesc);
+ Status = AcpiPsxExecute (Info);
AcpiExExitInterpreter ();
return_ACPI_STATUS (Status);
@@ -566,11 +539,10 @@ AcpiNsExecuteControlMethod (
ACPI_STATUS
AcpiNsGetObjectValue (
- ACPI_NAMESPACE_NODE *Node,
- ACPI_OPERAND_OBJECT **ReturnObjDesc)
+ ACPI_PARAMETER_INFO *Info)
{
ACPI_STATUS Status = AE_OK;
- ACPI_NAMESPACE_NODE *ResolvedNode = Node;
+ ACPI_NAMESPACE_NODE *ResolvedNode = Info->Node;
ACPI_FUNCTION_TRACE ("NsGetObjectValue");
@@ -619,9 +591,9 @@ AcpiNsGetObjectValue (
if (ACPI_SUCCESS (Status))
{
Status = AE_CTRL_RETURN_VALUE;
- *ReturnObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ResolvedNode);
+ Info->ReturnObject = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ResolvedNode);
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Returning object %p [%s]\n",
- *ReturnObjDesc, AcpiUtGetObjectTypeName (*ReturnObjDesc)));
+ Info->ReturnObject, AcpiUtGetObjectTypeName (Info->ReturnObject)));
}
}
OpenPOWER on IntegriCloud