projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
no swplo
[unix-history]
/
usr
/
src
/
sys
/
kern
/
kern_clock.c
diff --git
a/usr/src/sys/kern/kern_clock.c
b/usr/src/sys/kern/kern_clock.c
index
bede4fb
..
158a9a8
100644
(file)
--- a/
usr/src/sys/kern/kern_clock.c
+++ b/
usr/src/sys/kern/kern_clock.c
@@
-1,4
+1,4
@@
-/*
kern_clock.c 3.6 %H%
*/
+/*
%H% 3.12 kern_clock.c
*/
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
@@
-37,7
+37,7
@@
unsigned short kcount[20000];
* We handle regular calls to the dh and dz silo input processors
* without using timeouts to save a little time.
*/
* We handle regular calls to the dh and dz silo input processors
* without using timeouts to save a little time.
*/
-int rintvl =
4; /* every 1/15
'th of sec check receivers */
+int rintvl =
0; /* every 1/60
'th of sec check receivers */
int rcnt;
clock(pc, ps)
int rcnt;
clock(pc, ps)
@@
-46,7
+46,7
@@
caddr_t pc;
register struct callo *p1, *p2;
register struct proc *pp;
register int s;
register struct callo *p1, *p2;
register struct proc *pp;
register int s;
- int a;
+ int a
, cpstate
;
/*
* reprime clock
/*
* reprime clock
@@
-125,19
+125,20
@@
out:
if (s > u.u_vm.vm_maxrss)
u.u_vm.vm_maxrss = s;
}
if (s > u.u_vm.vm_maxrss)
u.u_vm.vm_maxrss = s;
}
- a = dk_busy&07;
if (USERMODE(ps)) {
u.u_vm.vm_utime++;
if(u.u_procp->p_nice > NZERO)
if (USERMODE(ps)) {
u.u_vm.vm_utime++;
if(u.u_procp->p_nice > NZERO)
- a += 8;
+ cpstate = CP_NICE;
+ else
+ cpstate = CP_USER;
} else {
} else {
-
a += 16
;
+
cpstate = CP_SYS
;
if (noproc)
if (noproc)
-
a += 8
;
+
cpstate = CP_IDLE
;
else
u.u_vm.vm_stime++;
}
else
u.u_vm.vm_stime++;
}
- dk_time[
a
]++;
+ dk_time[
cpstate][dk_busy&(DK_NSTATES-1)
]++;
if (!noproc) {
pp = u.u_procp;
if(++pp->p_cpu == 0)
if (!noproc) {
pp = u.u_procp;
if(++pp->p_cpu == 0)
@@
-169,12
+170,20
@@
out:
if(--pp->p_clktim == 0)
if (pp->p_flag & STIMO) {
s = spl6();
if(--pp->p_clktim == 0)
if (pp->p_flag & STIMO) {
s = spl6();
- if (pp->p_stat == SSLEEP)
+ switch (pp->p_stat) {
+
+ case SSLEEP:
setrun(pp);
setrun(pp);
+ break;
+
+ case SSTOP:
+ unsleep(pp);
+ break;
+ }
pp->p_flag &= ~STIMO;
splx(s);
} else
pp->p_flag &= ~STIMO;
splx(s);
} else
- psignal(pp, SIG
CLK
);
+ psignal(pp, SIG
ALRM
);
if(pp->p_stat==SSLEEP||pp->p_stat==SSTOP)
if (pp->p_slptime != 127)
pp->p_slptime++;
if(pp->p_stat==SSLEEP||pp->p_stat==SSTOP)
if (pp->p_slptime != 127)
pp->p_slptime++;
@@
-228,6
+237,8
@@
out:
}
#endif
}
}
#endif
}
+ if (!BASEPRI(ps))
+ unhang();
if (USERMODE(ps)) {
/*
* We do this last since it
if (USERMODE(ps)) {
/*
* We do this last since it