dacs_get_list

NAME

dacs_get_list - Get data from a remote memory area and place it in local buffers.

SYNOPSIS

DACS_ERR_T dacs_get_list ( void *dst_addr, dacs_dma_list_t *dst_dma_list, uint32_t dst_list_size, dacs_remote_mem_t src_remote_mem, dacs_dma_list_t *src_dma_list, uint32_t src_list_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.
*dst_dma_list A pointer to a list of entries describing transfer locations in the destination buffer.
dst_list_size The number of elements in the destination DMA list.
src_remote_mem A handle for the remote source memory buffer.
*src_dma_list A pointer to a list of entries describing transfer locations in the source buffer.
src_list_size The number of elements in the source DMA list.
wid The communication wait identifier associated with this transfer.
order_attr 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 operation and all subsequent DMA operations are delayed until all previously issued DMA operations to the same DE using the same wid have been 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_list service gets data from the remote memory area referenced by the dst_remote_mem struct, using the specified dma_list, and places it in the buffers specified by dst_dma_list.The interface supports the specification of two DMA lists, one of which must contain a single element. This applies to both Gather (dst_list_size=1) and Scatter to local (src_list_size=1) operations.

The destination address for each DMA operation is an effective address formed by the sum of dst_addr and the offset specified in each DMA list element. The assumption is that the destination buffers for the data are all within a contiguous buffer starting at dst_addr. For cases where the destination buffers may not be in a contiguous buffer with a known base address, a destination address of zero may be specified. In this case the actual address of the destination buffer can be used as the offset in the DMA list element.

This is an asynchronous service in that the data transfers are only initiated (but not completed) when it returns. To ensure completion of the transfer you should make a call to dacs_wait() or dacs_test() passing the wait identifier.

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

Get list from a remote memory region with source list size = 1

RETURN VALUE

The dacs_get_list service returns an error indicator defined as:
  • DACS_SUCCESS: normal return.
  • DACS_ERR_BUF_OVERFLOW: the buffer has overflowed - the specified offset or size of one or more list elements 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 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_RESOURCE: unable to allocate required resources.
  • DACS_ERR_NO_PERM: the resource attributes do not allow this operation.

SEE ALSO

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