ref: da9b69ed37cba4b85a6bd2bc394919cead28790a
parent: d5b73d3fc7e5b3ba48f47f43fbc588bebf4eb08c
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Mon Jun 23 16:29:10 EDT 2014
kernel: fix cooperative scheduling for wired processes
--- a/sys/src/9/port/proc.c
+++ b/sys/src/9/port/proc.c
@@ -425,7 +425,7 @@
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 @@
/* 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];
--
⑨