diff options
author | dg <dg@FreeBSD.org> | 1994-09-01 05:12:53 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1994-09-01 05:12:53 +0000 |
commit | 43e565295a220ac4d53cf229c67f810f9ecfd186 (patch) | |
tree | 9d05b088a74d8108c8f5219d91fa24183ccc01e4 /sys/kern/kern_synch.c | |
parent | 78a002271c45fc18c79b6ed93e1426078d17886f (diff) | |
download | FreeBSD-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.c | 18 |
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(); + } } |