diff options
author | njl <njl@FreeBSD.org> | 2004-05-25 02:34:44 +0000 |
---|---|---|
committer | njl <njl@FreeBSD.org> | 2004-05-25 02:34:44 +0000 |
commit | 7dda61e34c56846a7ad4da7feef2a91aec7b9c02 (patch) | |
tree | 29dd9bbba1b290e1293c9cd9f23c53bf025abfa3 /sys/contrib/dev/acpica/nseval.c | |
parent | dddb7af88f13c7148125c30a85f44b025270f810 (diff) | |
download | FreeBSD-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.c | 94 |
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))); } } |