--- projects/libstatgrab/src/libstatgrab/page_stats.c 2004/01/19 16:49:21 1.14 +++ projects/libstatgrab/src/libstatgrab/page_stats.c 2004/02/12 23:04:52 1.15 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * - * $Id: page_stats.c,v 1.14 2004/01/19 16:49:21 tdb Exp $ + * $Id: page_stats.c,v 1.15 2004/02/12 23:04:52 tdb Exp $ */ #ifdef HAVE_CONFIG_H @@ -41,6 +41,12 @@ #include #include #endif +#ifdef OPENBSD +#include +#include +#include +#include +#endif static page_stat_t page_stats; static int page_stats_uninit=1; @@ -58,9 +64,13 @@ page_stat_t *get_page_stats(){ #ifdef FREEBSD size_t size; #endif -#ifdef NETBSD +#if defined(NETBSD) || defined(OPENBSD) struct uvmexp *uvm; #endif +#ifdef OPENBSD + int mib[2]; + size_t size; +#endif page_stats.systime = time(NULL); page_stats.pages_pagein=0; @@ -129,8 +139,31 @@ page_stat_t *get_page_stats(){ if ((uvm = get_uvmexp()) == NULL) { return NULL; } +#endif +#ifdef OPENBSD + mib[0] = CTL_VM; + mib[1] = VM_UVMEXP; + + if (sysctl(mib, 2, NULL, &size, NULL, 0) < 0) { + return NULL; + } + + uvm = malloc(size); + if (uvm == NULL) { + return NULL; + } + + if (sysctl(mib, 2, uvm, &size, NULL, 0) < 0) { + return NULL; + } +#endif +#if defined(NETBSD) || defined(OPENBSD) page_stats.pages_pagein = uvm->pgswapin; page_stats.pages_pageout = uvm->pgswapout; +#endif + +#ifdef OPENBSD + free(uvm); #endif return &page_stats;