Pvm

 view release on metacpan or  search on metacpan

Pvm.c  view on Meta::CPAN

	ST(0) = sv_newmortal();
	sv_setiv(ST(0), (IV)RETVAL);
    }
    XSRETURN(1);
}

XS(XS_Pvm_psend)
{
    dXSARGS;
    if (items < 2)
	croak("Usage: Pvm::psend(tid,tag,...)");
    {
	int	tid = (int)SvIV(ST(0));
	int	tag = (int)SvIV(ST(1));
	int i;
	char *str, *po;
	int	RETVAL;
	for(i=2;i<items;i++){
	   po = (char *)SvPV(ST(i),na);
           if ( i == 2 ) {
              str = buffer_string(po,1);
           } else{
              str = buffer_string(po,0);
           }
	}
	if ( items == 2 ){
	   str = (char *)calloc(1,sizeof(char));
	   str[0] = '\0';
	}
	RETVAL = pvm_psend(tid,tag,str,string_byte_cnt(str),PVM_BYTE);
	ST(0) = sv_newmortal();
	sv_setiv(ST(0), (IV)RETVAL);
    }
    XSRETURN(1);
}

XS(XS_Pvm_mcast)
{
    dXSARGS;
    {
	int i;
	int tag_num;
	int proc_num;
	int tids[MAXPROCS];
	int tag;
	int	RETVAL;
	if ( items < 2 )
	   croak("Usage: Pvm::pvm_mcast(tids_list,tag)");
	for (i=0;i<items-1;i++){
	  tids[i] = SvIV(ST(i));
	}
	proc_num = tag_num = items-1;
	tag = SvIV(ST(tag_num));
	RETVAL = pvm_mcast(tids,proc_num,tag);
	ST(0) = sv_newmortal();
	sv_setiv(ST(0), (IV)RETVAL);
    }
    XSRETURN(1);
}

XS(XS_Pvm_sendsig)
{
    dXSARGS;
    if (items != 2)
	croak("Usage: Pvm::sendsig(tid,sig)");
    {
	int	tid = (int)SvIV(ST(0));
	int	sig = (int)SvIV(ST(1));
	int	RETVAL;
	RETVAL = pvm_sendsig(tid,sig);
	ST(0) = sv_newmortal();
	sv_setiv(ST(0), (IV)RETVAL);
    }
    XSRETURN(1);
}

XS(XS_Pvm_probe)
{
    dXSARGS;
    if (items < 0 || items > 2)
	croak("Usage: Pvm::probe(tid=-1,tag=-1)");
    {
	int	tid;
	int	tag;
	int	RETVAL;

	if (items < 1)
	    tid = -1;
	else {
	    tid = (int)SvIV(ST(0));
	}

	if (items < 2)
	    tag = -1;
	else {
	    tag = (int)SvIV(ST(1));
	}
	RETVAL = pvm_probe(tid,tag);
	ST(0) = sv_newmortal();
	sv_setiv(ST(0), (IV)RETVAL);
    }
    XSRETURN(1);
}

XS(XS_Pvm_recv)
{
    dXSARGS;
    if (items < 0 || items > 2)
	croak("Usage: Pvm::recv(tid=-1,tag=-1)");
    {
	int	tid;
	int	tag;
	int	RETVAL;

	if (items < 1)
	    tid = -1;
	else {
	    tid = (int)SvIV(ST(0));
	}

	if (items < 2)
	    tag = -1;
	else {
	    tag = (int)SvIV(ST(1));
	}
	RETVAL = pvm_recv(tid,tag);
	ST(0) = sv_newmortal();
	sv_setiv(ST(0), (IV)RETVAL);
    }
    XSRETURN(1);

Pvm.c  view on Meta::CPAN

	XPUSHs(sv_2mortal(newRV((SV *)hv_tmp)));
	sec = delta.tv_sec;
	usec = delta.tv_usec;
	/* set up hash entry */
	hv_tmp = newHV();
	hv_store(hv_tmp,"tv_sec",6,newSViv(sec),0);
	hv_store(hv_tmp,"hi_usec",7,newSViv(usec),0);
	/* create reference and stick in on the stack */
	XPUSHs(sv_2mortal(newRV((SV *)hv_tmp)));
	PUTBACK;
	return;
    }
}

XS(XS_Pvm_recvf)
{
    dXSARGS;
    if (items != 1)
	croak("Usage: Pvm::recvf(fn)");
    {
	SV *	fn = ST(0);
	if ( recvf_callback == (SV *)NULL ){
	   recvf_callback = newSVsv(fn);
	}else{
	   sv_setsv(recvf_callback,fn);
	}
	olmatch = pvm_recvf(recvf_foo);
    }
    XSRETURN(1);
}

