|
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 <sys/sysinfo.h>
|
|
Packit |
0965bd |
#include <sys/table.h>
|
|
Packit |
0965bd |
#include <machine/hal_sysinfo.h>
|
|
Packit |
0965bd |
#include <mach.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 |
long totalmem;
|
|
Packit |
0965bd |
int pos = -1;
|
|
Packit |
0965bd |
double ret = 0;
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
if (getsysinfo(GSI_PHYSMEM, (caddr_t)&totalmem, sizeof(totalmem), &pos, NULL, NULL)>0) {
|
|
Packit |
0965bd |
ret = totalmem * 1024;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
RETVAL = ret;
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
double
|
|
Packit |
0965bd |
freemem()
|
|
Packit |
0965bd |
PROTOTYPE: DISABLE
|
|
Packit |
0965bd |
CODE:
|
|
Packit |
0965bd |
struct vm_statistics vm_stat;
|
|
Packit |
0965bd |
double ret = 0;
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
if (vm_statistics(current_task(), &vm_stat) == 0) {
|
|
Packit |
0965bd |
ret = vm_stat.free_count * vm_stat.pagesize;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
RETVAL = ret;
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
double
|
|
Packit |
0965bd |
totalswap()
|
|
Packit |
0965bd |
PROTOTYPE: DISABLE
|
|
Packit |
0965bd |
CODE:
|
|
Packit |
0965bd |
int i=0;
|
|
Packit |
0965bd |
double ret = 0;
|
|
Packit |
0965bd |
struct tbl_swapinfo swbuf;
|
|
Packit |
0965bd |
while(table(TBL_SWAPINFO,i,&swbuf,1,sizeof(struct tbl_swapinfo))>0) {
|
|
Packit |
0965bd |
ret += swbuf.size;
|
|
Packit |
0965bd |
i++;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
RETVAL = ret;
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
double
|
|
Packit |
0965bd |
freeswap()
|
|
Packit |
0965bd |
PROTOTYPE: DISABLE
|
|
Packit |
0965bd |
CODE:
|
|
Packit |
0965bd |
int i=0;
|
|
Packit |
0965bd |
double ret = 0;
|
|
Packit |
0965bd |
struct tbl_swapinfo swbuf;
|
|
Packit |
0965bd |
while(table(TBL_SWAPINFO,i,&swbuf,1,sizeof(struct tbl_swapinfo))>0) {
|
|
Packit |
0965bd |
ret += swbuf.free;
|
|
Packit |
0965bd |
i++;
|
|
Packit |
0965bd |
}
|
|
Packit |
0965bd |
RETVAL = ret;
|
|
Packit |
0965bd |
OUTPUT:
|
|
Packit |
0965bd |
RETVAL
|
|
Packit |
0965bd |
|
|
Packit |
0965bd |
# vim:et:ts=2:sts=2:sw=2
|