patch-2.4.0-test9 linux/drivers/acpi/namespace/nsobject.c

Next file: linux/drivers/acpi/namespace/nssearch.c
Previous file: linux/drivers/acpi/namespace/nsnames.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test8/linux/drivers/acpi/namespace/nsobject.c linux/drivers/acpi/namespace/nsobject.c
@@ -1,10 +1,10 @@
-
-/******************************************************************************
+/*******************************************************************************
  *
  * Module Name: nsobject - Utilities for objects attached to namespace
- *                          table entries
+ *                         table entries
+ *              $Revision: 44 $
  *
- *****************************************************************************/
+ ******************************************************************************/
 
 /*
  *  Copyright (C) 2000 R. Byron Moore
@@ -27,20 +27,20 @@
 
 #include "acpi.h"
 #include "amlcode.h"
-#include "namesp.h"
-#include "interp.h"
-#include "tables.h"
+#include "acnamesp.h"
+#include "acinterp.h"
+#include "actables.h"
 
 
 #define _COMPONENT          NAMESPACE
-	 MODULE_NAME         ("nsobject");
+	 MODULE_NAME         ("nsobject")
 
 
-/****************************************************************************
+/*******************************************************************************
  *
  * FUNCTION:    Acpi_ns_attach_object
  *
- * PARAMETERS:  Handle              - Handle of nte
+ * PARAMETERS:  Node            - Parent Node
  *              Object              - Object to be attached
  *              Type                - Type of object, or ACPI_TYPE_ANY if not
  *                                      known
@@ -51,17 +51,16 @@
  *
  * MUTEX:       Assumes namespace is locked
  *
- ***************************************************************************/
+ ******************************************************************************/
 
 ACPI_STATUS
 acpi_ns_attach_object (
-	ACPI_HANDLE             handle,
-	ACPI_HANDLE             object,
+	ACPI_NAMESPACE_NODE     *node,
+	ACPI_OPERAND_OBJECT     *object,
 	OBJECT_TYPE_INTERNAL    type)
 {
-	ACPI_NAMED_OBJECT       *this_entry = (ACPI_NAMED_OBJECT*) handle;
-	ACPI_OBJECT_INTERNAL    *obj_desc;
-	ACPI_OBJECT_INTERNAL    *previous_obj_desc;
+	ACPI_OPERAND_OBJECT     *obj_desc;
+	ACPI_OPERAND_OBJECT     *previous_obj_desc;
 	OBJECT_TYPE_INTERNAL    obj_type = ACPI_TYPE_ANY;
 	u8                      flags;
 	u16                     opcode;
@@ -71,17 +70,17 @@
 	 * Parameter validation
 	 */
 
-	if (!acpi_gbl_root_object->child_table) {
+	if (!acpi_gbl_root_node) {
 		/* Name space not initialized  */
 
 		REPORT_ERROR ("Ns_attach_object: Name space not initialized");
 		return (AE_NO_NAMESPACE);
 	}
 
-	if (!handle) {
+	if (!node) {
 		/* Invalid handle */
 
-		REPORT_ERROR ("Ns_attach_object: Null name handle");
+		REPORT_ERROR ("Ns_attach_object: Null Named_obj handle");
 		return (AE_BAD_PARAMETER);
 	}
 
@@ -93,7 +92,7 @@
 		return (AE_BAD_PARAMETER);
 	}
 
-	if (!VALID_DESCRIPTOR_TYPE (handle, ACPI_DESC_TYPE_NAMED)) {
+	if (!VALID_DESCRIPTOR_TYPE (node, ACPI_DESC_TYPE_NAMED)) {
 		/* Not a name handle */
 
 		REPORT_ERROR ("Ns_attach_object: Invalid handle");
@@ -102,15 +101,15 @@
 
 	/* Check if this object is already attached */
 
-	if (this_entry->object == object) {
+	if (node->object == object) {
 		return (AE_OK);
 	}
 
 
-	/* Get the current flags field of the NTE */
+	/* Get the current flags field of the Node */
 
-	flags = this_entry->flags;
-	flags &= ~NTE_AML_ATTACHMENT;
+	flags = node->flags;
+	flags &= ~ANOBJ_AML_ATTACHMENT;
 
 
 	/* If null object, we will just install it */
@@ -121,27 +120,27 @@
 	}
 
 	/*
-	 * If the object is an NTE with an attached object,
+	 * If the object is an Node with an attached object,
 	 * we will use that (attached) object
 	 */
 
 	else if (VALID_DESCRIPTOR_TYPE (object, ACPI_DESC_TYPE_NAMED) &&
-			((ACPI_NAMED_OBJECT*) object)->object)
+			((ACPI_NAMESPACE_NODE *) object)->object)
 	{
 		/*
 		 * Value passed is a name handle and that name has a
 		 * non-null value.  Use that name's value and type.
 		 */
 
-		obj_desc = ((ACPI_NAMED_OBJECT*) object)->object;
-		obj_type = ((ACPI_NAMED_OBJECT*) object)->type;
+		obj_desc = ((ACPI_NAMESPACE_NODE *) object)->object;
+		obj_type = ((ACPI_NAMESPACE_NODE *) object)->type;
 
 		/*
 		 * Copy appropriate flags
 		 */
 
-		if (((ACPI_NAMED_OBJECT*) object)->flags & NTE_AML_ATTACHMENT) {
-			flags |= NTE_AML_ATTACHMENT;
+		if (((ACPI_NAMESPACE_NODE *) object)->flags & ANOBJ_AML_ATTACHMENT) {
+			flags |= ANOBJ_AML_ATTACHMENT;
 		}
 	}
 
@@ -152,7 +151,7 @@
 	 */
 
 	else {
-		obj_desc = (ACPI_OBJECT_INTERNAL *) object;
+		obj_desc = (ACPI_OPERAND_OBJECT *) object;
 
 
 		/* If a valid type (non-ANY) was given, just use it */
@@ -173,10 +172,10 @@
 		else if (acpi_tb_system_table_pointer (object)) {
 			/*
 			 * Object points into the AML stream.
-			 * Set a flag bit in the NTE to indicate this
+			 * Set a flag bit in the Node to indicate this
 			 */
 
-			flags |= NTE_AML_ATTACHMENT;
+			flags |= ANOBJ_AML_ATTACHMENT;
 
 			/*
 			 * The next byte (perhaps the next two bytes)
@@ -263,13 +262,13 @@
 
 	/* Save the existing object (if any) for deletion later */
 
-	previous_obj_desc = this_entry->object;
+	previous_obj_desc = node->object;
 
 	/* Install the object and set the type, flags */
 
-	this_entry->object  = obj_desc;
-	this_entry->type    = (u8) obj_type;
-	this_entry->flags   = flags;
+	node->object   = obj_desc;
+	node->type     = (u8) obj_type;
+	node->flags    |= flags;
 
 
 	/*
@@ -277,86 +276,12 @@
 	 */
 
 	if (previous_obj_desc) {
-		/* One for the attach to the NTE */
-		acpi_cm_remove_reference (previous_obj_desc);
-		/* Now delete */
-		acpi_cm_remove_reference (previous_obj_desc);
-	}
+		/* One for the attach to the Node */
 
-	return (AE_OK);
-}
-
-
-/****************************************************************************
- *
- * FUNCTION:    Acpi_ns_attach_method
- *
- * PARAMETERS:  Handle              - Handle of nte to be set
- *              Offset              - Value to be set
- *              Length              - Length associated with value
- *
- * DESCRIPTION: Record the given offset and p-code length of the method
- *              whose handle is passed
- *
- * MUTEX:       Assumes namespace is locked
- *
- ***************************************************************************/
-
-ACPI_STATUS
-acpi_ns_attach_method (
-	ACPI_HANDLE             handle,
-	u8                      *pcode_addr,
-	u32                     pcode_length)
-{
-	ACPI_OBJECT_INTERNAL    *obj_desc;
-	ACPI_OBJECT_INTERNAL    *previous_obj_desc;
-	ACPI_NAMED_OBJECT       *this_entry = (ACPI_NAMED_OBJECT*) handle;
-
-
-	/* Parameter validation */
-
-	if (!acpi_gbl_root_object->child_table) {
-		/* Name space uninitialized */
-
-		REPORT_ERROR ("Ns_attach_method: name space uninitialized");
-		return (AE_NO_NAMESPACE);
-	}
-
-	if (!handle) {
-		/* Null name handle */
-
-		REPORT_ERROR ("Ns_attach_method: null name handle");
-		return (AE_BAD_PARAMETER);
-	}
-
-
-	/* Allocate a method descriptor */
-
-	obj_desc = acpi_cm_create_internal_object (ACPI_TYPE_METHOD);
-	if (!obj_desc) {
-		/* Method allocation failure  */
-
-		REPORT_ERROR ("Ns_attach_method: allocation failure");
-		return (AE_NO_MEMORY);
-	}
-
-	/* Init the method info */
-
-	obj_desc->method.pcode      = pcode_addr;
-	obj_desc->method.pcode_length = pcode_length;
-
-	/* Update reference count and install */
-
-	acpi_cm_add_reference (obj_desc);
-
-	previous_obj_desc = this_entry->object;
-	this_entry->object = obj_desc;
+		acpi_cm_remove_reference (previous_obj_desc);
 
+		/* Now delete */
 
-	/*
-	 * Delete an existing object.  Don't try to re-use in case it is shared
-	 */
-	if (previous_obj_desc) {
 		acpi_cm_remove_reference (previous_obj_desc);
 	}
 
@@ -364,11 +289,11 @@
 }
 
 
-/****************************************************************************
+/*******************************************************************************
  *
  * FUNCTION:    Acpi_ns_detach_object
  *
- * PARAMETERS:  Object           - An object whose Value will be deleted
+ * PARAMETERS:  Node           - An object whose Value will be deleted
  *
  * RETURN:      None.
  *
@@ -376,24 +301,23 @@
  *              Value is an allocated object, it is freed.  Otherwise, the
  *              field is simply cleared.
  *
- ***************************************************************************/
+ ******************************************************************************/
 
 void
 acpi_ns_detach_object (
-	ACPI_HANDLE             object)
+	ACPI_NAMESPACE_NODE     *node)
 {
-	ACPI_NAMED_OBJECT       *entry = object;
-	ACPI_OBJECT_INTERNAL    *obj_desc;
+	ACPI_OPERAND_OBJECT     *obj_desc;
 
 
-	obj_desc = entry->object;
+	obj_desc = node->object;
 	if (!obj_desc) {
 		return;
 	}
 
 	/* Clear the entry in all cases */
 
-	entry->object = NULL;
+	node->object = NULL;
 
 	/* Found a valid value */
 
@@ -412,16 +336,16 @@
 }
 
 
-/****************************************************************************
+/*******************************************************************************
  *
  * FUNCTION:    Acpi_ns_get_attached_object
  *
- * PARAMETERS:  Handle              - Handle of nte to be examined
+ * PARAMETERS:  Handle              - Parent Node to be examined
  *
- * RETURN:      Current value of the object field from nte whose handle is
- *              passed
+ * RETURN:      Current value of the object field from the Node whose
+ *              handle is passed
  *
- ***************************************************************************/
+ ******************************************************************************/
 
 void *
 acpi_ns_get_attached_object (
@@ -435,122 +359,7 @@
 		return (NULL);
 	}
 
-	return (((ACPI_NAMED_OBJECT*) handle)->object);
-}
-
-
-/****************************************************************************
- *
- * FUNCTION:    Acpi_ns_compare_object
- *
- * PARAMETERS:  Obj_handle          - A namespace entry
- *              Level               - Current nesting level
- *              Obj_desc            - The value to be compared
- *
- * DESCRIPTION: A User_function called by Acpi_ns_walk_namespace(). It performs
- *              a comparison for Acpi_ns_find_attached_object(). The comparison is against
- *              the value in the value field of the Obj_handle (an NTE).
- *              If a match is found, the handle is returned, which aborts
- *              Acpi_ns_walk_namespace.
- *
- ***************************************************************************/
-
-ACPI_STATUS
-acpi_ns_compare_object (
-	ACPI_HANDLE             obj_handle,
-	u32                     level,
-	void                    *obj_desc,
-	void                    **return_value)
-{
-
-	if (((ACPI_NAMED_OBJECT*) obj_handle)->object == obj_desc) {
-		if (return_value) {
-			*return_value = obj_handle;
-		}
-
-		 /* Stop the walk */
-		return AE_CTRL_TERMINATE;
-	}
-
-	/* Not found, continue the walk */
-	return AE_OK;
-}
-
-
-/****************************************************************************
- *
- * FUNCTION:    Acpi_ns_find_attached_object
- *
- * PARAMETERS:  *Obj_desc           - Value to be found in ptr_val field.
- *              Start_handle        - Root of subtree to be searched, or
- *                                    NS_ALL to search the entire namespace
- *              Max_depth           - Maximum depth of search.  Use INT_MAX
- *                                    for an effectively unlimited depth.
- *
- * DESCRIPTION: Traverse the name space until finding a name whose Value field
- *              matches the Obj_desc parameter, and return a handle to that
- *              name, or (ACPI_HANDLE)0 if none exists.
- *              if Start_handle is NS_ALL (null) search from the root,
- *              else it is a handle whose children are to be searched.
- *
- ***************************************************************************/
-
-ACPI_HANDLE
-acpi_ns_find_attached_object (
-	ACPI_OBJECT_INTERNAL    *obj_desc,
-	ACPI_HANDLE             start_handle,
-	s32                     max_depth)
-{
-	ACPI_HANDLE             ret_object;
-	ACPI_STATUS             status;
-
-
-	/* Parameter validation */
-
-	if (!obj_desc) {
-		return (NULL);
-	}
-
-	if (0 == max_depth) {
-		return (NULL);
-	}
-
-	if (!acpi_gbl_root_object->child_table) {
-		/*
-		 * If the name space has not been initialized,
-		 * there surely are no matching values.
-		 */
-		return (NULL);
-	}
-
-	if (NS_ALL == start_handle) {
-		start_handle = acpi_gbl_root_object;
-	}
-
-	else {
-		/*
-		 * If base is not the root and has no children,
-		 * there is nothing to search.
-		 */
-		return (NULL);
-	}
-
-
-	/*
-	 * Walk namespace until a match is found.
-	 * Either the matching object is returned, or NULL in case
-	 * of no match.
-	 */
-	status = acpi_ns_walk_namespace (ACPI_TYPE_ANY, start_handle,
-			   max_depth, NS_WALK_NO_UNLOCK,
-			   acpi_ns_compare_object,
-			   obj_desc, &ret_object);
-
-	if (ACPI_FAILURE (status)) {
-		ret_object = NULL;
-	}
-
-	return (ret_object);
+	return (((ACPI_NAMESPACE_NODE *) handle)->object);
 }
 
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)