diff options
Diffstat (limited to 'lib/libkvm')
-rw-r--r-- | lib/libkvm/Makefile.depend | 19 | ||||
-rw-r--r-- | lib/libkvm/kvm_i386.c | 1 | ||||
-rw-r--r-- | lib/libkvm/kvm_proc.c | 12 |
3 files changed, 29 insertions, 3 deletions
diff --git a/lib/libkvm/Makefile.depend b/lib/libkvm/Makefile.depend new file mode 100644 index 0000000..a839545 --- /dev/null +++ b/lib/libkvm/Makefile.depend @@ -0,0 +1,19 @@ +# Autogenerated - do NOT edit! + +DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,} + +DEP_MACHINE := ${.PARSEFILE:E} + +DIRDEPS = \ + gnu/lib/libgcc \ + include \ + include/xlocale \ + lib/${CSU_DIR} \ + lib/libc \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/lib/libkvm/kvm_i386.c b/lib/libkvm/kvm_i386.c index a92979f..601126b 100644 --- a/lib/libkvm/kvm_i386.c +++ b/lib/libkvm/kvm_i386.c @@ -238,7 +238,6 @@ _kvm_initvtop(kvm_t *kd) return (-1); } kd->vmst->PTD = PTD; - return (0); kd->vmst->pae = 0; } return (0); diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c index 8fc415c..31258d7 100644 --- a/lib/libkvm/kvm_proc.c +++ b/lib/libkvm/kvm_proc.c @@ -144,6 +144,8 @@ kvm_proclist(kvm_t *kd, int what, int arg, struct proc *p, _kvm_err(kd, kd->program, "can't read proc at %p", p); return (-1); } + if (proc.p_state == PRS_NEW) + continue; if (proc.p_state != PRS_ZOMBIE) { if (KREAD(kd, (u_long)TAILQ_FIRST(&proc.p_threads), &mtd)) { @@ -591,9 +593,15 @@ liveout: nprocs = kvm_deadprocs(kd, op, arg, nl[1].n_value, nl[2].n_value, nprocs); + if (nprocs <= 0) { + _kvm_freeprocs(kd); + nprocs = 0; + } #ifdef notdef - size = nprocs * sizeof(struct kinfo_proc); - (void)realloc(kd->procbase, size); + else { + size = nprocs * sizeof(struct kinfo_proc); + kd->procbase = realloc(kd->procbase, size); + } #endif } *cnt = nprocs; |