Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RECVF(3PVM)			PVM Version 3.4			   RECVF(3PVM)

NAME
       pvm_recvf - Redefines the comparison function used to accept messages.

SYNOPSIS
       C    int	(*old)() = pvm_recvf( int (*new)( int bufid, int tid, int tag ))

       Fortran	 NOT 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 de-
       fault provides.

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

PARAMETERS
       tid     Integer	task  identifier  of  sending  process supplied	by the
	       user.

       tag     Integer message tag supplied by the user.

       bufid   Integer message buffer identifier.

       The matching function should return:

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

EXAMPLES
       Implementing message probe with recvf, using our	matching  function  to
       return information in a global variable.

       #include	<pvm3.h>

       static int foundit = 0;

       static int
       foo_match(mid, tid, tag)
	    int	mid;
	    int	tid;
	    int	tag;
       {
	    int	t, c;
	    struct pvmminfo header;

	    pvm_getminfo(mid, &header);

	    if ((tid ==	-1 || tid == header.src) && (tag == -1 || tag == header.tag))
		 foundit = 1;

	    return 0;
       }

       int
       probe(src, tag)
       {
	    int	(*omatch)();
	    int	cc;

	    omatch = pvm_recvf(foo_match);

	    foundit = 0;

	    if ((cc = pvm_nrecv(src, tag)) < 0)
		 return	cc;

	    pvm_recvf(omatch);

	    return foundit;
       }

ERRORS
       No error	conditions are returned	by pvm_recvf

SEE ALSO
       pvm_bufinfo(3PVM), pvm_getminfo(3PVM), pvm_recv(3PVM), pvm_nrecv(3PVM),
       pvm_probe(3PVM),	pvm_trecv(3PVM)

				30 August, 1993			   RECVF(3PVM)

NAME | SYNOPSIS | DESCRIPTION | MATCHING FUNCTION | PARAMETERS | EXAMPLES | ERRORS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pvm_recvf&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help