Solaris-Kvm
view release on metacpan or search on metacpan
GElf_Shdr shdr;
Elf_Data *data;
GElf_Sym sym;
kvm_dev_t *kd;
kvm_var_t *kv;
char *p;
char *n;
char *t;
char errstr[1024];
int i, fd, ii, count;
PPCODE:
hash = newHV();
ret = (SV*)newRV_noinc((SV*)hash);
stash = gv_stashpv(class,TRUE);
sv_bless(ret,stash);
stash = gv_stashpv(class,TRUE);
sv_bless(ret,stash);
Newz(0,kd,sizeof(kvm_dev_t),kvm_dev_t);
void
rAUTOLOAD(self,prop,...)
SV *self;
SV *prop;
PREINIT:
MAGIC *mg;
SV *ref;
STRLEN plen;
char *pval;
int i;
PPCODE:
mg = mg_find(SvRV(self), 'P');
if(!mg) { croak("lost P magic"); }
ref = mg->mg_obj;
PUSHMARK(SP);
XPUSHs(ref);
for(i=2; i<items; i++)
XPUSHs(ST(i));
call_method(SvPV(prop,PL_na), G_SCALAR);
void
HV *hash;
char *k;
STRLEN klen;
MAGIC *mg;
SV **val;
kvm_dev_t *kp;
kvm_var_t *kv;
struct nlist *nl;
char *t;
int i;
PPCODE:
hash = (HV*)SvRV(self);
k = SvPV(key, klen);
mg = mg_find(SvRV(self),'~');
if(!mg) { croak("lost ~ magic"); }
kp = (kvm_dev_t*)SvIVX(mg->mg_obj);
val = hv_fetch(hash, k, klen, FALSE);
if (!val)
croak("kernel variable %s does not exist", k);
kv = (kvm_var_t*)SvIV(*val);
RETVAL = hv_exists_ent(hash, key, 0);
OUTPUT:
RETVAL
SV*
FIRSTKEY(self)
SV *self;
PREINIT:
HV *hash;
HE *he;
PPCODE:
hash = (HV*)SvRV(self);
hv_iterinit(hash);
if (he = hv_iternext(hash)) {
EXTEND(sp, 1);
PUSHs(hv_iterkeysv(he));
}
SV*
NEXTKEY(self, lastkey)
SV *self;
SV *lastkey;
PREINIT:
HV *hash;
HE *he;
PPCODE:
hash = (HV*)SvRV(self);
if (he = hv_iternext(hash)) {
EXTEND(sp, 1);
PUSHs(hv_iterkeysv(he));
}
SV*
DELETE(self, key)
SV *self;
SV *key;
Solaris::Kvm::Stat::type = F_TYPE
Solaris::Kvm::Stat::visibility = F_VISB
PREINIT:
HV *hash;
SV **var;
SV *ret;
char *pval;
STRLEN plen;
kvm_var_t *kv;
int i;
PPCODE:
hash = (HV*)SvRV(self);
pval = SvPV(prop, plen);
var = hv_fetch(hash, pval, plen, FALSE);
if(var) {
kv = (kvm_var_t*)SvIV(*var);
switch(ix) {
case F_SIZE:
ret = newSViv(kv->var_size);
break;
( run in 0.578 second using v1.01-cache-2.11-cpan-5511b514fd6 )