XS(XS_Pvm_recvf_old)
{
    dXSARGS;
    if (items != 0)
	croak("Usage: Pvm::recvf_old()");
    {
	if ( olmatch !=  NULL ){
	   pvm_recvf(olmatch);
	}
    }
    XSRETURN(1);
}

#ifdef __cplusplus
extern "C"
#endif
XS(boot_Pvm)
{
    dXSARGS;
    char* file = __FILE__;

    XS_VERSION_BOOTCHECK ;

        newXS("Pvm::constant", XS_Pvm_constant, file);
        newXSproto("Pvm::spawn", XS_Pvm_spawn, file, "$$;$$");
        newXSproto("Pvm::initsend", XS_Pvm_initsend, file, ";$");
        newXSproto("Pvm::send", XS_Pvm_send, file, "$$");
        newXSproto("Pvm::psend", XS_Pvm_psend, file, "$$;@");
        newXSproto("Pvm::mcast", XS_Pvm_mcast, file, "@");
        newXSproto("Pvm::sendsig", XS_Pvm_sendsig, file, "$$");
        newXSproto("Pvm::probe", XS_Pvm_probe, file, ";$$");
        newXSproto("Pvm::recv", XS_Pvm_recv, file, ";$$");
        newXSproto("Pvm::nrecv", XS_Pvm_nrecv, file, ";$$");
        newXSproto("Pvm::trecv", XS_Pvm_trecv, file, ";$$$$");
        newXSproto("Pvm::precv", XS_Pvm_precv, file, ";$$");
        newXSproto("Pvm::parent", XS_Pvm_parent, file, "");
        newXSproto("Pvm::mytid", XS_Pvm_mytid, file, "");
        newXSproto("Pvm::pack", XS_Pvm_pack, file, "@");
        newXSproto("Pvm::unpack", XS_Pvm_unpack, file, "");
        newXSproto("Pvm::exit", XS_Pvm_exit, file, "");
        newXSproto("Pvm::halt", XS_Pvm_halt, file, "");
        newXSproto("Pvm::catchout", XS_Pvm_catchout, file, ";$");
        newXSproto("Pvm::tasks", XS_Pvm_tasks, file, ";$");
        newXSproto("Pvm::config", XS_Pvm_config, file, "");
        newXSproto("Pvm::addhosts", XS_Pvm_addhosts, file, "@");
        newXSproto("Pvm::delhosts", XS_Pvm_delhosts, file, "@");
        newXSproto("Pvm::bufinfo", XS_Pvm_bufinfo, file, "$");
        newXSproto("Pvm::freebuf", XS_Pvm_freebuf, file, "$");
        newXSproto("Pvm::getrbuf", XS_Pvm_getrbuf, file, "");
        newXSproto("Pvm::getsbuf", XS_Pvm_getsbuf, file, "");
        newXSproto("Pvm::mkbuf", XS_Pvm_mkbuf, file, "$");
        newXSproto("Pvm::setrbuf", XS_Pvm_setrbuf, file, "$");
        newXSproto("Pvm::setsbuf", XS_Pvm_setsbuf, file, "$");
        newXSproto("Pvm::kill", XS_Pvm_kill, file, "$");
        newXSproto("Pvm::mstat", XS_Pvm_mstat, file, "$");
        newXSproto("Pvm::pstat", XS_Pvm_pstat, file, "$");
        newXSproto("Pvm::tidtohost", XS_Pvm_tidtohost, file, "$");
        newXSproto("Pvm::getopt", XS_Pvm_getopt, file, "$");
        newXSproto("Pvm::setopt", XS_Pvm_setopt, file, "$$");
        newXSproto("Pvm::reg_hoster", XS_Pvm_reg_hoster, file, "");
        newXSproto("Pvm::reg_tasker", XS_Pvm_reg_tasker, file, "");
        newXSproto("Pvm::reg_rm", XS_Pvm_reg_rm, file, "");
        newXSproto("Pvm::perror", XS_Pvm_perror, file, "$");
        newXSproto("Pvm::notify", XS_Pvm_notify, file, "$$;@");
        newXSproto("Pvm::recv_notify", XS_Pvm_recv_notify, file, "");
        newXS("Pvm::hostsync", XS_Pvm_hostsync, file);
        newXSproto("Pvm::recvf", XS_Pvm_recvf, file, "$");
        newXSproto("Pvm::recvf_old", XS_Pvm_recvf_old, file, "");
    ST(0) = &sv_yes;
    XSRETURN(1);
}



( run in 1.127 second using v1.01-cache-2.11-cpan-71847e10f99 )