diff options
author | Frans Kaashoek <[email protected]> | 2019-07-03 15:38:30 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2019-07-03 15:38:30 -0400 |
commit | 47e69250d08acc7d91d791148a37f4279f5939c9 (patch) | |
tree | 9d903f67ac65a2cf9fca1b732829782519b2a79a | |
parent | cee830af2484fb3e67f3778e03114179eddc4f82 (diff) | |
download | xv6-labs-47e69250d08acc7d91d791148a37f4279f5939c9.tar.gz xv6-labs-47e69250d08acc7d91d791148a37f4279f5939c9.tar.bz2 xv6-labs-47e69250d08acc7d91d791148a37f4279f5939c9.zip |
Simplify wakeup1
-rw-r--r-- | kernel/proc.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/kernel/proc.c b/kernel/proc.c index 9202b61..1201c8b 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -529,19 +529,13 @@ sleep(void *chan, struct spinlock *lk) } //PAGEBREAK! -// Wake up all processes sleeping on chan, -// where chan is a proc, which is locked. +// Wake up locked parent, used by exit() static void -wakeup1(struct proc *chan) +wakeup1(struct proc *p) { - struct proc *p; - - for(p = ptable.proc; p < &ptable.proc[NPROC]; p++) - if(p == chan && p->state == SLEEPING && p->chan == chan) { - if(p->state != SLEEPING || p->chan != chan) - panic("wakeup1"); - p->state = RUNNABLE; - } + if(p->chan == p && p->state == SLEEPING) { + p->state = RUNNABLE; + } } // Wake up all processes sleeping on chan. Never |