AIX-Perfstat
view release on metacpan or search on metacpan
safefree(cpu_total);
die("cpu_total: failed");
}
return cpu_total;
}
/* pack a number of (struct perfstat_cpu_t) into an array of hashes
* and put a reference to this array onto Perl stack
*/
void XS_pack_my_cpu_tPtr(SV *st, my_cpu_t *q)
{
AV *av = newAV();
SV *sv;
perfstat_cpu_t *p;
int i;
for (i = 0, p = q->data; i < (q->size); i++, p++)
{
HV *hv = newHV();
PACK_PV(name,0);
PACK_UV(user);
PACK_UV(sys);
PACK_UV(idle);
PACK_UV(wait);
PACK_UV(pswitch);
PACK_UV(syscall);
PACK_UV(sysread);
PACK_UV(syswrite);
PACK_UV(sysfork);
PACK_UV(sysexec);
PACK_UV(readch);
PACK_UV(writech);
PACK_UV(bread);
PACK_UV(bwrite);
PACK_UV(lread);
PACK_UV(lwrite);
PACK_UV(phread);
PACK_UV(phwrite);
av_push(av, newRV_noinc((SV*)hv));
}
/* put ref to hv onto stack */
sv = newSVrv(st, NULL);
SvREFCNT_dec(sv);
SvRV(st) = (SV*)av;
}
/* pack struct perfstat_cpu_total_t into a hash
* and put a reference to this hash onto Perl stack
*/
void XS_pack_perfstat_cpu_total_tPtr(SV *st, perfstat_cpu_total_t *p)
{
HV *hv = newHV();
SV *sv;
PACK_IV(ncpus);
PACK_IV(ncpus_cfg);
PACK_PV(description,0);
PACK_UV(processorHZ);
PACK_UV(user);
PACK_UV(sys);
PACK_UV(idle);
PACK_UV(wait);
PACK_UV(pswitch);
PACK_UV(syscall);
PACK_UV(sysread);
PACK_UV(syswrite);
PACK_UV(sysfork);
PACK_UV(sysexec);
PACK_UV(readch);
PACK_UV(writech);
PACK_UV(devintrs);
PACK_UV(softintrs);
PACK_IV(lbolt);
/* loadavg[3] */
{
AV *av = newAV();
int i;
for (i = 0; i < 3; i++)
{
av_push(av, newSVuv(p->loadavg[i]));
}
PACK_AV(loadavg);
}
PACK_UV(runque);
PACK_UV(swpque);
PACK_UV(bread);
PACK_UV(bwrite);
PACK_UV(lread);
PACK_UV(lwrite);
PACK_UV(phread);
PACK_UV(phwrite);
/* put ref to hv onto stack */
sv = newSVrv(st, NULL);
SvREFCNT_dec(sv);
SvRV(st) = (SV*)hv;
}
( run in 1.309 second using v1.01-cache-2.11-cpan-995e09ba956 )