Data communication

The data communication services transfer data from one process to another. To accommodate transfers across systems with different data representation formats (endian-ness), the services provide an option for byte swapping. The types of byte swapping supported are:
DACS_BYTE_SWAP_DISABLE
no byte-swapping .
DACS_BYTE_SWAP_HALF_WORD
byte-swapping for halfwords (2 bytes).
DACS_BYTE_SWAP_WORD
byte-swapping for words (4 bytes).
DACS_BYTE_SWAP_DOUBLE_WORD
byte-swapping for double words (8 bytes).
Different platforms and implementations may also have different alignment restrictions for the data being transferred. The data communication services will return the DACS_ERR_NOT_ALIGNED error code when those alignment restrictions are not met.
Note: On DaCS for Cell BE the services support data transfers of any size other than zero. DaCS enforces no size limit, so the size of transfer that can actually be performed is only restricted by the inherent system limitations. Data transfers that are smaller than 16 bytes must be aligned according to the size of the transfer, rounded down to the nearest power of two at or below the size. Data transfers that are 16 bytes or larger must be 16 byte aligned. For DMA list operations, however, the transfer size for each element must be a multiple of 16.
The data communication services require that the caller specify either the source or destination DE and PID, as appropriate. As a convenience to the programmer, the special values DACS_DE_PARENT and DACS_PID_PARENT are defined, which can be used to refer to the parent DE and PID respectively. The special values DACS_DE_SELF and DACS_PID_SELF are also provided for those interfaces where the caller is the target of the operation.
Note: In SDK 3.0 direct communication is only allowed between a parent and its children. Attempts to communicate to a process which is not the parent or child of the initiator will result in an error of DACS_ERR_INVALID_TARGET.

Three different data communication models are supported: remote direct memory access (rDMA), message passing, and mailboxes.