From 47cdb5f0962aee617a1fe448b8d50fe1d3a3e545 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek <kaashoek@mit.edu> Date: Wed, 2 Sep 2020 17:17:15 -0400 Subject: [PATCH] wfi to save CPU time on Athena --- kernel/proc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/proc.c b/kernel/proc.c index 58a8a0b..4354ec5 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -454,6 +454,7 @@ scheduler(void) // processes are waiting. intr_on(); + int found = 0; for(p = proc; p < &proc[NPROC]; p++) { acquire(&p->lock); if(p->state == RUNNABLE) { @@ -467,9 +468,14 @@ scheduler(void) // Process is done running for now. // It should have changed its p->state before coming back. c->proc = 0; + found = 1; } release(&p->lock); } + if(found == 0) { + intr_on(); + asm volatile("wfi"); + } } }