Blame arch/tru64.xs

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