On this page
article
peary/interfaces/Memory/memory.hpp
peary/interfaces/Memory/memory.hpp
Peary Memory Interface. More…
Namespaces
| Name |
|---|
| peary |
| peary::interface |
Classes
| Name | |
|---|---|
| class | peary::interface::iface_mem_config Configuration class for Memory interface. |
| class | peary::interface::iface_mem Peary Memory Interface. |
Detailed Description
Peary Memory Interface.
Copyright: Copyright (c) 2016-2025 CERN and the Peary Caribou authors. This software is distributed under the terms of the LGPL-3.0-only License, copied verbatim in the file “LICENSE.md”. SPDX-License-Identifier: LGPL-3.0-only
Source code
#pragma once
#include <cstdint>
#include <cstdio>
#include <string>
#include <vector>
#include <fcntl.h>
#include <sys/mman.h>
#include "peary/interfaces/Interface.hpp"
#include "peary/interfaces/InterfaceManager.hpp"
#include "peary/utils/datatypes.hpp"
#include "peary/utils/exceptions.hpp"
namespace peary::interface {
class iface_mem_config : public InterfaceConfiguration {
public:
iface_mem_config(std::string const& devicepath, const utils::memory_map& mem);
// Memory map
utils::memory_map _mem;
using InterfaceConfiguration::operator<;
virtual bool operator<(const iface_mem_config& rhs) const;
};
class iface_mem : public Interface<size_t, uintptr_t, iface_mem_config> {
public:
explicit iface_mem(const configuration_type& config);
~iface_mem() override;
// Access to FPGA memory mapped registers
int _memfd;
// Buffer
void* _mappedMemory;
GENERATE_FRIENDS()
utils::memory_map mem() const { return _mem; }
iface_mem() = delete;
protected:
std::pair<size_t, uintptr_t> write(const std::pair<size_t, uintptr_t>&) override;
uintptr_t readWord(const size_t) const;
dataVector_type read(const size_t&, const unsigned int) override;
private:
// Memory map
const utils::memory_map _mem;
void mapMemory(const utils::memory_map&);
friend iface_mem& InterfaceManager::getInterface<iface_mem>(const configuration_type&);
friend void InterfaceManager::deleteInterface<iface_mem>(iface_mem*);
};
} // namespace peary::interface
Updated on 2025-11-14 at 11:31:23 +0100