diff options
author | dufault <dufault@FreeBSD.org> | 1998-03-11 20:50:42 +0000 |
---|---|---|
committer | dufault <dufault@FreeBSD.org> | 1998-03-11 20:50:42 +0000 |
commit | 06743e32eb36a6b0424ca50d84477699137818f6 (patch) | |
tree | 63da855a5a002e1b64ced738e77b50d85befffaa /sys/kern/kern_synch.c | |
parent | ca539b1229aed5578af0c9f065beed83fb204ea5 (diff) | |
download | FreeBSD-src-06743e32eb36a6b0424ca50d84477699137818f6.zip FreeBSD-src-06743e32eb36a6b0424ca50d84477699137818f6.tar.gz |
idprio processes must be preempted as soon as anything is runnable.
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r-- | sys/kern/kern_synch.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 4fdc5bd..b8f8c47 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)kern_synch.c 8.9 (Berkeley) 5/19/95 - * $Id: kern_synch.c,v 1.48 1998/03/04 10:25:55 dufault Exp $ + * $Id: kern_synch.c,v 1.49 1998/03/08 09:56:59 julian Exp $ */ #include "opt_ktrace.h" @@ -103,10 +103,13 @@ static void maybe_resched(struct proc *chk) { struct proc *p = curproc; /* XXX */ + /* If the current scheduler is the idle scheduler or + * the priority of the new one is higher then reschedule. + */ if (p == 0 || - ((chk->p_priority < curpriority) && - ((RTP_PRIO_BASE(chk->p_rtprio.type) == - RTP_PRIO_BASE(p->p_rtprio.type))))) + RTP_PRIO_BASE(p->p_rtprio.type) == RTP_PRIO_IDLE || + (chk->p_priority < curpriority && + RTP_PRIO_BASE(p->p_rtprio.type) == RTP_PRIO_BASE(chk->p_rtprio.type)) ) need_resched(); } |