Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

pvm_recvf(3pvm) [debian man page]

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

Check Out this Related Man Page

PROBE(3PVM)							  PVM Version 3.4						       PROBE(3PVM)

NAME
pvm_probe - Check if message has arrived. SYNOPSIS
C int bufid = pvm_probe( int tid, int msgtag ) Fortran call pvmfprobe( tid, msgtag, bufid ) PARAMETERS
tid Integer task identifier of sending process supplied by the user. msgtag Integer message tag supplied by the user. msgtag should be >= 0. bufid Integer returning the value of the new active receive buffer identifier. Values less than zero indicate an error. DESCRIPTION
The routine pvm_probe checks to see if a message with label msgtag has arrived from tid. If a matching message has arrived pvm_probe returns a buffer identifier in bufid. This bufid can be used with pvm_bufinfo to determine information about the message such as its source and length. If the requested message has not arrived, then pvm_probe returns with a 0 in bufid. If some error occurs bufid will be < 0. A -1 in msgtag or tid matches anything. This allows the user the following options. If tid = -1 and msgtag is defined by the user, then pvm_probe will accept a message from any process which has a matching msgtag. If msgtag = -1 and tid is defined by the user, then pvm_probe will accept any message that is sent from process tid. If tid = -1 and msgtag = -1, then pvm_probe will accept any message from any process. pvm_probe can be called multiple times to check if a given message has arrived yet. After the message has arrived, pvm_recv must be called before the message can be unpacked into the user's memory using the unpack routines. EXAMPLES
C: tid = pvm_parent(); msgtag = 4 ; arrived = pvm_probe( tid, msgtag ); if ( arrived ) info = pvm_bufinfo( arrived, &len, &tag, &tid ); else /* go do other computing */ Fortran: CALL PVMFPROBE( -1, 4, ARRIVED ) IF ( ARRIVED .GT. 0 ) THEN CALL PVMFBUFINFO( ARRIVED, LEN, TAG, TID, INFO ) ELSE * GO DO USEFUL WORK ENDIF ERRORS
These error conditions can be returned by pvm_probe. PvmBadParam giving an invalid tid value or msgtag. PvmSysErr pvmd not responding. SEE ALSO
pvm_bufinfo(3PVM), pvm_getminfo(3PVM), pvm_nrecv(3PVM), pvm_recv(3PVM), pvm_unpack(3PVM) 30 August, 1993 PROBE(3PVM)
Man Page