summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_synch.c
diff options
context:
space:
mode:
authordufault <dufault@FreeBSD.org>1998-03-11 20:50:42 +0000
committerdufault <dufault@FreeBSD.org>1998-03-11 20:50:42 +0000
commit06743e32eb36a6b0424ca50d84477699137818f6 (patch)
tree63da855a5a002e1b64ced738e77b50d85befffaa /sys/kern/kern_synch.c
parentca539b1229aed5578af0c9f065beed83fb204ea5 (diff)
downloadFreeBSD-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.c11
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();
}
OpenPOWER on IntegriCloud