dacs_put

NAME

dacs_put - Initiate a data transfer from local memory to remote memory.

SYNOPSIS

DACS_ERR_T dacs_put ( dacs_remote_mem_t dst_remote_mem, uint64_t dst_remote_mem_offset, void *src_addr, uint64_t size, dacs_wid_t wid, DACS_ORDER_ATTR_T order_attr, DACS_BYTE_SWAP_T swap )

Call parameters  
dst_remote_mem The remote memory handle of the destination buffer.
dst_remote_mem_offset The offset into the remote buffer where the put is to be performed.
*src_addr A pointer to the source memory buffer.
size The size of the transfer.
wid The communications wait identifier.
order_attr An ordering attribute. Possible values are:
  • DACS_ORDER_ATTR_FENCE: execution of this operation is delayed until all previously issued DMA operations to the same DE using the same wid have completed.
  • DACS_ORDER_ATTR_BARRIER: execution of this command and all subsequent DMA operations are delayed until all previously issued DMA operations to the same DE using the same wid have completed.
  • DACS_ORDER_ATTR_NONE: no ordering is enforced.
swap The little-endian or big-endian byte-swapping flag.Possible values are:
  • DACS_BYTE_SWAP_DISABLE,
  • DACS_BYTE_SWAP_HALF_WORD,
  • DACS_BYTE_SWAP_WORD or
  • DACS_BYTE_SWAP_DOUBLE_WORD.
See Data communication for details.

DESCRIPTION

The dacs_put service initiates data transfer from the caller memory, specified by src_addr, to the target memory, specified by dst_remote_mem and remote_mem_offset. This operation is non-blocking (the call initiates the transfer, but the transfer may continue after the call returns). To ensure that the transfer has completed on the DE, so that the local buffer can be reused or changed, you should issue a call to dacs_wait() or dacs_test() with the same wait identifier.

The target remote memory region must have been previously accepted by the caller with a call to dacs_remote_mem_accept().

Note: The user of the dacs_put() and dacs_get() methods is the process that accepted the memory handle. The owner of the remote memory cannot use these functions.

RETURN VALUE

The dacs_put service returns an error indicator defined as:
  • DACS_SUCCESS: normal return.
  • DACS_ERR_BUF_OVERFLOW: the buffer has overflowed - the specified offset or size exceed the bounds of the target buffer.
  • DACS_ERR_NOT_ALIGNED: the buffer is not aligned correctly for the size of the transfer.
  • DACS_ERR_INVALID_ADDR: the pointer is invalid.
  • DACS_ERR_INVALID_ATTR: the flag or enumerated constant is invalid.
  • DACS_ERR_INVALID_SIZE: the size was zero or not supported by the platform.
  • DACS_ERR_INVALID_WID: the wait identifier is invalid.
  • DACS_ERR_INVALID_HANDLE: the remote memory handle is invalid.
  • DACS_ERR_NO_PERM: the resource attributes do not allow this operation.

SEE ALSO

dacs_get(3), dacs_put_list(3), dacs_get_list(3), dacs_test(3), dacs_wait(3)