rogue
Loading...
Searching...
No Matches
MemMap.h
Go to the documentation of this file.
1
17#ifndef __ROGUE_HARDWARE_MEM_MAP_H__
18#define __ROGUE_HARDWARE_MEM_MAP_H__
19#include "rogue/Directives.h"
20
21#include <stdint.h>
22
23#include <memory>
24#include <mutex>
25#include <thread>
26
27#include "rogue/Logging.h"
28#include "rogue/Queue.h"
31
32#define MAP_DEVICE "/dev/mem"
33
34namespace rogue {
35namespace hardware {
36
54 // `/dev/mem` file descriptor.
55 int32_t fd_;
56
57 // Mapped region size in bytes.
58 uint64_t size_;
59
60 // Base pointer of mapped memory region.
61 volatile uint8_t* map_;
62
63 // Logging
64 std::shared_ptr<rogue::Logging> log_;
65
66 std::thread* thread_;
67 bool threadEn_;
68
69 // Background worker thread entry point.
70 void runThread();
71
72 // Queue
74
75 public:
91 static std::shared_ptr<rogue::hardware::MemMap> create(uint64_t base, uint32_t size);
92
94 static void setup_python();
95
109 MemMap(uint64_t base, uint32_t size);
110
112 ~MemMap();
113
117 void stop();
118
124 void doTransaction(std::shared_ptr<rogue::interfaces::memory::Transaction> tran);
125};
126
128typedef std::shared_ptr<rogue::hardware::MemMap> MemMapPtr;
129
130} // namespace hardware
131}; // namespace rogue
132
133#endif
Thread-safe bounded queue with optional busy threshold.
Definition Queue.h:38
Memory-slave bridge for direct /dev/mem mapped register access.
Definition MemMap.h:53
void doTransaction(std::shared_ptr< rogue::interfaces::memory::Transaction > tran)
Queues a memory transaction for asynchronous mapped-memory access.
Definition MemMap.cpp:91
void stop()
Stops worker thread, unmaps memory, and closes /dev/mem.
Definition MemMap.cpp:79
static std::shared_ptr< rogue::hardware::MemMap > create(uint64_t base, uint32_t size)
Creates a raw memory-map bridge instance.
Definition MemMap.cpp:48
static void setup_python()
Registers Python bindings for this class.
Definition MemMap.cpp:159
~MemMap()
Destroys the raw memory-map bridge instance.
Definition MemMap.cpp:75
Memory slave device.
Definition Slave.h:54
std::shared_ptr< rogue::hardware::MemMap > MemMapPtr
Shared pointer alias for MemMap.
Definition MemMap.h:128