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
- Lines: 469
- Date:
Fri Sep 15 14:30:30 2000
- Orig file:
v2.4.0-test8/linux/drivers/acpi/namespace/nsobject.c
- Orig date:
Wed Jul 5 11:23:12 2000
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)