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

FreeBSD Manual Pages

  
 
  

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

NAME
       pvm_psend - Pack	and send data in one call.

SYNOPSIS
       C    int	info = pvm_psend( int tid, int msgtag, char *buf,
				  int len, int datatype	)

       Fortran	 call pvmfpsend( tid, msgtag, buf, len,	datatype,
			       info )

PARAMETERS
       tid     Integer task identifier of destination process.

       msgtag  Integer	message	tag supplied by	the user.  msgtag should be >=
	       0.

       buf     Pointer to a buffer to send.

       len     Length of buffer	(in multiple of	data type size).

       datatype
	       Type of data to which buf points	(see below).

       info    Integer status code returned by the routine.

DESCRIPTION
       The routine pvm_psend takes a pointer to	a buffer buf  its  length  len
       and its data type datatype and sends this data directly to the PVM task
       identified by tid.  msgtag is used to label the content of the message.
       If  pvm_psend  is successful, info will be 0. If	some error occurs then
       info will be < 0.

       pvm_psend data can be received by pvm_precv,  pvm_recv,	pvm_trecv,  or
       pvm_nrecv.

       The pvm_psend routine is	asynchronous.  Computation on the sending pro-
       cessor resumes as soon as the buffer is safe for	 reuse.	  This	is  in
       contrast	 to synchronous	communication, during which computation	on the
       sending processor halts until the matching receive is executed  by  the
       receiving processor.

       In  C the datatype parameter must be one	of the following, depending on
       the type	of data	to be sent: [Version 3.3.0 - This parameter  only  de-
       termines	message	length,	not data conversion.  It only sends raw	bytes]
	   datatype    Data Type
	   PVM_STR     string
	   PVM_BYTE    byte
	   PVM_SHORT   short
	   PVM_INT     int
	   PVM_FLOAT   real
	   PVM_CPLX    complex
	   PVM_DOUBLE  double
	   PVM_DCPLX   double complex
	   PVM_LONG    long integer
	   PVM_USHORT  unsigned	short int
	   PVM_UINT    unsigned	int
	   PVM_ULONG   unsigned	long int

       In Fortran the same data	types specified	for pack should	be used.

       The  PVM	model guarantees the following about message order.  If	task 1
       sends message A to task 2, then task 1 sends message B to task 2,  mes-
       sage  A will arrive at task 2 before message B.	Moreover, if both mes-
       sages arrive before task	2 does a receive, then a wildcard receive will
       always return message A.

       pvm_psend  does	not  affect  the state of the current outgoing message
       buffer (created by pvm_initsend and used	by pvm_send).

WARNINGS
       In some versions	of PVM (CM5,  I860  and	 PGON),	 messages  sent	 using
       pvm_psend  must be received only	by pvm_precv, likewise those sent with
       pvm_send	 must  be  received  by	 pvm_recv,  pvm_nrecv  or   pvm_trecv.
       pvm_psend   is	not   compatible  with	pvm_recv  (nor	pvm_send  with
       pvm_precv).   In	 addition,  pvm_probe  is   not	  interoperable	  with
       pvm_psend.

       This  problem  occurs  because nonstandard message headers are used for
       efficiency in the pvm_psend function.  In the generic Unix  version  of
       PVM, the	calls are fully	interoperable.

       The  message tag	space is shared	between	pvm_send and pvm_psend,	so you
       must be careful to avoid	selecting the wrong message  (for  example  by
       using a wildcard	to match the message).

EXAMPLES
       C:
	   info	= pvm_psend( tid, msgtag, array, 1000, PVM_FLOAT );

       Fortran:
	   CALL	PVMFPSEND( TID,	MSGTAG,	BUF, CNT, REAL4, INFO )

ERRORS
       These error conditions can be returned by pvm_psend

       PvmBadParam
	      giving an	invalid	tid, msgtag, or	datatype.

       PvmSysErr
	      pvmd not responding.

SEE ALSO
       pvm_precv(3PVM),	pvm_send(3PVM)

				15 March, 1994			   PSEND(3PVM)

NAME | SYNOPSIS | PARAMETERS | DESCRIPTION | WARNINGS | EXAMPLES | ERRORS | SEE ALSO

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

home | help