Skip to content

Commit 9a76d71

Browse files
committed
don't deplete RNG entropy when there is only one runnable task
1 parent 9a78dc9 commit 9a76d71

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/rt/rust_sched_loop.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,10 @@ rust_sched_loop::release_task(rust_task *task) {
150150
rust_task *
151151
rust_sched_loop::schedule_task() {
152152
lock.must_have_lock();
153-
if (running_tasks.length() > 0) {
154-
size_t k = rng_gen_u32(kernel, &rng);
155-
size_t i = k % running_tasks.length();
156-
return (rust_task *)running_tasks[i];
153+
size_t tasks = running_tasks.length();
154+
if (tasks > 0) {
155+
size_t i = (tasks > 1) ? (rng_gen_u32(kernel, &rng) % tasks) : 0;
156+
return running_tasks[i];
157157
}
158158
return NULL;
159159
}

0 commit comments

Comments
 (0)