diff options
author | Bob Moore <robert.moore@intel.com> | 2008-04-10 11:06:37 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-04-22 14:29:21 -0400 |
commit | ba886cd4ac957608777fbc8d137f6b9f0450e775 (patch) | |
tree | d7dabaa586af41c293977443ee20df6b6b13d171 /drivers/acpi/dispatcher/dsmethod.c | |
parent | f654ecbfacb47d20e8cac087bbada1b947db846b (diff) |
ACPICA: Update for mutiple global lock acquisitions by same thread
Allows AcpiAcquireGlobalLock external interface to be called
multiple times by the
same thread. Allows use of AML fields that require the global
lock while the running AML is already holding the global lock.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/dispatcher/dsmethod.c')
-rw-r--r-- | drivers/acpi/dispatcher/dsmethod.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c index 1cbe61905824..c50c0cd5d717 100644 --- a/drivers/acpi/dispatcher/dsmethod.c +++ b/drivers/acpi/dispatcher/dsmethod.c | |||
@@ -232,9 +232,9 @@ acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node, | |||
232 | * recursive call. | 232 | * recursive call. |
233 | */ | 233 | */ |
234 | if (!walk_state || | 234 | if (!walk_state || |
235 | !obj_desc->method.mutex->mutex.owner_thread || | 235 | !obj_desc->method.mutex->mutex.thread_id || |
236 | (walk_state->thread != | 236 | (walk_state->thread->thread_id != |
237 | obj_desc->method.mutex->mutex.owner_thread)) { | 237 | obj_desc->method.mutex->mutex.thread_id)) { |
238 | /* | 238 | /* |
239 | * Acquire the method mutex. This releases the interpreter if we | 239 | * Acquire the method mutex. This releases the interpreter if we |
240 | * block (and reacquires it before it returns) | 240 | * block (and reacquires it before it returns) |
@@ -254,8 +254,8 @@ acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node, | |||
254 | original_sync_level = | 254 | original_sync_level = |
255 | walk_state->thread->current_sync_level; | 255 | walk_state->thread->current_sync_level; |
256 | 256 | ||
257 | obj_desc->method.mutex->mutex.owner_thread = | 257 | obj_desc->method.mutex->mutex.thread_id = |
258 | walk_state->thread; | 258 | walk_state->thread->thread_id; |
259 | walk_state->thread->current_sync_level = | 259 | walk_state->thread->current_sync_level = |
260 | obj_desc->method.sync_level; | 260 | obj_desc->method.sync_level; |
261 | } else { | 261 | } else { |
@@ -569,7 +569,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, | |||
569 | 569 | ||
570 | acpi_os_release_mutex(method_desc->method.mutex->mutex. | 570 | acpi_os_release_mutex(method_desc->method.mutex->mutex. |
571 | os_mutex); | 571 | os_mutex); |
572 | method_desc->method.mutex->mutex.owner_thread = NULL; | 572 | method_desc->method.mutex->mutex.thread_id = 0; |
573 | } | 573 | } |
574 | } | 574 | } |
575 | 575 | ||