#include <sys/types.h> // off_t
#include <stdint.h> // size_t
+#include <vector>
+#include <set>
+
#include <simgrid_config.h>
#include "../xbt/mmalloc/mmprivate.h"
#include <xbt/asserts.h>
XBT_INTERNAL void mc_region_restore_sparse(mc_process_t process, mc_mem_region_t reg);
-static inline __attribute__ ((always_inline))
-bool mc_region_contain(mc_mem_region_t region, const void* p)
-{
- return region->contain(simgrid::mc::remote(p));
-}
-
static inline __attribute__((always_inline))
void* mc_translate_address_region_chunked(uintptr_t addr, mc_mem_region_t region)
{
void* mc_translate_address_region(uintptr_t addr, mc_mem_region_t region, int process_index)
{
switch (region->storage_type()) {
- case MC_REGION_STORAGE_TYPE_NONE:
+ case simgrid::mc::StorageType::NoData:
default:
xbt_die("Storage type not supported");
- case MC_REGION_STORAGE_TYPE_FLAT:
+ case simgrid::mc::StorageType::Flat:
{
uintptr_t offset = (uintptr_t) addr - (uintptr_t) region->start().address();
return (void *) ((uintptr_t) region->flat_data().data() + offset);
}
- case MC_REGION_STORAGE_TYPE_CHUNKED:
+ case simgrid::mc::StorageType::Chunked:
return mc_translate_address_region_chunked(addr, region);
- case MC_REGION_STORAGE_TYPE_PRIVATIZED:
+ case simgrid::mc::StorageType::Privatized:
{
xbt_assert(process_index >=0,
"Missing process index for privatized region");
size_t heap_bytes_used;
mc_mem_region_t* snapshot_regions;
size_t snapshot_regions_count;
- xbt_dynar_t enabled_processes;
+ std::set<pid_t> enabled_processes;
int privatization_index;
- size_t *stack_sizes;
+ std::vector<size_t> stack_sizes;
xbt_dynar_t stacks;
xbt_dynar_t to_ignore;
uint64_t hash;
static inline __attribute__ ((always_inline))
mc_mem_region_t mc_get_region_hinted(void* addr, mc_snapshot_t snapshot, int process_index, mc_mem_region_t region)
{
- if (mc_region_contain(region, addr))
+ if (region->contain(simgrid::mc::remote(addr)))
return region;
else
return mc_get_snapshot_region(addr, snapshot, process_index);
uintptr_t offset = (uintptr_t) addr - (uintptr_t) region->start().address();
- xbt_assert(mc_region_contain(region, addr),
+ xbt_assert(region->contain(simgrid::mc::remote(addr)),
"Trying to read out of the region boundary.");
switch (region->storage_type()) {
- case MC_REGION_STORAGE_TYPE_NONE:
+ case simgrid::mc::StorageType::NoData:
default:
xbt_die("Storage type not supported");
- case MC_REGION_STORAGE_TYPE_FLAT:
+ case simgrid::mc::StorageType::Flat:
return (char*) region->flat_data().data() + offset;
- case MC_REGION_STORAGE_TYPE_CHUNKED:
+ case simgrid::mc::StorageType::Chunked:
{
// Last byte of the region:
void* end = (char*) addr + size - 1;
// We currently do not pass the process_index to this function so we assume
// that the privatized region has been resolved in the callers:
- case MC_REGION_STORAGE_TYPE_PRIVATIZED:
+ case simgrid::mc::StorageType::Privatized:
xbt_die("Storage type not supported");
}
}