> 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 [email protected]
with "unsubscribe freebsd-current" in the body of the message