X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLinux-SysInfo.git;a=blobdiff_plain;f=SysInfo.xs;h=8e4f0dc24542bee2ee4685f51f43802472c12b1e;hp=94cdf9719f2afb3ce8a5dbb890cf1ada48737924;hb=HEAD;hpb=605feb1508d21fe241615a0204e28de4aa4a122e diff --git a/SysInfo.xs b/SysInfo.xs index 94cdf97..8e4f0dc 100644 --- a/SysInfo.xs +++ b/SysInfo.xs @@ -10,7 +10,8 @@ #include "perl.h" #include "XSUB.h" -#define __PACKAGE__ "Linux::SysInfo" +#define __PACKAGE__ "Linux::SysInfo" +#define __PACKAGE_LEN__ (sizeof(__PACKAGE__)-1) /* --- Extended fields ----------------------------------------------------- */ @@ -32,7 +33,7 @@ # define LS_KEY_STORE(H,K,V) hv_store((H), LS_KEY(K), sizeof(#K)-1, \ (V), LS_HASH(K)) #else -# if PERL_REVISION >= 5 && PERL_VERSION >= 9 && PERL_SUBVERSION >= 3 +# if PERL_REVISION > 5 || (PERL_REVISION == 5 && (PERL_VERSION > 9 || (PERL_VERSION == 9 && PERL_SUBVERSION >= 3))) /* From perl-5.9.3 (#24802), the key is only a SVt_PV and one can get the hash * value with the SvSHARED_HASH() macro. */ # define LS_HASH(K) SvSHARED_HASH(LS_KEY(K)) @@ -71,7 +72,7 @@ PROTOTYPES: ENABLE BOOT: { HV *stash; - stash = gv_stashpv(__PACKAGE__, TRUE); + stash = gv_stashpvn(__PACKAGE__, __PACKAGE_LEN__, TRUE); newCONSTSUB(stash, "LS_HAS_EXTENDED", newSViv(LS_HAS_EXTENDED)); LS_KEY_DEFINE(uptime); @@ -93,40 +94,39 @@ BOOT: } SV *sysinfo() +PROTOTYPE: PREINIT: struct sysinfo si; NV l; - HV *h; + HV *hv; CODE: - if (sysinfo(&si) == -1) { - XSRETURN_UNDEF; - } + if (sysinfo(&si) == -1) XSRETURN_UNDEF; - h = newHV(); + hv = newHV(); - LS_KEY_STORE(h, uptime, newSViv(si.uptime)); + LS_KEY_STORE(hv, uptime, newSViv(si.uptime)); l = ((NV) si.loads[0]) / ((NV) (((U32) 1) << ((U32) SI_LOAD_SHIFT))); - LS_KEY_STORE(h, load1, newSVnv(l)); + LS_KEY_STORE(hv, load1, newSVnv(l)); l = ((NV) si.loads[1]) / ((NV) (((U32) 1) << ((U32) SI_LOAD_SHIFT))); - LS_KEY_STORE(h, load5, newSVnv(l)); + LS_KEY_STORE(hv, load5, newSVnv(l)); l = ((NV) si.loads[2]) / ((NV) (((U32) 1) << ((U32) SI_LOAD_SHIFT))); - LS_KEY_STORE(h, load15, newSVnv(l)); - - LS_KEY_STORE(h, totalram, newSVuv(si.totalram)); - LS_KEY_STORE(h, freeram, newSVuv(si.freeram)); - LS_KEY_STORE(h, sharedram, newSVuv(si.sharedram)); - LS_KEY_STORE(h, bufferram, newSVuv(si.bufferram)); - LS_KEY_STORE(h, totalswap, newSVuv(si.totalswap)); - LS_KEY_STORE(h, freeswap, newSVuv(si.freeswap)); - LS_KEY_STORE(h, procs, newSVuv(si.procs)); + LS_KEY_STORE(hv, load15, newSVnv(l)); + + LS_KEY_STORE(hv, totalram, newSVuv(si.totalram)); + LS_KEY_STORE(hv, freeram, newSVuv(si.freeram)); + LS_KEY_STORE(hv, sharedram, newSVuv(si.sharedram)); + LS_KEY_STORE(hv, bufferram, newSVuv(si.bufferram)); + LS_KEY_STORE(hv, totalswap, newSVuv(si.totalswap)); + LS_KEY_STORE(hv, freeswap, newSVuv(si.freeswap)); + LS_KEY_STORE(hv, procs, newSVuv(si.procs)); #if LS_HAS_EXTENDED - LS_KEY_STORE(h, totalhigh, newSVuv(si.totalhigh)); - LS_KEY_STORE(h, freehigh, newSVuv(si.freehigh)); - LS_KEY_STORE(h, mem_unit, newSVuv(si.mem_unit)); + LS_KEY_STORE(hv, totalhigh, newSVuv(si.totalhigh)); + LS_KEY_STORE(hv, freehigh, newSVuv(si.freehigh)); + LS_KEY_STORE(hv, mem_unit, newSVuv(si.mem_unit)); #endif /* LS_HAS_EXTENDED */ - RETVAL = newRV_noinc((SV *) h); + RETVAL = newRV_noinc((SV *) hv); OUTPUT: RETVAL