#include <stdbool.h>
-#include "internal_config.h"
-#include "smpi/private.h"
+#include "src/internal_config.h"
+#include "src/smpi/private.h"
-#include "mc_snapshot.h"
-#include "mc_private.h"
-#include "mc_mmu.h"
-#include "PageStore.hpp"
+#include "src/mc/mc_snapshot.h"
+#include "src/mc/mc_private.h"
+#include "src/mc/mc_mmu.h"
+#include "src/mc/PageStore.hpp"
extern "C" {
const void* Snapshot::read_bytes(void* buffer, std::size_t size,
remote_ptr<void> address, int process_index,
- AddressSpace::ReadMode mode) const
+ ReadOptions options) const
{
mc_mem_region_t region = mc_get_snapshot_region((void*)address.address(), this, process_index);
if (region) {
const void* res = MC_region_read(region, buffer, (void*)address.address(), size);
- if (buffer == res || mode == AddressSpace::Lazy)
+ if (buffer == res || options & ReadOptions::lazy())
return res;
else {
memcpy(buffer, res, size);
}
}
else
- return this->read_bytes(buffer, size, address, process_index, mode);
+ return this->process()->read_bytes(
+ buffer, size, address, process_index, options);
}
}
}
+}
+
#ifdef SIMGRID_TEST
#include <string.h>
#include <sys/mman.h>
-#include "mc/mc_private.h"
-#include "mc/mc_snapshot.h"
-#include "mc/mc_mmu.h"
-
-extern "C" {
+#include "src/mc/mc_private.h"
+#include "src/mc/mc_snapshot.h"
+#include "src/mc/mc_mmu.h"
XBT_TEST_SUITE("mc_snapshot", "Snapshots");
_sg_mc_sparse_checkpoint = sparse_checkpoint;
xbt_assert(xbt_pagesize == getpagesize());
xbt_assert(1 << xbt_pagebits == xbt_pagesize);
- mc_model_checker = new ::simgrid::mc::ModelChecker(getpid(), -1);
+
+ std::unique_ptr<simgrid::mc::Process> process(new simgrid::mc::Process(getpid(), -1));
+ process->init();
+ mc_model_checker = new ::simgrid::mc::ModelChecker(std::move(process));
for(int n=1; n!=256; ++n) {
mc_model_checker = NULL;
}
-}
-
#endif /* SIMGRID_TEST */
-}