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; |