Rev 2118 | Rev 2216 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2118 | Rev 2183 | ||
|---|---|---|---|
| Line 375... | Line 375... | ||
| 375 | * Assume THREAD->lock is held. |
375 | * Assume THREAD->lock is held. |
| 376 | */ |
376 | */ |
| 377 | void scheduler_separated_stack(void) |
377 | void scheduler_separated_stack(void) |
| 378 | { |
378 | { |
| 379 | int priority; |
379 | int priority; |
| - | 380 | DEADLOCK_PROBE_INIT(p_joinwq); |
|
| 380 | 381 | ||
| 381 | ASSERT(CPU != NULL); |
382 | ASSERT(CPU != NULL); |
| 382 | 383 | ||
| 383 | if (THREAD) { |
384 | if (THREAD) { |
| 384 | /* must be run after the switch to scheduler stack */ |
385 | /* must be run after the switch to scheduler stack */ |
| 385 | after_thread_ran(); |
386 | after_thread_ran(); |
| Line 404... | Line 405... | ||
| 404 | * Avoid deadlock. |
405 | * Avoid deadlock. |
| 405 | */ |
406 | */ |
| 406 | spinlock_unlock(&THREAD->lock); |
407 | spinlock_unlock(&THREAD->lock); |
| 407 | delay(10); |
408 | delay(10); |
| 408 | spinlock_lock(&THREAD->lock); |
409 | spinlock_lock(&THREAD->lock); |
| - | 410 | DEADLOCK_PROBE(p_joinwq, |
|
| - | 411 | DEADLOCK_THRESHOLD); |
|
| 409 | goto repeat; |
412 | goto repeat; |
| 410 | } |
413 | } |
| 411 | _waitq_wakeup_unsafe(&THREAD->join_wq, false); |
414 | _waitq_wakeup_unsafe(&THREAD->join_wq, false); |
| 412 | spinlock_unlock(&THREAD->join_wq.lock); |
415 | spinlock_unlock(&THREAD->join_wq.lock); |
| 413 | 416 | ||