Skip to content

Commit

Permalink
Prepare serialization support
Browse files Browse the repository at this point in the history
  • Loading branch information
momo5502 committed Sep 12, 2024
1 parent 7040054 commit cef8529
Show file tree
Hide file tree
Showing 7 changed files with 301 additions and 204 deletions.
191 changes: 0 additions & 191 deletions src/emulator/byte_buffer.hpp

This file was deleted.

36 changes: 35 additions & 1 deletion src/emulator/memory_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,40 @@ namespace
}
}

static void serialize(utils::buffer_serializer& buffer, const memory_manager::committed_region& region)
{
buffer.write<uint64_t>(region.length);
buffer.write(region.pemissions);
}

static void deserialize(utils::buffer_deserializer& buffer, memory_manager::committed_region& region)
{
region.length = static_cast<size_t>(buffer.read<uint64_t>());
region.pemissions = buffer.read<memory_permission>();
}

static void serialize(utils::buffer_serializer& buffer, const memory_manager::reserved_region& region)
{
buffer.write<uint64_t>(region.length);
buffer.write_map(region.committed_regions);
}

static void deserialize(utils::buffer_deserializer& buffer, memory_manager::reserved_region& region)
{
region.length = static_cast<size_t>(buffer.read<uint64_t>());
region.committed_regions = buffer.read_map<uint64_t, memory_manager::committed_region>();
}

void memory_manager::serialize_memory_state(utils::buffer_serializer& buffer) const
{
buffer.write_map(this->reserved_regions_);
}

void memory_manager::deserialize_memory_state(utils::buffer_deserializer& buffer)
{
this->reserved_regions_ = buffer.read_map<uint64_t, reserved_region>();
}

bool memory_manager::protect_memory(const uint64_t address, const size_t size, const memory_permission permissions,
memory_permission* old_permissions)
{
Expand Down Expand Up @@ -293,7 +327,7 @@ uint64_t memory_manager::find_free_allocation_base(const size_t size, const uint
for (const auto& region : this->reserved_regions_)
{
const auto region_end = region.first + region.second.length;
if(region_end < start_address)
if (region_end < start_address)
{
continue;
}
Expand Down
5 changes: 5 additions & 0 deletions src/emulator/memory_manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "memory_region.hpp"
#include "address_utils.hpp"
#include "serialization.hpp"

struct region_info : basic_memory_region
{
Expand Down Expand Up @@ -85,4 +86,8 @@ class memory_manager
virtual void unmap_memory(uint64_t address, size_t size) = 0;

virtual void apply_memory_protection(uint64_t address, size_t size, memory_permission permissions) = 0;

protected:
void serialize_memory_state(utils::buffer_serializer& buffer) const;
void deserialize_memory_state(utils::buffer_deserializer& buffer);
};
9 changes: 0 additions & 9 deletions src/emulator/serializable.hpp

This file was deleted.

Loading

0 comments on commit cef8529

Please sign in to comment.