mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-29 15:51:02 +00:00
Print memory stats
This commit is contained in:
@@ -100,6 +100,25 @@ void memory_manager::update_layout_version()
|
||||
#endif
|
||||
}
|
||||
|
||||
memory_stats memory_manager::compute_memory_stats() const
|
||||
{
|
||||
memory_stats stats{};
|
||||
stats.reserved_memory = 0;
|
||||
stats.committed_memory = 0;
|
||||
|
||||
for (const auto& reserved_region : this->reserved_regions_ | std::views::values)
|
||||
{
|
||||
stats.reserved_memory += reserved_region.length;
|
||||
|
||||
for (const auto& committed_region : reserved_region.committed_regions | std::views::values)
|
||||
{
|
||||
stats.committed_memory += committed_region.length;
|
||||
}
|
||||
}
|
||||
|
||||
return stats;
|
||||
}
|
||||
|
||||
void memory_manager::serialize_memory_state(utils::buffer_serializer& buffer, const bool is_snapshot) const
|
||||
{
|
||||
buffer.write_atomic(this->layout_version_);
|
||||
|
||||
@@ -24,6 +24,12 @@ struct region_info : basic_memory_region
|
||||
using mmio_read_callback = std::function<void(uint64_t addr, void* data, size_t size)>;
|
||||
using mmio_write_callback = std::function<void(uint64_t addr, const void* data, size_t size)>;
|
||||
|
||||
struct memory_stats
|
||||
{
|
||||
uint64_t reserved_memory = 0;
|
||||
uint64_t committed_memory = 0;
|
||||
};
|
||||
|
||||
class memory_manager : public memory_interface
|
||||
{
|
||||
public:
|
||||
@@ -90,6 +96,8 @@ class memory_manager : public memory_interface
|
||||
void serialize_memory_state(utils::buffer_serializer& buffer, bool is_snapshot) const;
|
||||
void deserialize_memory_state(utils::buffer_deserializer& buffer, bool is_snapshot);
|
||||
|
||||
memory_stats compute_memory_stats() const;
|
||||
|
||||
private:
|
||||
memory_interface* memory_{};
|
||||
reserved_region_map reserved_regions_{};
|
||||
|
||||
Reference in New Issue
Block a user