[BACK]Return to kvm_proc.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libkvm

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libkvm/kvm_proc.c between version 1.38 and 1.39

version 1.38, 2000/06/29 06:34:25 version 1.39, 2000/07/16 02:04:11
Line 151  struct miniproc {
Line 151  struct miniproc {
         } while (/*CONSTCOND*/0);          } while (/*CONSTCOND*/0);
   
   
 #define PTRTOINT64(foo) ((u_int64_t)(uintptr_t)(foo))  #define PTRTOINT64(foo) ((u_int64_t)(u_long)(void *)(foo))
   
 #define KREAD(kd, addr, obj) \  #define KREAD(kd, addr, obj) \
         (kvm_read(kd, addr, (obj), sizeof(*obj)) != sizeof(*obj))          (kvm_read(kd, addr, (obj), sizeof(*obj)) != sizeof(*obj))
Line 469  kvm_getproc2(kd, op, arg, esize, cnt)
Line 469  kvm_getproc2(kd, op, arg, esize, cnt)
         int mib[6], st, nprocs;          int mib[6], st, nprocs;
         struct user user;          struct user user;
   
         if (esize < 0)  
                 return NULL;  
   
         if (kd->procbase2 != NULL) {          if (kd->procbase2 != NULL) {
                 free(kd->procbase2);                  free(kd->procbase2);
                 /*                  /*
Line 516  kvm_getproc2(kd, op, arg, esize, cnt)
Line 513  kvm_getproc2(kd, op, arg, esize, cnt)
                         return NULL;                          return NULL;
   
                 kd->procbase2 = _kvm_malloc(kd, nprocs * esize);                  kd->procbase2 = _kvm_malloc(kd, nprocs * esize);
                 kp2c = (char *)kd->procbase2;                  kp2c = (char *)(void *)kd->procbase2;
                 kp2p = &kp2;                  kp2p = &kp2;
                 for (i = 0; i < nprocs; i++, kp++) {                  for (i = 0; i < nprocs; i++, kp++) {
                         memset(kp2p, 0, sizeof(kp2));                          memset(kp2p, 0, sizeof(kp2));
Line 552  kvm_getproc2(kd, op, arg, esize, cnt)
Line 549  kvm_getproc2(kd, op, arg, esize, cnt)
                         kp2p->p_gid = kp->kp_eproc.e_ucred.cr_gid;                          kp2p->p_gid = kp->kp_eproc.e_ucred.cr_gid;
                         kp2p->p_rgid = kp->kp_eproc.e_pcred.p_rgid;                          kp2p->p_rgid = kp->kp_eproc.e_pcred.p_rgid;
   
                           /*CONSTCOND*/
                         memcpy(kp2p->p_groups, kp->kp_eproc.e_ucred.cr_groups,                          memcpy(kp2p->p_groups, kp->kp_eproc.e_ucred.cr_groups,
                             MIN(sizeof(kp2p->p_groups), sizeof(kp->kp_eproc.e_ucred.cr_groups)));                              MIN(sizeof(kp2p->p_groups), sizeof(kp->kp_eproc.e_ucred.cr_groups)));
                         kp2p->p_ngroups = kp->kp_eproc.e_ucred.cr_ngroups;                          kp2p->p_ngroups = kp->kp_eproc.e_ucred.cr_ngroups;
Line 596  kvm_getproc2(kd, op, arg, esize, cnt)
Line 594  kvm_getproc2(kd, op, arg, esize, cnt)
                         kp2p->p_xstat = kp->kp_proc.p_xstat;                          kp2p->p_xstat = kp->kp_proc.p_xstat;
                         kp2p->p_acflag = kp->kp_proc.p_acflag;                          kp2p->p_acflag = kp->kp_proc.p_acflag;
   
                           /*CONSTCOND*/
                         strncpy(kp2p->p_comm, kp->kp_proc.p_comm,                          strncpy(kp2p->p_comm, kp->kp_proc.p_comm,
                             MIN(sizeof(kp2p->p_comm), sizeof(kp->kp_proc.p_comm)));                              MIN(sizeof(kp2p->p_comm), sizeof(kp->kp_proc.p_comm)));
   
Line 609  kvm_getproc2(kd, op, arg, esize, cnt)
Line 608  kvm_getproc2(kd, op, arg, esize, cnt)
                         kp2p->p_vm_dsize = kp->kp_eproc.e_vm.vm_dsize;                          kp2p->p_vm_dsize = kp->kp_eproc.e_vm.vm_dsize;
                         kp2p->p_vm_ssize = kp->kp_eproc.e_vm.vm_ssize;                          kp2p->p_vm_ssize = kp->kp_eproc.e_vm.vm_ssize;
   
                         kp2p->p_eflag = kp->kp_eproc.e_flag;                          kp2p->p_eflag = (int32_t)kp->kp_eproc.e_flag;
   
                         if (P_ZOMBIE(&kp->kp_proc) || kp->kp_proc.p_addr == NULL ||                          if (P_ZOMBIE(&kp->kp_proc) || kp->kp_proc.p_addr == NULL ||
                             KREAD(kd, (u_long)kp->kp_proc.p_addr, &user)) {                              KREAD(kd, (u_long)kp->kp_proc.p_addr, &user)) {
Line 617  kvm_getproc2(kd, op, arg, esize, cnt)
Line 616  kvm_getproc2(kd, op, arg, esize, cnt)
                         } else {                          } else {
                                 kp2p->p_uvalid = 1;                                  kp2p->p_uvalid = 1;
   
                                 kp2p->p_ustart_sec = user.u_stats.p_start.tv_sec;                                  kp2p->p_ustart_sec = (u_int32_t)
                                 kp2p->p_ustart_usec = user.u_stats.p_start.tv_usec;                                      user.u_stats.p_start.tv_sec;
                                   kp2p->p_ustart_usec = (u_int32_t)
                                 kp2p->p_uutime_sec = user.u_stats.p_ru.ru_utime.tv_sec;                                      user.u_stats.p_start.tv_usec;
                                 kp2p->p_uutime_usec = user.u_stats.p_ru.ru_utime.tv_usec;  
                                 kp2p->p_ustime_sec = user.u_stats.p_ru.ru_stime.tv_sec;                                  kp2p->p_uutime_sec = (u_int32_t)
                                 kp2p->p_ustime_usec = user.u_stats.p_ru.ru_stime.tv_usec;                                      user.u_stats.p_ru.ru_utime.tv_sec;
                                   kp2p->p_uutime_usec = (u_int32_t)
                                       user.u_stats.p_ru.ru_utime.tv_usec;
                                   kp2p->p_ustime_sec = (u_int32_t)
                                       user.u_stats.p_ru.ru_stime.tv_sec;
                                   kp2p->p_ustime_usec = (u_int32_t)
                                       user.u_stats.p_ru.ru_stime.tv_usec;
   
                                 kp2p->p_uru_maxrss = user.u_stats.p_ru.ru_maxrss;                                  kp2p->p_uru_maxrss = user.u_stats.p_ru.ru_maxrss;
                                 kp2p->p_uru_ixrss = user.u_stats.p_ru.ru_ixrss;                                  kp2p->p_uru_ixrss = user.u_stats.p_ru.ru_ixrss;
Line 640  kvm_getproc2(kd, op, arg, esize, cnt)
Line 645  kvm_getproc2(kd, op, arg, esize, cnt)
                                 kp2p->p_uru_nvcsw = user.u_stats.p_ru.ru_nvcsw;                                  kp2p->p_uru_nvcsw = user.u_stats.p_ru.ru_nvcsw;
                                 kp2p->p_uru_nivcsw = user.u_stats.p_ru.ru_nivcsw;                                  kp2p->p_uru_nivcsw = user.u_stats.p_ru.ru_nivcsw;
   
                                 kp2p->p_uctime_sec = user.u_stats.p_cru.ru_utime.tv_sec +                                  kp2p->p_uctime_sec = (u_int32_t)
                                     user.u_stats.p_cru.ru_stime.tv_sec;                                      (user.u_stats.p_cru.ru_utime.tv_sec +
                                 kp2p->p_uctime_usec = user.u_stats.p_cru.ru_utime.tv_usec +                                      user.u_stats.p_cru.ru_stime.tv_sec);
                                     user.u_stats.p_cru.ru_stime.tv_usec;                                  kp2p->p_uctime_usec = (u_int32_t)
                                       (user.u_stats.p_cru.ru_utime.tv_usec +
                                       user.u_stats.p_cru.ru_stime.tv_usec);
                         }                          }
   
                         memcpy(kp2c, &kp2, esize);                          memcpy(kp2c, &kp2, esize);
Line 1002  kvm_doargv2(kd, pid, type, nchr)
Line 1009  kvm_doargv2(kd, pid, type, nchr)
         int nchr;          int nchr;
 {  {
         size_t bufs;          size_t bufs;
         int narg, newarglen, mib[4];          int narg, mib[4];
           size_t newarglen;
         char **ap, *bp, *endp;          char **ap, *bp, *endp;
   
         /*          /*
Line 1051  kvm_doargv2(kd, pid, type, nchr)
Line 1059  kvm_doargv2(kd, pid, type, nchr)
                         return NULL;                          return NULL;
                 kd->arglen = newarglen;                  kd->arglen = newarglen;
         }          }
         memset(kd->argspc, 0, kd->arglen);      /* XXX necessary? */          memset(kd->argspc, 0, (size_t)kd->arglen);      /* XXX necessary? */
   
         mib[0] = CTL_KERN;          mib[0] = CTL_KERN;
         mib[1] = KERN_PROC_ARGS;          mib[1] = KERN_PROC_ARGS;

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.39

CVSweb <webmaster@jp.NetBSD.org>