> This this patch to /usr/src/lib/libkvm/kvm_getswapinfo.c. Then > recompile libkvm and try top and pstat -s again.
>Index: kvm_getswapinfo.c >=================================================================== >RCS file: /home/ncvs/src/lib/libkvm/kvm_getswapinfo.c,v >retrieving revision 1.4 >diff -u -r1.4 kvm_getswapinfo.c >--- kvm_getswapinfo.c 1999/01/27 11:29:15 1.4 >+++ kvm_getswapinfo.c 1999/02/06 04:46:48 >@@ -127,10 +127,10 @@ > KGET(NL_NSWDEV, nswdev); > KGET(NL_DMMAX, dmmax); > >- if (kvm_swap_nl[NL_SWAPLIST].n_value) >+ if (kvm_swap_nl[NL_SWAPLIST].n_type != N_UNDF) > type = 1; > >- if (kvm_swap_nl[NL_SWAPBLIST].n_value) >+ if (kvm_swap_nl[NL_SWAPBLIST].n_type != N_UNDF) > type = 2; > > /* >@@ -406,6 +406,13 @@ > struct blist blcopy = { 0 }; > > KGET(NL_SWAPBLIST, swapblist); >+ >+ if (swapblist == NULL) { >+ if (flags & SWIF_DUMP_TREE) >+ printf("radix tree: NULL - no swap in system\n"); >+ return; >+ } >+ > KGET2(swapblist, &blcopy, sizeof(blcopy), "*swapblist"); > > if (flags & SWIF_DUMP_TREE) { This needs more work - library routines shouldn't print to stdout or stderr, especially when there is a function like kvm_geterr() for reporting errors. - no swap is not an error. - top still gets a SIGFPE (the bug is in top -- it divides by swpary[0].ksw_total which may be 0). - pstat and systat have the same bug as top. - libkvm is still bloated with support for old swapping methods, despite more important parts of libkvm not working with kernels more than a few days old because the proc struct changed significantly. Bruce To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-current" in the body of the message