[BACK]Return to pigs.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / systat

Diff for /src/usr.bin/systat/pigs.c between version 1.15 and 1.16

version 1.15, 2003/06/03 02:56:17 version 1.16, 2004/01/08 19:28:56
Line 64 
Line 64 
 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];
Line 91 
Line 91 
 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];
Line 115 
Line 115 
         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);
Line 165 
Line 165 
 {  {
         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);
Line 194 
Line 193 
          */           */
         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

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16