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>

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() {};

};

class CmemBuffer : public DmaBuffer {
    public:
        int handle;
        bool free_previous_cmem;

        explicit CmemBuffer(size_t size, const std::string& cmem_name, bool free_previous_cmem = false);
        ~CmemBuffer();

        CmemBuffer(const CmemBuffer&) = delete;
        CmemBuffer& operator=(CmemBuffer&&) = delete;

        static bool cmem_buffer_exists(const std::string& 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_ */