From 7cf6a354866b3cf48ff3bd2544468a7f48994658 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 23 Jun 2014 20:29:10 +0200 Subject: kernel: fix cooperative scheduling for wired processes --- sys/src/9/port/proc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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]; -- cgit v1.2.3