Class FlxToHostBuffer

Inheritance Relationships

Base Type

Class Documentation

class FlxToHostBuffer : public ToHostBuffer

Reader of a Felix card ToHost DMA buffer.

Public Functions

FlxToHostBuffer(int m_dmaid, std::shared_ptr<Device> d)
~FlxToHostBuffer()
virtual void allocate_buffer(size_t size, const std::string &name, bool vmem, bool free_previous_cmem = false) override

fraction of e-links enabled for this DMA buffer of a given type.

Parameters:
  • name -- of the buffers passed to the CMEM driver.

  • vmem -- if true, do not use CMEM but malloc a buffer in memory.

  • free_previous_cmem -- if true, re-claim a buffer with the same name if present and not locked.

virtual void dma_start_continuous() override

inform the FELIX card of the allocated buffer, to be used as a circular DMA buffer.

virtual void dma_wait_for_data_irq() override

wait for an on-data MSI-X interrupt.

virtual size_t dma_bytes_available() override
Returns:

number of bytes written by firmware, to be read by software.

virtual size_t dma_bytes_available_nowrap() override
Returns:

number of bytes written by firmware up to the end of the buffer, to be read by software.

virtual bool dma_is_full() override
Returns:

true if the DMA buffer is full.

virtual uint64_t dma_get_write_ptr() override
Returns:

address in virtual memory of write pointer (moved by firmware).

virtual uint64_t dma_get_read_ptr() override
Returns:

address in virtual memory of read pointer (moved by software).

virtual void dma_set_read_ptr_vaddr(uint64_t v_addr) override

set a new read pointer.

software uses the virtual addresses, firmware uses the physical ones.

Parameters:

v_addr -- virtual address of new read pointer.

virtual void dma_set_read_ptr_paddr(uint64_t p_addr) override

set a new read pointer.

software uses the virtual addresses, firmware uses the physical ones.

Parameters:

p_addr -- physical address of new read pointer.

virtual uint64_t dma_get_read_offset() override
Returns:

read pointer offset with respect to the start of buffer.

virtual uint64_t dma_get_write_offset() override
Returns:

write pointer offset with respect to the start of buffer.

virtual void dma_advance_read_ptr(size_t bytes) override

advance read pointer.

Parameters:

bytes -- number of bytes processed by software.