summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2019-07-03 15:38:30 -0400
committerFrans Kaashoek <[email protected]>2019-07-03 15:38:30 -0400
commit47e69250d08acc7d91d791148a37f4279f5939c9 (patch)
tree9d903f67ac65a2cf9fca1b732829782519b2a79a /kernel
parentcee830af2484fb3e67f3778e03114179eddc4f82 (diff)
downloadxv6-labs-47e69250d08acc7d91d791148a37f4279f5939c9.tar.gz
xv6-labs-47e69250d08acc7d91d791148a37f4279f5939c9.tar.bz2
xv6-labs-47e69250d08acc7d91d791148a37f4279f5939c9.zip
Simplify wakeup1
Diffstat (limited to 'kernel')
-rw-r--r--kernel/proc.c16
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