#include <sys/mman.h>
-#include <xbt.h>
+#include <xbt/base.h>
+#include <xbt/log.h>
+#include <xbt/sysdep.h>
#include "src/mc/PageStore.hpp"
#include "src/mc/mc_mmu.h"
-extern "C" {
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_page_snapshot, mc,
"Logging specific to mc_page_snapshot");
// This djb2:
std::uint64_t hash = 5381;
- for (std::size_t i = 0; i != n; ++i) {
+ for (std::size_t i = 0; i != n; ++i)
hash = ((hash << 5) + hash) + values[i];
- }
return hash;
}
// by relocating it somewhere else in the virtual memory
// space:
void* memory = ::mmap(nullptr, size << xbt_pagebits, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_POPULATE, -1, 0);
- if (memory == MAP_FAILED) {
+ if (memory == MAP_FAILED)
xbt_die("Could not mmap initial snapshot pages.");
- }
this->top_index_ = 0;
this->capacity_ = size;
// Expand the memory region by moving it into another
// virtual memory address if necessary:
void* new_memory = mremap(this->memory_, old_bytesize, new_bytesize, MREMAP_MAYMOVE);
- if (new_memory == MAP_FAILED) {
+ if (new_memory == MAP_FAILED)
xbt_die("Could not mremap snapshot pages.");
- }
this->capacity_ = size;
this->memory_ = new_memory;
if (this->free_pages_.empty()) {
// Expand the region:
- if (this->top_index_ == this->capacity_) {
+ if (this->top_index_ == this->capacity_)
// All the pages are allocated, we need add more pages:
this->resize(2 * this->capacity_);
- }
// Use a page from the top:
return this->top_index_++;
}
#endif /* SIMGRID_TEST */
-
-}