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 |