Program Listing for File cmem_buffer.hpp
↰ Return to documentation for file (cmem_buffer.hpp)
#ifndef FELIX_DMA_H_
#define FELIX_DMA_H_
#include <string>
#include "cmem_user.hpp"
#include "ers/ers.h"
class DmaBuffer {
public:
uint64_t paddr;
uint64_t vaddr;
size_t size;
uint64_t pend;
uint64_t pc_ptr;
uint64_t emu_fw_ptr;
explicit DmaBuffer(size_t c) : paddr(0), vaddr(0), size(c), pend(0), pc_ptr(0), emu_fw_ptr(0) {};
virtual ~DmaBuffer() {};
};
ERS_DECLARE_ISSUE(felix_log, cmem_buffer_issue, issue_message, ((std::string)issue_message))
class CmemBuffer : public DmaBuffer {
public:
explicit CmemBuffer(size_t size, const std::string& cmem_name);
~CmemBuffer();
CmemBuffer(const CmemBuffer&) = delete;
CmemBuffer& operator=(CmemBuffer&&) = delete;
private:
cmem::Driver m_cmem_driver {};
std::string m_cmem_name {};
};
class VmemBuffer : public DmaBuffer {
public:
explicit VmemBuffer(size_t size);
~VmemBuffer();
VmemBuffer(const VmemBuffer&) = delete;
VmemBuffer& operator=(VmemBuffer&&) = delete;
private:
void* ptr;
};
#endif /* FELIX_DMA_H_ */