|
Packit |
0965bd |
#include "EXTERN.h"
|
|
Packit |
0965bd |
#include "perl.h"
|
|
Packit |
0965bd |
#include "XSUB.h"
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
MODULE = Sys::MemInfo PACKAGE = Sys::MemInfo
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
#include "arch/functions.h"
|
|
Packit |
0965bd |
#include <sys/param.h>
|
|
Packit |
0965bd |
#include <sys/pstat.h>
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
void
|
|
Packit |
0965bd |
availkeys()
|
|
Packit |
0965bd |
PREINIT:
|
|
Packit |
0965bd |
PPCODE:
|
|
Packit |
0965bd |
XPUSHs(sv_2mortal(newSVpv(_totalmem, strlen(_totalmem))));
|
|
Packit |
0965bd |
XPUSHs(sv_2mortal(newSVpv(_freemem, strlen(_freemem))));
|
|
Packit |
0965bd |
XPUSHs(sv_2mortal(newSVpv(_totalswap, strlen(_totalswap))));
|
|
Packit |
0965bd |
XPUSHs(sv_2mortal(newSVpv(_freeswap, strlen(_freeswap))));
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
double
|
|
Packit |
0965bd |
totalmem()
|
|
Packit |
0965bd |
PROTOTYPE: DISABLE
|
|
Packit |
0965bd |
CODE:
|
|
Packit |
0965bd |
struct pst_static pst_s;
|
|
Packit |
0965bd |
double pages = 0;
|
|
Packit |
0965bd |
double pagesize = 0;
|
|
Packit |
0965bd |
if (pstat_getstatic (&pst_s, sizeof (struct pst_static), 1, 0) >= 0)
|
|
Packit |
0965bd |
{
|
|
Packit |
0965bd |
pages = pst_s.physical_memory;
|
|
Packit |
0965bd |
pagesize = pst_s.page_size;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
RETVAL = (pages * pagesize);
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
double
|
|
Packit |
0965bd |
freemem()
|
|
Packit |
0965bd |
PROTOTYPE: DISABLE
|
|
Packit |
0965bd |
CODE:
|
|
Packit |
0965bd |
struct pst_static pst_s;
|
|
Packit |
0965bd |
struct pst_dynamic pst_d;
|
|
Packit |
0965bd |
double pages = 0;
|
|
Packit |
0965bd |
double pagesize = 0;
|
|
Packit |
0965bd |
if (pstat_getstatic (&pst_s, sizeof (struct pst_static), 1, 0) >=0 && pstat_getdynamic (&pst_d, sizeof (struct pst_dynamic), 1, 0) >=0)
|
|
Packit |
0965bd |
{
|
|
Packit |
0965bd |
pages = pst_d.psd_free;
|
|
Packit |
0965bd |
pagesize = pst_s.page_size;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
RETVAL = (pages * pagesize);
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
double
|
|
Packit |
0965bd |
totalswap()
|
|
Packit |
0965bd |
PROTOTYPE: DISABLE
|
|
Packit |
0965bd |
CODE:
|
|
Packit |
0965bd |
double ret= 0;
|
|
Packit |
0965bd |
struct pst_swapinfo pss;
|
|
Packit |
0965bd |
int i;
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
for (i = 0; pstat_getswap(&pss, sizeof(pss), (size_t)1, i); i++) {
|
|
Packit |
0965bd |
ret += pss.pss_nblksenabled;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
RETVAL = ret * 1024;
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
double
|
|
Packit |
0965bd |
freeswap()
|
|
Packit |
0965bd |
PROTOTYPE: DISABLE
|
|
Packit |
0965bd |
CODE:
|
|
Packit |
0965bd |
double ret= 0;
|
|
Packit |
0965bd |
struct pst_swapinfo pss;
|
|
Packit |
0965bd |
int i;
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
for (i = 0; pstat_getswap(&pss, sizeof(pss), (size_t)1, i); i++) {
|
|
Packit |
0965bd |
ret += pss.pss_nfpgs;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
RETVAL = ret * 4 * 1024;
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
# vim:et:ts=2:sts=2:sw=2
|