Solaris-Kvm

 view release on metacpan or  search on metacpan

Kvm.xs  view on Meta::CPAN

   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);

Kvm.xs  view on Meta::CPAN

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

Kvm.xs  view on Meta::CPAN

   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);

Kvm.xs  view on Meta::CPAN

   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;

Kvm.xs  view on Meta::CPAN

   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 )