-
- /*
- * We adjust the priority of the current process.
- * The priority of a process gets worse as it accumulates
- * CPU time. The cpu usage estimator (p_cpu) is increased here
- * and the formula for computing priorities (in kern_synch.c)
- * will compute a different value each time the p_cpu increases
- * by 4. The cpu usage estimator ramps up quite quickly when
- * the process is running (linearly), and decays away exponentially,
- * at a rate which is proportionally slower when the system is
- * busy. The basic principal is that the system will 90% forget
- * that a process used a lot of CPU time in 5*loadav seconds.
- * This causes the system to favor processes which haven't run
- * much recently, and to round-robin among other processes.
- */
- if (!noproc) {
- p = u.u_procp;
- p->p_cpticks++;
- if (++p->p_cpu == 0)
- p->p_cpu--;
-#ifdef MUSH
- p->p_quota->q_cost += (p->p_nice > NZERO ?
- (shconsts.sc_tic * ((2*NZERO)-p->p_nice)) / NZERO :
- shconsts.sc_tic) * (((int)avenrun[0]+2)/3);
-#endif
- if ((p->p_cpu&3) == 0) {
- (void) setpri(p);
- if (p->p_pri >= PUSER)
- p->p_pri = p->p_usrpri;
- }
- }
-
- /*
- * Increment the time-of-day, and schedule
- * processing of the callouts at a very low cpu priority,
- * so we don't keep the relatively high clock interrupt
- * priority any longer than necessary.
- */
- bumptime(&time, tick);
- setsoftclock();