rt: Shutdown gracefully on failure

When the kernel fails, kill all tasks and wait for the schedulers to stop
instead of just exiting. I'm sure there are tons of lurking issues here but
this is enough to fail without leaking (at least in the absence of cleanups).
This commit is contained in:
Brian Anderson
2011-08-10 12:57:53 -07:00
parent f6ad051408
commit 0cd607bcbd
5 changed files with 28 additions and 2 deletions

View File

@@ -134,6 +134,14 @@ int rust_kernel::start_task_threads()
return rval;
}
void
rust_kernel::fail() {
for(size_t i = 0; i < num_threads; ++i) {
rust_scheduler *thread = threads[i];
thread->kill_all_tasks();
}
}
rust_task_id
rust_kernel::create_task(rust_task *spawner, const char *name) {
rust_scheduler *thread = threads[rand(&rctx) % num_threads];