dacs_put_list

NAME

dacs_put_list - Push data from local memory blocks to a remote memory area.

SYNOPSIS

DACS_ERR_T dacs_put_list ( dacs_remote_mem_t dst_remote_mem, dacs_dma_list_t *dst_dma_list, uint32_t dst_list_size, void *src_addr, 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_remote_mem The remote memory handle for the destination buffer.
*dst_dma_list A pointer to a list of entries describing the transfer locations in the destination buffer.
dst_list_size The number of elements in the destination DMA list.
src_addr The base address of the source memory buffer.
*src_dma_list A pointer to a list of entries describing the transfer locations in the source buffer.
src_list_size The number of elements in the source DMA list.
wid The communications 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 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_list service pushes data from the memory blocks specified in the src_dma_list to the remote memory area referenced by the dst_remote_mem handle using the specified dst_dma_list.The interface supports the specification of two DMA lists, one of which must contain a single element. This applies to both Scatter (src_list_size=1) and Gather to Remote (dst_list_size=1) operations.

The source address for each DMA operation is an effective address formed by the sum of src_addr and the offset specified in each DMA list element. The assumption is that all of the source data is in a contiguous buffer starting at src_addr. For cases where the source data may not be in a contiguous buffer with a known base address, a source address of zero may be specified. In this case the actual address of the data 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 on this DE you must make a call to dacs_wait() or dacs_test() with the same wait identifier. This ensures that the local buffers and transfer list parameter can be changed or reused.

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

Put list to a remote memory region with src_list_size = 1

RETURN VALUE

The dacs_put_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_get_list(3), dacs_test(3), dacs_wait(3),