Rev 3034 | Rev 3037 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3034 | Rev 3035 | ||
|---|---|---|---|
| Line 511... | Line 511... | ||
| 511 | * disconnected phone. This ensures the kbox thread is going to |
511 | * disconnected phone. This ensures the kbox thread is going to |
| 512 | * wake up and terminate. |
512 | * wake up and terminate. |
| 513 | */ |
513 | */ |
| 514 | ipc_answerbox_slam_phones(&TASK->kernel_box, have_kb_thread); |
514 | ipc_answerbox_slam_phones(&TASK->kernel_box, have_kb_thread); |
| 515 | 515 | ||
| 516 | /* TODO: Wait for kbox thread to terminate */ |
- | |
| 517 | if (have_kb_thread) { |
516 | if (have_kb_thread) { |
| 518 | klog_printf("ipc_kbox_cleanup - wait for kbox thread to finish"); |
517 | klog_printf("join kb_thread.."); |
| 519 | waitq_sleep(&TASK->kb_thread_shutdown_wq); |
518 | thread_join(TASK->kb_thread); |
| - | 519 | klog_printf("join done"); |
|
| - | 520 | TASK->kb_thread = NULL; |
|
| 520 | } |
521 | } |
| 521 | 522 | ||
| 522 | /* Answer all messages in 'calls' and 'dispatched_calls' queues */ |
523 | /* Answer all messages in 'calls' and 'dispatched_calls' queues */ |
| 523 | spinlock_lock(&TASK->kernel_box.lock); |
524 | spinlock_lock(&TASK->kernel_box.lock); |
| 524 | ipc_cleanup_call_list(&TASK->kernel_box.dispatched_calls); |
525 | ipc_cleanup_call_list(&TASK->kernel_box.dispatched_calls); |
| Line 755... | Line 756... | ||
| 755 | interrupts_restore(ipl); |
756 | interrupts_restore(ipl); |
| 756 | } |
757 | } |
| 757 | } |
758 | } |
| 758 | } |
759 | } |
| 759 | 760 | ||
| 760 | klog_printf("kbox: done, waking up possible shutdown routine"); |
- | |
| 761 | waitq_wakeup(&TASK->kb_thread_shutdown_wq, WAKEUP_ALL); |
- | |
| 762 | klog_printf("kbox: finished"); |
761 | klog_printf("kbox: finished"); |
| 763 | } |
762 | } |
| 764 | 763 | ||
| 765 | 764 | ||
| 766 | /** |
765 | /** |
| Line 828... | Line 827... | ||
| 828 | mutex_unlock(&ta->kb_cleanup_lock); |
827 | mutex_unlock(&ta->kb_cleanup_lock); |
| 829 | return ENOMEM; |
828 | return ENOMEM; |
| 830 | } |
829 | } |
| 831 | 830 | ||
| 832 | ta->kb_thread = kb_thread; |
831 | ta->kb_thread = kb_thread; |
| 833 | - | ||
| 834 | /* FIXME: we could join the kbox thread */ |
- | |
| 835 | thread_detach(kb_thread); |
- | |
| 836 | thread_ready(kb_thread); |
832 | thread_ready(kb_thread); |
| 837 | 833 | ||
| 838 | mutex_unlock(&ta->kb_cleanup_lock); |
834 | mutex_unlock(&ta->kb_cleanup_lock); |
| 839 | 835 | ||
| 840 | return newphid; |
836 | return newphid; |