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

FreeBSD Manual Pages

  
 
  

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

NAME
     pvm_initsend - Clear default send buffer and specify message encoding.

SYNOPSIS
     C	  int bufid = pvm_initsend( int encoding )

     Fortran   call pvmfinitsend( encoding, bufid )

PARAMETERS
     encodingInteger specifying the next message's encoding scheme.
	     Options in C are:
		  Encoding value	   MEANING
		  PvmDataDefault      0    XDR
		  PvmDataRaw	      1    no encoding
		  PvmDataInPlace      2    data left in place

	     Option names are in Fortran are:
		  Encoding value	   MEANING
		  PVMDEFAULT	      0    XDR
		  PVMRAW	      1    no encoding
		  PVMINPLACE	      2    data left in place

     bufid   Integer  returned containing the message buffer identifier.  Values
	     less than zero indicate an error.

DESCRIPTION
     The routine pvm_initsend clears the send buffer and prepares it for packing
     a new message.  The encoding scheme used for the packing is set  by  encod-
     ing.   XDR encoding is used by default because PVM can not know if the user
     is going to add a heterogeneous machine before this message  is  sent.   If
     the  user	knows  that the next message will only be sent to a machine that
     understands the native format, then he can use PvmDataRaw encoding and save
     on encoding costs.

     PvmDataInPlace encoding specifies that data be left in place  during  pack-
     ing.   The message buffer only contains the sizes and pointers to the items
     to be sent. When pvm_send is called the items are copied  directly  out  of
     the  user's  memory. This option decreases the number of times a message is
     copied at the expense of requiring the user to not modify the items between
     the time they are packed and the time they are sent.

     If pvm_initsend is successful, then bufid will contain the  message  buffer
     identifier.  If some error occurs then bufid will be < 0.

RESTRICTIONS
     PvmDataInPlace allows only dense (stride = 1) data in version 3.3.  It can-
     not  be  used on shared memory (*MP) architectures; a PvmNotImpl error will
     occur at send time.

EXAMPLES
     C:
	  bufid = pvm_initsend( PvmDataDefault );
	  info = pvm_pkint( array, 10, 1 );
	  msgtag = 3 ;
	  info = pvm_send( tid, msgtag );

     Fortran:
	  CALL PVMFINITSEND(PVMRAW, BUFID)
	  CALL PVMFPACK( REAL4, DATA, 100, 1, INFO )
	  CALL PVMFSEND( TID, 3, INFO )

ERRORS
     These error conditions can be returned by pvm_initsend

     PvmBadParam
	    giving an invalid encoding value

     PvmNoMem
	    Malloc has failed. There is not enough memory to create the buffer

SEE ALSO
     pvm_mkbuf(3PVM)

				 30 August, 1993		  INITSEND(3PVM)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pvmfinitsend&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help