Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pvm_recv(3PVM)

pvm_nrecv(3PVM)

pvm_probe(3PVM)

pvm_trecv(3PVM)

RECVF(3PVM)  —  Subroutines

NAME

pvm_recvf − Redefines the comparison function used to accept messages. 
 

SYNOPSIS

Cint (∗old)() = pvm_recvf( int (∗new)( int bufid, int tid, int tag ))
 
FortranNOT AVAILABLE

 

DESCRIPTION

The routine pvm_recvf defines the comparison function to be used by the pvm_recv, pvm_nrecv, and pvm_probe functions.  It is available as a means to customize PVM message passing.  pvm_recvf sets a user supplied comparison function to evaluate messages for receiving. 

recvf returns the old value of the matching function, or 0 if the old function was the default matcher

pvm_recvf is intended for sophisticated C programmers who understand the function of such routines (like signal) and who require a receive routine that can match on more complex message contexts than the default provides. 
 

MATCHING FUNCTION

The default comparison function evaluates the source and message tag associated with all incoming messages. 
 

PARAMETERS

tidInteger task identifier of sending process supplied by the user. 

tagInteger message tag supplied by the user. 

bufidInteger message buffer identifier. 

The matching function should return:

 ValueAction taken
< 0Return immediately with this error code.
  0Do not pick this message.
  1Pick this message and do not scan the rest.
> 1Pick this highest ranked message after
scanning them all.

EXAMPLES

Implementing probe with recvf

 #include <pvm3.h>
 static int foundit = 0;
 static int
foo_match(mid, tid, code)
int mid;
int tid;
int code;
{
int t, c, cc;
 if ((cc = pvm_bufinfo(mid, (int∗)0, &c, &t)) < 0)
return cc;
 if ((tid == -1 || tid == t) && (code == -1 || code == c))
foundit = 1;
 return 0;
}
 int
probe(src, code)
{
int (∗omatch)();
int cc;
 omatch = pvm_recvf(foo_match);
 foundit = 0;
 if ((cc = pvm_nrecv(src, code)) < 0)
return cc;
 pvm_recvf(omatch);
 return foundit;
}

 

ERRORS

No error conditions are returned by pvm_recvf

SEE ALSO

pvm_recv(3PVM), pvm_nrecv(3PVM), pvm_probe(3PVM), pvm_trecv(3PVM)

  —  30 August, 1993

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026