diff options
author | Robert Morris <rtm@csail.mit.edu> | 2022-10-16 15:28:21 -0400 |
---|---|---|
committer | Robert Morris <rtm@csail.mit.edu> | 2022-10-16 15:28:21 -0400 |
commit | f376ad7f1f80bddfb754b21811d17959c45d43a4 (patch) | |
tree | 6ebc997cd7105509d0c1b2b7d1865cbe796b24d1 | |
parent | 348cf7fee4023fce9b023145d89429ee8fdde00d (diff) | |
download | xv6-labs-f376ad7f1f80bddfb754b21811d17959c45d43a4.tar.gz xv6-labs-f376ad7f1f80bddfb754b21811d17959c45d43a4.tar.bz2 xv6-labs-f376ad7f1f80bddfb754b21811d17959c45d43a4.zip |
scheduler()'s intr_on() is in the wrong place, reflecting
the locking scheme from long ago.
-rw-r--r-- | kernel/proc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/proc.c b/kernel/proc.c index 659ca54..bc4b274 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -446,12 +446,13 @@ scheduler(void) { struct proc *p; struct cpu *c = mycpu(); + + // Interrupts are disabled at first, but they must be + // enabled in order for the shell to get input. + intr_on(); c->proc = 0; for(;;){ - // Avoid deadlock by ensuring that devices can interrupt. - intr_on(); - for(p = proc; p < &proc[NPROC]; p++) { acquire(&p->lock); if(p->state == RUNNABLE) { |