| true | 3759 | | pvm_precv(tid, tag, cp, len, dt, rtid, rtag, rlen) | | | 3760 | | int tid; | | | 3761 | | int tag; | | | 3762 | | void *cp; | | | 3763 | | int len; | | | 3764 | | int dt; | | | 3765 | | int *rtid; | | | 3766 | | int *rtag; | | | 3767 | | int *rlen; | | | 3768 | | { | | | 3769 | | int nb, mc, src; | | | 3770 | | int rbf; | | | 3771 | | int cc = 0; | | | 3772 | | long ad; | | | 3773 | | TEV_DECLS
| | | 3774 | | | | | 3775 | | if (TEV_EXCLUSIVE) {
| | | 3776 | | if (TEV_DO_TRACE(TEV_PRECV,TEV_EVENT_ENTRY)) {
| | | 3777 | | TEV_PACK_INT( TEV_DID_RST, TEV_DATA_SCALAR, &tid, 1, 1 );
| | | 3778 | | TEV_PACK_INT( TEV_DID_RMC, TEV_DATA_SCALAR, &tag, 1, 1 );
| | | 3779 | | TEV_PACK_INT( TEV_DID_RCX, TEV_DATA_SCALAR,
| | | 3780 | | &pvmmyctx, 1, 1 ); | | | 3781 | | ad = (long)cp; | | | 3782 | | TEV_PACK_LONG( TEV_DID_PDA, TEV_DATA_SCALAR, &ad, 1, 1 );
| | | 3783 | | TEV_PACK_INT( TEV_DID_PC, TEV_DATA_SCALAR, &len, 1, 1 );
| | | 3784 | | TEV_PACK_INT( TEV_DID_PDT, TEV_DATA_SCALAR, &dt, 1, 1 );
| | | 3785 | | TEV_FIN;
| | | 3786 | | } | | | 3787 | | } | | | 3788 | | | | | 3789 | | switch (dt) { | | | 3790 | | | | | 3791 | | case PVM_BYTE:
| | | 3792 | | len *= sizeof(char); | | | 3793 | | break; | | | 3794 | | | | | 3795 | | case PVM_SHORT:
| | | 3796 | | case PVM_USHORT:
| | | 3797 | | len *= sizeof(short); | | | 3798 | | break; | | | 3799 | | | | | 3800 | | case PVM_INT:
| | | 3801 | | case PVM_UINT:
| | | 3802 | | len *= sizeof(int); | | | 3803 | | break; | | | 3804 | | | | | 3805 | | case PVM_LONG:
| | | 3806 | | case PVM_ULONG:
| | | 3807 | | len *= sizeof(long); | | | 3808 | | break; | | | 3809 | | | | | 3810 | | case PVM_FLOAT:
| | | 3811 | | len *= sizeof(float); | | | 3812 | | break; | | | 3813 | | | | | | | ... | | | 3825 | | | | | 3826 | | case PVM_STR:
| | | 3827 | | cc = PvmNotImpl;
| | | 3828 | | break; | | | 3829 | | | | | 3830 | | default: | | | 3831 | | cc = PvmBadParam;
| | | 3832 | | break; | | | 3833 | | } | | | 3834 | | | | | 3835 | | if (!cc) { | | | 3836 | | #if !defined(IMA_MPP) | | | 3837 | | rbf = pvm_setrbuf(0); | | | 3838 | | cc = pvm_recv(tid, tag); | | | 3839 | | if (cc > 0) { |
| | 752 | | | | cc = PvmOk;
| | | 753 | | | | if (len) { | | | 754 | | | | if (mp->m_flag & MM_PACK)
| | | 755 | | | | pmsg_setlen(mp); | | | 756 | | | | *len = mp->m_len; | | | 757 | | | | } | | | 758 | | | | if (code) | | | 759 | | | | *code = mp->m_tag; | | | 760 | | | | if (tid) | | | 761 | | | | *tid = mp->m_src; | | | 762 | | | | } else | | | 763 | | | | cc = PvmNoSuchBuf;
| | | 764 | | | | | | | 765 | | | | if (TEV_AMEXCL) {
| | | 766 | | | | if (TEV_DO_TRACE(TEV_BUFINFO,TEV_EVENT_EXIT)) {
| | | 767 | | | | int ln, tg, sc; | | | 768 | | | | TEV_PACK_INT( TEV_DID_CC, TEV_DATA_SCALAR, &cc, 1, 1 );
| | | 769 | | | | if (!cc) { | | | 770 | | | | ln = mp->m_len; | | | 771 | | | | tg = mp->m_tag; | | | 772 | | | | sc = mp->m_src; | | | 773 | | | | } | | | 774 | | | | else | | | 775 | | | | ln = tg = sc = cc; | | | 776 | | | | TEV_PACK_INT( TEV_DID_INB, TEV_DATA_SCALAR, &ln, 1, 1 );
| | | 777 | | | | TEV_PACK_INT( TEV_DID_IMC, TEV_DATA_SCALAR, &tg, 1, 1 );
| | | 778 | | | | TEV_PACK_INT( TEV_DID_IST, TEV_DATA_SCALAR, &sc, 1, 1 );
| | | 779 | | | | TEV_FIN;
| | | 780 | | | | } | | | 781 | | | | TEV_ENDEXCL;
| | | 782 | | | | } | | | 783 | | | | | | | 784 | | | | if (cc < 0) |
|