INITSEND(3PVM) 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
encoding
Integer 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 shortened in Fortran to:
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.
DISCUSSION
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. PvmDataInPlace allows
only dense (stride = 1) data in version 3.3.
If pvm_initsend is successful, then bufid will contain the message buffer
identifier. If some error occurs then bufid will be < 0.
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)
Back to the alphabetical listing
Back to the listing of routines
for sending and receiving messages