--- projects/libstatgrab/src/libstatgrab/tools.c 2003/10/19 00:25:30 1.8 +++ projects/libstatgrab/src/libstatgrab/tools.c 2003/10/19 02:03:02 1.9 @@ -27,10 +27,13 @@ #include #include #include -#ifdef FREEBSD +#ifdef ALLBSD #include #include #endif +#ifdef NETBSD +#include +#endif #include "tools.h" @@ -69,7 +72,7 @@ long long get_ll_match(char *line, regmatch_t *match){ } #endif -#ifdef FREEBSD +#ifdef ALLBSD kvm_t *get_kvm() { static kvm_t *kvmd = NULL; @@ -81,3 +84,33 @@ kvm_t *get_kvm() { return kvmd; } #endif + +#ifdef NETBSD +struct uvmexp *get_uvmexp() { + static u_long addr = 0; + static struct uvmexp uvm; + kvm_t *kvmd = get_kvm(); + + if (kvmd == NULL) { + return NULL; + } + + if (addr == 0) { + struct nlist symbols[] = { + { "_uvmexp" }, + { NULL } + }; + + if (kvm_nlist(kvmd, symbols) != 0) { + return NULL; + } + addr = symbols[0].n_value; + } + + if (kvm_read(kvmd, addr, &uvm, sizeof uvm) != sizeof uvm) { + return NULL; + } + return &uvm; +} +#endif +