version 1.15, 2003/06/03 02:56:17 |
version 1.16, 2004/01/08 19:28:56 |
|
|
static int nproc; |
static int nproc; |
static struct p_times { |
static struct p_times { |
float pt_pctcpu; |
float pt_pctcpu; |
struct kinfo_proc *pt_kp; |
struct kinfo_proc2 *pt_kp; |
} *pt; |
} *pt; |
|
|
static long stime[CPUSTATES]; |
static long stime[CPUSTATES]; |
|
|
showpigs(void) |
showpigs(void) |
{ |
{ |
int i, j, y, k; |
int i, j, y, k; |
struct eproc *ep; |
struct kinfo_proc2 *kp; |
float total; |
float total; |
int factor; |
int factor; |
char *uname, *pname, pidname[30]; |
char *uname, *pname, pidname[30]; |
|
|
if (i > wnd->_maxy-1) |
if (i > wnd->_maxy-1) |
i = wnd->_maxy-1; |
i = wnd->_maxy-1; |
for (k = 0; i > 0 && pt[k].pt_pctcpu > 0.01; i--, y++, k++) { |
for (k = 0; i > 0 && pt[k].pt_pctcpu > 0.01; i--, y++, k++) { |
if (pt[k].pt_kp == NULL) { |
kp = pt[k].pt_kp; |
|
if (kp == NULL) { |
uname = ""; |
uname = ""; |
pname = "<idle>"; |
pname = "<idle>"; |
} else { |
} else { |
ep = &pt[k].pt_kp->kp_eproc; |
uname = user_from_uid(kp->p_uid, 0); |
uname = user_from_uid(ep->e_ucred.cr_uid, 0); |
pname = kp->p_comm; |
pname = pt[k].pt_kp->kp_proc.p_comm; |
|
} |
} |
wmove(wnd, y, 0); |
wmove(wnd, y, 0); |
wclrtoeol(wnd); |
wclrtoeol(wnd); |
|
|
{ |
{ |
static int cp_time_mib[] = { CTL_KERN, KERN_CPTIME }; |
static int cp_time_mib[] = { CTL_KERN, KERN_CPTIME }; |
static int lastnproc = 0; |
static int lastnproc = 0; |
struct kinfo_proc *kpp; |
struct kinfo_proc2 *kpp; |
long ctime[CPUSTATES]; |
long ctime[CPUSTATES]; |
float time; |
|
double t; |
double t; |
int i; |
int i; |
size_t size; |
size_t size; |
struct proc *pp; |
float *pctp;; |
float *pctp; |
|
|
|
if ((kpp = kvm_getprocs(kd, KERN_PROC_KTHREAD, 0, &nproc)) == NULL) { |
kpp = kvm_getproc2(kd, KERN_PROC_KTHREAD, 0, sizeof(*kpp), &nproc); |
|
if (kpp == NULL) { |
error("%s", kvm_geterr(kd)); |
error("%s", kvm_geterr(kd)); |
if (pt) |
if (pt) |
free(pt); |
free(pt); |
|
|
*/ |
*/ |
for (i = 0; i < nproc; i++) { |
for (i = 0; i < nproc; i++) { |
pt[i].pt_kp = &kpp[i]; |
pt[i].pt_kp = &kpp[i]; |
pp = &kpp[i].kp_proc; |
|
pctp = &pt[i].pt_pctcpu; |
pctp = &pt[i].pt_pctcpu; |
time = pp->p_swtime; |
if (kpp->p_swtime == 0 || (kpp->p_flag & P_INMEM) == 0) |
if (time == 0 || (pp->p_flag & P_INMEM) == 0) |
|
*pctp = 0; |
*pctp = 0; |
else |
else |
*pctp = ((double) pp->p_pctcpu / |
*pctp = ((double) kpp->p_pctcpu / sysload.fscale) / |
sysload.fscale) / (1.0 - exp(time * lccpu)); |
(1.0 - exp(kpp->p_swtime * lccpu)); |
} |
} |
/* |
/* |
* and for the imaginary "idle" process |
* and for the imaginary "idle" process |