-/* Copyright (c) 2014-2017. The SimGrid Team.
+/* Copyright (c) 2014-2018. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#include "src/mc/mc_private.hpp"
#include "src/mc/mc_snapshot.hpp"
-extern "C" {
-
/** @brief Find the snapshoted region from a pointer
*
* @param addr Pointer
// Using alloca() for large allocations may trigger stack overflow:
// use malloc if the buffer is too big.
bool stack_alloc = size < 64;
- const bool region1_need_buffer = region1==nullptr || region1->storage_type()==simgrid::mc::StorageType::Flat;
- const bool region2_need_buffer = region2==nullptr || region2->storage_type()==simgrid::mc::StorageType::Flat;
- void* buffer1a = region1_need_buffer ? nullptr : stack_alloc ? alloca(size) : ::operator new(size);
- void* buffer2a = region2_need_buffer ? nullptr : stack_alloc ? alloca(size) : ::operator new(size);
+ void* buffer1a = nullptr;
+ void* buffer2a = nullptr;
+ if (region1 != nullptr && region1->storage_type() != simgrid::mc::StorageType::Flat)
+ buffer1a = stack_alloc ? alloca(size) : ::operator new(size);
+ if (region2 != nullptr && region2->storage_type() != simgrid::mc::StorageType::Flat)
+ buffer2a = stack_alloc ? alloca(size) : ::operator new(size);
const void* buffer1 = MC_region_read(region1, buffer1a, addr1, size);
const void* buffer2 = MC_region_read(region2, buffer2a, addr2, size);
int res;
return res;
}
-/** Compare memory between snapshots
- *
- * @param addr1 Address in the first snapshot
- * @param snapshot1 First snapshot
- * @param addr2 Address in the second snapshot
- * @param snapshot2 Second snapshot
- * @return same as memcmp
- * */
-int MC_snapshot_memcmp(
- const void* addr1, simgrid::mc::Snapshot* snapshot1,
- const void* addr2, simgrid::mc::Snapshot* snapshot2, int process_index, size_t size)
-{
- mc_mem_region_t region1 = mc_get_snapshot_region(addr1, snapshot1, process_index);
- mc_mem_region_t region2 = mc_get_snapshot_region(addr2, snapshot2, process_index);
- return MC_snapshot_region_memcmp(addr1, region1, addr2, region2, size);
-}
-
namespace simgrid {
namespace mc {
}
}
-}
-
#ifdef SIMGRID_TEST
#include <cstdlib>