--- projects/libstatgrab/src/libstatgrab/page_stats.c 2005/09/24 13:29:22 1.23 +++ projects/libstatgrab/src/libstatgrab/page_stats.c 2010/10/03 18:35:58 1.24 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * - * $Id: page_stats.c,v 1.23 2005/09/24 13:29:22 tdb Exp $ + * $Id: page_stats.c,v 1.24 2010/10/03 18:35:58 tdb Exp $ */ #ifdef HAVE_CONFIG_H @@ -45,6 +45,12 @@ #include #include #endif +#ifdef AIX +#include +#endif +#ifdef HPUX +#include +#endif #ifdef WIN32 #include "win32.h" #endif @@ -70,6 +76,12 @@ sg_page_stats *sg_get_page_stats(){ #if defined(NETBSD) || defined(OPENBSD) struct uvmexp *uvm; #endif +#ifdef AIX + perfstat_memory_total_t mem; +#endif +#ifdef HPUX + struct pst_vminfo vminfo; +#endif page_stats.systime = time(NULL); page_stats.pages_pagein=0; @@ -149,6 +161,25 @@ sg_page_stats *sg_get_page_stats(){ page_stats.pages_pagein = uvm->pgswapin; page_stats.pages_pageout = uvm->pgswapout; +#endif +#ifdef AIX + /* return code is number of structures returned */ + if(perfstat_memory_total(NULL, &mem, sizeof(perfstat_memory_total_t), 1) != 1) { + sg_set_error_with_errno(SG_ERROR_SYSCTLBYNAME, "perfstat_memory_total"); + return NULL; + } + + page_stats.pages_pagein = mem.pgins; + page_stats.pages_pageout = mem.pgouts; +#endif +#ifdef HPUX + if( pstat_getvminfo( &vminfo, sizeof(vminfo), 1, 0 ) == -1 ) { + sg_set_error_with_errno(SG_ERROR_SYSCTLBYNAME, "pstat_getswap"); + return NULL; + }; + + page_stats.pages_pagein = vminfo.psv_spgin; + page_stats.pages_pageout = vminfo.psv_spgout; #endif #ifdef WIN32 sg_set_error(SG_ERROR_UNSUPPORTED, "Win32");