diff src/proc.c @ 36:d4e5846ddb48

cbc_piperead
author mir3636
date Fri, 22 Feb 2019 22:15:33 +0900
parents 96af12a50fdb
children fb3e5a2f76c1
line wrap: on
line diff
--- a/src/proc.c	Fri Feb 22 16:32:51 2019 +0900
+++ b/src/proc.c	Fri Feb 22 22:15:33 2019 +0900
@@ -528,6 +528,26 @@
     }
 }
 
+__code cbc_wakeup1(void *chan)
+{
+    struct proc *p;
+
+    for(p = ptable.proc; p < &ptable.proc[NPROC]; p++) {
+        if(p->state == SLEEPING && p->chan == chan) {
+            p->state = RUNNABLE;
+        }
+    }
+
+    release(&ptable.lock);
+    goto next();
+}
+
+__code cbc_wakeup(void *chan) 
+{
+    acquire(&ptable.lock);
+    cbc_wakeup1(chan);
+}
+
 // Wake up all processes sleeping on chan.
 void wakeup(void *chan)
 {