Blame arch/sco.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 <stdio.h>
Packit 0965bd
#include <unistd.h>
Packit 0965bd
#include <sys/sysi86.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
		const long long pages = sysconf (_SC_USEABLE_MEMORY);
Packit 0965bd
		const long long pagesize = sysconf (_SC_PAGESIZE);
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
		const long pagesize = sysconf (_SC_PAGESIZE);
Packit 0965bd
		long freepages = 0;
Packit 0965bd
		long l1=0;
Packit 0965bd
		long l2=0;
Packit 0965bd
		double ret = 0;
Packit 0965bd
		int kmem;
Packit 0965bd
		if (getksym("mem_freepages", &l1, &l2) != -1) {
Packit 0965bd
Packit 0965bd
			if ((kmem = open("/dev/kmem", O_RDONLY)) != -1 && lseek(kmem, l1, SEEK_SET)  != -1 &&
Packit 0965bd
				read(kmem, &freepages, sizeof(freepages)) == -1) {
Packit 0965bd
				ret = (freepages * pagesize);
Packit 0965bd
			}
Packit 0965bd
			close(kmem);
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
		double ret = 0;
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
		double ret = 0;
Packit 0965bd
		RETVAL = ret;
Packit 0965bd
	OUTPUT:
Packit 0965bd
		RETVAL
Packit 0965bd
Packit 0965bd
# vim:et:ts=2:sts=2:sw=2