#include <unistd.h> // pread, pwrite
-#include "mc_page_store.h"
+#include "PageStore.hpp"
#include "mc_mmu.h"
#include "mc_private.h"
#include "mc_snapshot.h"
#include <xbt/mmalloc.h>
+using simgrid::mc::remote;
+
extern "C" {
// ***** Region management:
{
size_t* pagenos = (size_t*) malloc(page_count * sizeof(size_t));
- const bool is_self = MC_process_is_self(process);
+ const bool is_self = process->is_self();
void* temp = NULL;
if (!is_self)
- move the segments in shared memory (this will break `fork` however).
*/
page_data = temp;
- MC_process_read(process, MC_ADDRESS_SPACE_READ_FLAGS_NONE,
- temp, page, xbt_pagesize, MC_PROCESS_INDEX_DISABLED);
+ process->read_bytes(
+ temp, xbt_pagesize, remote(page),
+ simgrid::mc::ProcessIndexDisabled);
}
- pagenos[i] = mc_model_checker->pages->store_page(page_data);
+ pagenos[i] = mc_model_checker->page_store().store_page(page_data);
}
void mc_free_page_snapshot_region(size_t* pagenos, size_t page_count)
{
for (size_t i=0; i!=page_count; ++i) {
- mc_model_checker->pages->unref_page(pagenos[i]);
+ mc_model_checker->page_store().unref_page(pagenos[i]);
}
}
for (size_t i=0; i!=page_count; ++i) {
// Otherwise, copy the page:
void* target_page = mc_page_from_number(start_addr, i);
- const void* source_page = mc_model_checker->pages->get_page(pagenos[i]);
+ const void* source_page = mc_model_checker->page_store().get_page(pagenos[i]);
MC_process_write(process, source_page, target_page, xbt_pagesize);
}
}
mc_mem_region_t mc_region_new_sparse(mc_region_type_t region_type,
void *start_addr, void* permanent_addr, size_t size)
{
- mc_process_t process = &mc_model_checker->process;
+ mc_process_t process = &mc_model_checker->process();
mc_mem_region_t region = xbt_new(s_mc_mem_region_t, 1);
region->region_type = region_type;