dacs_get

NAME

dacs_get - Get data from remote memory to local memory.

SYNOPSIS

DACS_ERR_T dacs_get ( void *dst_addr, dacs_remote_mem_t src_remote_mem, uint64_t src_remote_mem_offset, uint64_t size, dacs_wid_t wid, DACS_ORDER_ATTR_T order_attr, DACS_BYTE_SWAP_T swap )

Call parameters  
*dst_addr A pointer to the base address of the destination memory buffer.
src_remote_mem The remote memory handle of the source buffer.
src_remote_mem_offset The offset into the offset in remote buffer where the get is to start.
size The size of the transfer.
wid A 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_get service returns data from the target memory, specified by src_remote_mem and src_remote_mem_offset, to the caller memory, specified by dst_addr. 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 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 using 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_get service returns an error indicator defined as:
  • DACS_SUCCESS: normal return.
  • DACS_ERR_BUF_OVERFLOW: the buffer has overflowed - the specified offset and size exceed the bounds of the target buffer.
  • DACS_ERR_NOT_ALIGNED: the buffer is not aligned properly for its size.
  • 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 is 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_put(3), dacs_put_list(3), dacs_get_list(3), dacs_test(3), dacs_wait(3),