/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include <stdbool.h>
+#include <cstddef>
+
+#include <memory>
+#include <utility>
+
+#include <xbt/asserts.h>
+#include <xbt/sysdep.h>
#include "src/internal_config.h"
#include "src/smpi/private.h"
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->process()->read_bytes(
- buffer, size, address, process_index, mode);
+ buffer, size, address, process_index, options);
}
}
}
+}
+
#ifdef SIMGRID_TEST
#include <string.h>
#include "src/mc/mc_snapshot.h"
#include "src/mc/mc_mmu.h"
-extern "C" {
-
XBT_TEST_SUITE("mc_snapshot", "Snapshots");
static inline void init_memory(void* mem, size_t size)
_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 */
-}