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");
+    }
   }
 }