PROBE(3PVM)							  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 iden-
	  tifier.  Values less than zero indicate an error.

DISCUSSION
  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 in	a pvm_bufinfo call 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 rou-
  tines.

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_nrecv(3PVM), pvm_recv(3PVM), pvm_unpack(3PVM)


Back to the alphabetical listing
Back to the listing of routines for sending and receiving messages