more lint
[unix-history] / usr / src / sys / kern / kern_synch.c
index b713619..4605c2e 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_synch.c    4.20    82/09/06        */
+/*     kern_synch.c    4.23    82/10/17        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -9,14 +9,13 @@
 #include "../h/inode.h"
 #include "../h/vm.h"
 #include "../h/pte.h"
 #include "../h/inode.h"
 #include "../h/vm.h"
 #include "../h/pte.h"
-#include "../h/inline.h"
-#include "../h/mtpr.h"
 #ifdef MUSH
 #include "../h/quota.h"
 #include "../h/share.h"
 #endif
 #include "../h/kernel.h"
 #include "../h/buf.h"
 #ifdef MUSH
 #include "../h/quota.h"
 #include "../h/share.h"
 #endif
 #include "../h/kernel.h"
 #include "../h/buf.h"
+#include "../vax/mtpr.h"       /* XXX */
 
 /*
  * Force switch among equal priority processes every 100ms.
 
 /*
  * Force switch among equal priority processes every 100ms.
@@ -26,45 +25,16 @@ roundrobin()
 
        runrun++;
        aston();
 
        runrun++;
        aston();
-       timeout(roundrobin, 0, hz / 10);
+       timeout(roundrobin, (caddr_t)0, hz / 10);
 }
 
 }
 
-/*
- * The digital decay cpu usage priority assignment is scaled to run in
- * time as expanded by the 1 minute load average.  Each second we
- * multiply the the previous cpu usage estimate by
- *             nrscale*avenrun[0]
- * The following relates the load average to the period over which
- * cpu usage is 90% forgotten:
- *     loadav 1         5 seconds
- *     loadav 5        24 seconds
- *     loadav 10       47 seconds
- *     loadav 20       93 seconds
- * This is a great improvement on the previous algorithm which
- * decayed the priorities by a constant, and decayed away all knowledge
- * of previous activity in about 20 seconds.  Under heavy load,
- * the previous algorithm degenerated to round-robin with poor response
- * time when there was a high load average.
- */
+/* constants to digital decay and forget 90% of usage in 5*loadav time */
 #undef ave
 #define        ave(a,b) ((int)(((int)(a*b))/(b+1)))
 int    nrscale = 2;
 double avenrun[];
 #undef ave
 #define        ave(a,b) ((int)(((int)(a*b))/(b+1)))
 int    nrscale = 2;
 double avenrun[];
-
-/*
- * Constant for decay filter for cpu usage field
- * in process table (used by ps au).
- */
 double ccpu = 0.95122942450071400909;          /* exp(-1/20) */
 
 double ccpu = 0.95122942450071400909;          /* exp(-1/20) */
 
-#ifdef MELB
-/*
- * Automatic niceness rate & max constants
- */
-#define        MAXNICE (8 + NZERO)     /* maximum auto nice value */
-#define        NFACT   (40 * hz)       /* nice++ every 40 secs cpu+sys time */
-#endif
-
 /*
  * Recompute process priorities, once a second
  */
 /*
  * Recompute process priorities, once a second
  */
@@ -73,39 +43,15 @@ schedcpu()
        register struct proc *p;
        register int s, a;
 
        register struct proc *p;
        register int s, a;
 
-       s = spl6(); time.tv_sec += lbolt / hz; lbolt %= hz; splx(s);
        wakeup((caddr_t)&lbolt);
        wakeup((caddr_t)&lbolt);
-
        for (p = proc; p < procNPROC; p++) if (p->p_stat && p->p_stat!=SZOMB) {
 #ifdef MUSH
        for (p = proc; p < procNPROC; p++) if (p->p_stat && p->p_stat!=SZOMB) {
 #ifdef MUSH
-               /*
-                * Charge process for memory in use
-                */
                if (p->p_quota->q_uid)
                        p->p_quota->q_cost +=
                            shconsts.sc_click * p->p_rssize;
 #endif
                if (p->p_time != 127)
                        p->p_time++;
                if (p->p_quota->q_uid)
                        p->p_quota->q_cost +=
                            shconsts.sc_click * p->p_rssize;
 #endif
                if (p->p_time != 127)
                        p->p_time++;
-               if (timerisset(&p->p_seltimer) &&
-                    --p->p_seltimer.tv_sec <= 0) {
-                       timerclear(&p->p_seltimer);
-                       s = spl6();
-                       switch (p->p_stat) {
-
-                       case SSLEEP:
-                               setrun(p);
-                               break;
-
-                       case SSTOP:
-                               unsleep(p);
-                               break;
-                       }
-                       splx(s);
-               }
-               if (timerisset(&p->p_realtimer.it_value) &&
-                   itimerdecr(&p->p_realtimer, 1000000) == 0)
-                       psignal(p, SIGALRM);
                if (p->p_stat==SSLEEP || p->p_stat==SSTOP)
                        if (p->p_slptime != 127)
                                p->p_slptime++;
                if (p->p_stat==SSLEEP || p->p_stat==SSTOP)
                        if (p->p_slptime != 127)
                                p->p_slptime++;
@@ -147,7 +93,7 @@ schedcpu()
        }
        if (bclnlist != NULL)
                wakeup((caddr_t)&proc[2]);
        }
        if (bclnlist != NULL)
                wakeup((caddr_t)&proc[2]);
-       timeout(schedcpu, 0, hz);
+       timeout(schedcpu, (caddr_t)0, hz);
 }
 
 #define SQSIZE 0100    /* Must be power of 2 */
 }
 
 #define SQSIZE 0100    /* Must be power of 2 */
@@ -211,49 +157,14 @@ out:
        /*
         * If priority was low (>PZERO) and
         * there has been a signal, execute non-local goto through
        /*
         * If priority was low (>PZERO) and
         * there has been a signal, execute non-local goto through
-        * u.u_qsav, aborting the system call in progress (see trap.c)
+        * u.u_qsave, aborting the system call in progress (see trap.c)
         * (or finishing a tsleep, see below)
         */
 psig:
         * (or finishing a tsleep, see below)
         */
 psig:
-       longjmp(u.u_qsav);
+       longjmp(&u.u_qsave);
        /*NOTREACHED*/
 }
 
        /*NOTREACHED*/
 }
 
-/*
- * Sleep on chan at pri for at most a specified amount of time.
- * Return (TS_OK,TS_TIME,TS_SIG) on (normal,timeout,signal) condition.
- */
-tsleep(chan, pri, tvp)
-       caddr_t chan;
-       int pri;
-       struct timeval *tvp;
-{
-       register struct proc *p = u.u_procp;
-       int s, rval;
-
-       s = spl7();
-       if (timercmp(tvp, &p->p_realtimer.it_value, >)) {
-               /* alarm will occur first! */
-               sleep(chan, pri);
-               rval = TS_OK;           /* almost NOTREACHED modulo fuzz */
-       } else {
-               label_t lqsav;
-
-               bcopy((caddr_t)u.u_qsav, (caddr_t)lqsav, sizeof (label_t));
-               p->p_seltimer = *tvp;
-               if (setjmp(u.u_qsav))
-                       rval = TS_SIG;
-               else {
-                       sleep(chan, pri);
-                       rval = TS_OK;
-               }
-               timerclear(&p->p_seltimer);
-               bcopy((caddr_t)lqsav, (caddr_t)u.u_qsav, sizeof (label_t));
-       }
-       splx(s);
-       return (rval);
-}
-
 /*
  * Remove a process from its wait queue
  */
 /*
  * Remove a process from its wait queue
  */