summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_synch.c
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1994-09-01 05:12:53 +0000
committerdg <dg@FreeBSD.org>1994-09-01 05:12:53 +0000
commit43e565295a220ac4d53cf229c67f810f9ecfd186 (patch)
tree9d05b088a74d8108c8f5219d91fa24183ccc01e4 /sys/kern/kern_synch.c
parent78a002271c45fc18c79b6ed93e1426078d17886f (diff)
downloadFreeBSD-src-43e565295a220ac4d53cf229c67f810f9ecfd186.zip
FreeBSD-src-43e565295a220ac4d53cf229c67f810f9ecfd186.tar.gz
Realtime priority scheduling support.
Submitted by: Henrik Vestergaard Draboel
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r--sys/kern/kern_synch.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index f9d43a6..f667c87 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_synch.c 8.6 (Berkeley) 1/21/94
- * $Id$
+ * $Id: kern_synch.c,v 1.3 1994/08/02 07:42:17 davidg Exp $
*/
#include <sys/param.h>
@@ -606,8 +606,10 @@ rqinit()
{
register int i;
- for (i = 0; i < NQS; i++)
+ for (i = 0; i < NQS; i++) {
qs[i].ph_link = qs[i].ph_rlink = (struct proc *)&qs[i];
+ rtqs[i].ph_link = rtqs[i].ph_rlink = (struct proc *)&rtqs[i];
+ }
}
/*
@@ -660,9 +662,13 @@ resetpriority(p)
{
register unsigned int newpriority;
- newpriority = PUSER + p->p_estcpu / 4 + 2 * p->p_nice;
- newpriority = min(newpriority, MAXPRI);
- p->p_usrpri = newpriority;
- if (newpriority < curpriority)
+ if (p->p_rtprio == RTPRIO_RTOFF) {
+ newpriority = PUSER + p->p_estcpu / 4 + 2 * p->p_nice;
+ newpriority = min(newpriority, MAXPRI);
+ p->p_usrpri = newpriority;
+ if (newpriority < curpriority)
+ need_resched();
+ } else {
need_resched();
+ }
}
OpenPOWER on IntegriCloud