diff --git a/src/rt/rust_sched_loop.cpp b/src/rt/rust_sched_loop.cpp index f6b061a5bbc63..e56ce6dd2637f 100644 --- a/src/rt/rust_sched_loop.cpp +++ b/src/rt/rust_sched_loop.cpp @@ -100,6 +100,7 @@ rust_sched_loop::kill_all_tasks() { size_t rust_sched_loop::number_of_live_tasks() { + lock.must_have_lock(); return running_tasks.length() + blocked_tasks.length(); } @@ -148,14 +149,10 @@ rust_sched_loop::release_task(rust_task *task) { rust_task * rust_sched_loop::schedule_task() { lock.must_have_lock(); - assert(this); if (running_tasks.length() > 0) { size_t k = isaac_rand(&rctx); - // Look around for a runnable task, starting at k. - for(size_t j = 0; j < running_tasks.length(); ++j) { - size_t i = (j + k) % running_tasks.length(); - return (rust_task *)running_tasks[i]; - } + size_t i = k % running_tasks.length(); + return (rust_task *)running_tasks[i]; } return NULL; }