---
name: "pvm_initsend"
section: "3"
platform: "linux"
package: "pvm-dev"
version: "3.4.2-8"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/pvm_initsend"
---

# pvm\_initsend(3)

Clear default send buffer and specify message encoding.

## 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 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** *encoding.* **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 packing. 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 cannot 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)
