Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 46388
b: refs/heads/master
c: d1fdda8
h: refs/heads/master
v: v3
  • Loading branch information
Bob Moore authored and Len Brown committed Feb 3, 2007
1 parent d44e221 commit 3b97ef1
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9bc75cff4919f9d947982d805aed89582a20d04d
refs/heads/master: d1fdda83f7c567f376ddd4305833de09f7919ca9
4 changes: 2 additions & 2 deletions trunk/drivers/acpi/dispatcher/dswload.c
Original file line number Diff line number Diff line change
Expand Up @@ -756,9 +756,9 @@ acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state,
flags = ACPI_NS_NO_UPSEARCH;
if (walk_state->pass_number == 3) {

/* Execution mode, node cannot already exist */
/* Execution mode, node cannot already exist, node is temporary */

flags |= ACPI_NS_ERROR_IF_FOUND;
flags |= (ACPI_NS_ERROR_IF_FOUND | ACPI_NS_TEMPORARY);
}

/* Add new entry or lookup existing entry */
Expand Down
9 changes: 8 additions & 1 deletion trunk/drivers/acpi/namespace/nsdump.c
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,12 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,
obj_desc = acpi_ns_get_attached_object(this_node);
acpi_dbg_level = dbg_level;

/* Temp nodes are those nodes created by a control method */

if (this_node->flags & ANOBJ_TEMPORARY) {
acpi_os_printf("(T) ");
}

switch (info->display_type & ACPI_DISPLAY_MASK) {
case ACPI_DISPLAY_SUMMARY:

Expand Down Expand Up @@ -623,7 +629,8 @@ acpi_ns_dump_objects(acpi_object_type type,
info.display_type = display_type;

(void)acpi_ns_walk_namespace(type, start_handle, max_depth,
ACPI_NS_WALK_NO_UNLOCK,
ACPI_NS_WALK_NO_UNLOCK |
ACPI_NS_WALK_TEMP_NODES,
acpi_ns_dump_one_object, (void *)&info,
NULL);
}
Expand Down
4 changes: 4 additions & 0 deletions trunk/drivers/acpi/namespace/nssearch.c
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,10 @@ acpi_ns_search_and_enter(u32 target_name,
}
#endif

if (flags & ACPI_NS_TEMPORARY) {
new_node->flags |= ANOBJ_TEMPORARY;
}

/* Install the new object into the parent's list of children */

acpi_ns_install_node(walk_state, node, new_node, type);
Expand Down
13 changes: 8 additions & 5 deletions trunk/drivers/acpi/namespace/nswalk.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ struct acpi_namespace_node *acpi_ns_get_next_node(acpi_object_type type,
* PARAMETERS: Type - acpi_object_type to search for
* start_node - Handle in namespace where search begins
* max_depth - Depth to which search is to reach
* unlock_before_callback- Whether to unlock the NS before invoking
* Flags - Whether to unlock the NS before invoking
* the callback routine
* user_function - Called when an object of "Type" is found
* Context - Passed to user function
Expand All @@ -153,7 +153,7 @@ acpi_status
acpi_ns_walk_namespace(acpi_object_type type,
acpi_handle start_node,
u32 max_depth,
u8 unlock_before_callback,
u32 flags,
acpi_walk_callback user_function,
void *context, void **return_value)
{
Expand Down Expand Up @@ -201,12 +201,15 @@ acpi_ns_walk_namespace(acpi_object_type type,
child_type = child_node->type;
}

if (child_type == type) {
if ((child_type == type) &&
(!(child_node->flags & ANOBJ_TEMPORARY) ||
(child_node->flags & ANOBJ_TEMPORARY)
&& (flags & ACPI_NS_WALK_TEMP_NODES))) {
/*
* Found a matching node, invoke the user
* callback function
*/
if (unlock_before_callback) {
if (flags & ACPI_NS_WALK_UNLOCK) {
mutex_status =
acpi_ut_release_mutex
(ACPI_MTX_NAMESPACE);
Expand All @@ -219,7 +222,7 @@ acpi_ns_walk_namespace(acpi_object_type type,
status = user_function(child_node, level,
context, return_value);

if (unlock_before_callback) {
if (flags & ACPI_NS_WALK_UNLOCK) {
mutex_status =
acpi_ut_acquire_mutex
(ACPI_MTX_NAMESPACE);
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/acpi/aclocal.h
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ struct acpi_namespace_node {
/* Namespace Node flags */

#define ANOBJ_END_OF_PEER_LIST 0x01 /* End-of-list, Peer field points to parent */
#define ANOBJ_RESERVED 0x02 /* Available for future use */
#define ANOBJ_TEMPORARY 0x02 /* Node is create by a method and is temporary */
#define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */
#define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */
#define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */
Expand Down
10 changes: 7 additions & 3 deletions trunk/include/acpi/acnamesp.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,13 @@
#define ACPI_NS_ERROR_IF_FOUND 0x08
#define ACPI_NS_PREFIX_IS_SCOPE 0x10
#define ACPI_NS_EXTERNAL 0x20
#define ACPI_NS_TEMPORARY 0x40

#define ACPI_NS_WALK_UNLOCK TRUE
#define ACPI_NS_WALK_NO_UNLOCK FALSE
/* Flags for acpi_ns_walk_namespace */

#define ACPI_NS_WALK_NO_UNLOCK 0
#define ACPI_NS_WALK_UNLOCK 0x01
#define ACPI_NS_WALK_TEMP_NODES 0x02

/*
* nsinit - Namespace initialization
Expand All @@ -92,7 +96,7 @@ acpi_status
acpi_ns_walk_namespace(acpi_object_type type,
acpi_handle start_object,
u32 max_depth,
u8 unlock_before_callback,
u32 flags,
acpi_walk_callback user_function,
void *context, void **return_value);

Expand Down

0 comments on commit 3b97ef1

Please sign in to comment.