summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-06-23 20:29:10 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-06-23 20:29:10 +0200
commit7cf6a354866b3cf48ff3bd2544468a7f48994658 (patch)
tree924b5cbbfc115fbfacd2eca4ae7a337c5650d9f8 /sys/src
parent87d5626af038a5ab1df4f275beadd4415320d2aa (diff)
kernel: fix cooperative scheduling for wired processes
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/9/port/proc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/src/9/port/proc.c b/sys/src/9/port/proc.c
index bd787572b..9ca61ae1e 100644
--- a/sys/src/9/port/proc.c
+++ b/sys/src/9/port/proc.c
@@ -425,7 +425,7 @@ ready(Proc *p)
return;
}
- if(up != p)
+ if(up != p && (p->wired == nil || p->wired == MACHP(m->machno)))
m->readied = p; /* group scheduling */
updatecpu(p);
@@ -511,6 +511,7 @@ runproc(void)
/* cooperative scheduling until the clock ticks */
if((p=m->readied) && p->mach==0 && p->state==Ready
+ && (p->wired == nil || p->wired == MACHP(m->machno))
&& runq[Nrq-1].head == nil && runq[Nrq-2].head == nil){
skipscheds++;
rq = &runq[p->priority];