diff options
Diffstat (limited to 'drivers/acpi/executer/exsystem.c')
-rw-r--r-- | drivers/acpi/executer/exsystem.c | 110 |
1 files changed, 9 insertions, 101 deletions
diff --git a/drivers/acpi/executer/exsystem.c b/drivers/acpi/executer/exsystem.c index 28aef3e69ecc..9460baff3032 100644 --- a/drivers/acpi/executer/exsystem.c +++ b/drivers/acpi/executer/exsystem.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2006, R. Byron Moore | 9 | * Copyright (C) 2000 - 2007, R. Byron Moore |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
@@ -66,7 +66,6 @@ ACPI_MODULE_NAME("exsystem") | |||
66 | acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | 66 | acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) |
67 | { | 67 | { |
68 | acpi_status status; | 68 | acpi_status status; |
69 | acpi_status status2; | ||
70 | 69 | ||
71 | ACPI_FUNCTION_TRACE(ex_system_wait_semaphore); | 70 | ACPI_FUNCTION_TRACE(ex_system_wait_semaphore); |
72 | 71 | ||
@@ -79,7 +78,7 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | |||
79 | 78 | ||
80 | /* We must wait, so unlock the interpreter */ | 79 | /* We must wait, so unlock the interpreter */ |
81 | 80 | ||
82 | acpi_ex_exit_interpreter(); | 81 | acpi_ex_relinquish_interpreter(); |
83 | 82 | ||
84 | status = acpi_os_wait_semaphore(semaphore, 1, timeout); | 83 | status = acpi_os_wait_semaphore(semaphore, 1, timeout); |
85 | 84 | ||
@@ -89,13 +88,7 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | |||
89 | 88 | ||
90 | /* Reacquire the interpreter */ | 89 | /* Reacquire the interpreter */ |
91 | 90 | ||
92 | status2 = acpi_ex_enter_interpreter(); | 91 | acpi_ex_reacquire_interpreter(); |
93 | if (ACPI_FAILURE(status2)) { | ||
94 | |||
95 | /* Report fatal error, could not acquire interpreter */ | ||
96 | |||
97 | return_ACPI_STATUS(status2); | ||
98 | } | ||
99 | } | 92 | } |
100 | 93 | ||
101 | return_ACPI_STATUS(status); | 94 | return_ACPI_STATUS(status); |
@@ -119,7 +112,6 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | |||
119 | acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) | 112 | acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) |
120 | { | 113 | { |
121 | acpi_status status; | 114 | acpi_status status; |
122 | acpi_status status2; | ||
123 | 115 | ||
124 | ACPI_FUNCTION_TRACE(ex_system_wait_mutex); | 116 | ACPI_FUNCTION_TRACE(ex_system_wait_mutex); |
125 | 117 | ||
@@ -132,7 +124,7 @@ acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) | |||
132 | 124 | ||
133 | /* We must wait, so unlock the interpreter */ | 125 | /* We must wait, so unlock the interpreter */ |
134 | 126 | ||
135 | acpi_ex_exit_interpreter(); | 127 | acpi_ex_relinquish_interpreter(); |
136 | 128 | ||
137 | status = acpi_os_acquire_mutex(mutex, timeout); | 129 | status = acpi_os_acquire_mutex(mutex, timeout); |
138 | 130 | ||
@@ -142,13 +134,7 @@ acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) | |||
142 | 134 | ||
143 | /* Reacquire the interpreter */ | 135 | /* Reacquire the interpreter */ |
144 | 136 | ||
145 | status2 = acpi_ex_enter_interpreter(); | 137 | acpi_ex_reacquire_interpreter(); |
146 | if (ACPI_FAILURE(status2)) { | ||
147 | |||
148 | /* Report fatal error, could not acquire interpreter */ | ||
149 | |||
150 | return_ACPI_STATUS(status2); | ||
151 | } | ||
152 | } | 138 | } |
153 | 139 | ||
154 | return_ACPI_STATUS(status); | 140 | return_ACPI_STATUS(status); |
@@ -209,96 +195,18 @@ acpi_status acpi_ex_system_do_stall(u32 how_long) | |||
209 | 195 | ||
210 | acpi_status acpi_ex_system_do_suspend(acpi_integer how_long) | 196 | acpi_status acpi_ex_system_do_suspend(acpi_integer how_long) |
211 | { | 197 | { |
212 | acpi_status status; | ||
213 | |||
214 | ACPI_FUNCTION_ENTRY(); | 198 | ACPI_FUNCTION_ENTRY(); |
215 | 199 | ||
216 | /* Since this thread will sleep, we must release the interpreter */ | 200 | /* Since this thread will sleep, we must release the interpreter */ |
217 | 201 | ||
218 | acpi_ex_exit_interpreter(); | 202 | acpi_ex_relinquish_interpreter(); |
219 | 203 | ||
220 | acpi_os_sleep(how_long); | 204 | acpi_os_sleep(how_long); |
221 | 205 | ||
222 | /* And now we must get the interpreter again */ | 206 | /* And now we must get the interpreter again */ |
223 | 207 | ||
224 | status = acpi_ex_enter_interpreter(); | 208 | acpi_ex_reacquire_interpreter(); |
225 | return (status); | 209 | return (AE_OK); |
226 | } | ||
227 | |||
228 | /******************************************************************************* | ||
229 | * | ||
230 | * FUNCTION: acpi_ex_system_acquire_mutex | ||
231 | * | ||
232 | * PARAMETERS: time_desc - Maximum time to wait for the mutex | ||
233 | * obj_desc - The object descriptor for this op | ||
234 | * | ||
235 | * RETURN: Status | ||
236 | * | ||
237 | * DESCRIPTION: Provides an access point to perform synchronization operations | ||
238 | * within the AML. This function will cause a lock to be generated | ||
239 | * for the Mutex pointed to by obj_desc. | ||
240 | * | ||
241 | ******************************************************************************/ | ||
242 | |||
243 | acpi_status | ||
244 | acpi_ex_system_acquire_mutex(union acpi_operand_object * time_desc, | ||
245 | union acpi_operand_object * obj_desc) | ||
246 | { | ||
247 | acpi_status status = AE_OK; | ||
248 | |||
249 | ACPI_FUNCTION_TRACE_PTR(ex_system_acquire_mutex, obj_desc); | ||
250 | |||
251 | if (!obj_desc) { | ||
252 | return_ACPI_STATUS(AE_BAD_PARAMETER); | ||
253 | } | ||
254 | |||
255 | /* Support for the _GL_ Mutex object -- go get the global lock */ | ||
256 | |||
257 | if (obj_desc->mutex.os_mutex == ACPI_GLOBAL_LOCK) { | ||
258 | status = | ||
259 | acpi_ev_acquire_global_lock((u16) time_desc->integer.value); | ||
260 | return_ACPI_STATUS(status); | ||
261 | } | ||
262 | |||
263 | status = acpi_ex_system_wait_mutex(obj_desc->mutex.os_mutex, | ||
264 | (u16) time_desc->integer.value); | ||
265 | return_ACPI_STATUS(status); | ||
266 | } | ||
267 | |||
268 | /******************************************************************************* | ||
269 | * | ||
270 | * FUNCTION: acpi_ex_system_release_mutex | ||
271 | * | ||
272 | * PARAMETERS: obj_desc - The object descriptor for this op | ||
273 | * | ||
274 | * RETURN: Status | ||
275 | * | ||
276 | * DESCRIPTION: Provides an access point to perform synchronization operations | ||
277 | * within the AML. This operation is a request to release a | ||
278 | * previously acquired Mutex. If the Mutex variable is set then | ||
279 | * it will be decremented. | ||
280 | * | ||
281 | ******************************************************************************/ | ||
282 | |||
283 | acpi_status acpi_ex_system_release_mutex(union acpi_operand_object *obj_desc) | ||
284 | { | ||
285 | acpi_status status = AE_OK; | ||
286 | |||
287 | ACPI_FUNCTION_TRACE(ex_system_release_mutex); | ||
288 | |||
289 | if (!obj_desc) { | ||
290 | return_ACPI_STATUS(AE_BAD_PARAMETER); | ||
291 | } | ||
292 | |||
293 | /* Support for the _GL_ Mutex object -- release the global lock */ | ||
294 | |||
295 | if (obj_desc->mutex.os_mutex == ACPI_GLOBAL_LOCK) { | ||
296 | status = acpi_ev_release_global_lock(); | ||
297 | return_ACPI_STATUS(status); | ||
298 | } | ||
299 | |||
300 | acpi_os_release_mutex(obj_desc->mutex.os_mutex); | ||
301 | return_ACPI_STATUS(AE_OK); | ||
302 | } | 210 | } |
303 | 211 | ||
304 | /******************************************************************************* | 212 | /******************************************************************************* |
@@ -314,7 +222,7 @@ acpi_status acpi_ex_system_release_mutex(union acpi_operand_object *obj_desc) | |||
314 | * | 222 | * |
315 | ******************************************************************************/ | 223 | ******************************************************************************/ |
316 | 224 | ||
317 | acpi_status acpi_ex_system_signal_event(union acpi_operand_object *obj_desc) | 225 | acpi_status acpi_ex_system_signal_event(union acpi_operand_object * obj_desc) |
318 | { | 226 | { |
319 | acpi_status status = AE_OK; | 227 | acpi_status status = AE_OK; |
320 | 228 | ||