From 5c12b10224870f6f78c90ae7d5747cd93a60f458 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Thu, 16 May 2019 02:01:35 +0200 Subject: [PATCH] mc: inline two functions --- src/mc/sosp/mc_checkpoint.cpp | 11 +++++++- src/mc/sosp/mc_page_snapshot.cpp | 47 -------------------------------- src/mc/sosp/mc_snapshot.hpp | 5 ---- tools/cmake/DefinePackages.cmake | 1 - 4 files changed, 10 insertions(+), 54 deletions(-) delete mode 100644 src/mc/sosp/mc_page_snapshot.cpp diff --git a/src/mc/sosp/mc_checkpoint.cpp b/src/mc/sosp/mc_checkpoint.cpp index b2224456c3..9951c16294 100644 --- a/src/mc/sosp/mc_checkpoint.cpp +++ b/src/mc/sosp/mc_checkpoint.cpp @@ -65,7 +65,16 @@ static void restore(RegionSnapshot* region) break; case simgrid::mc::StorageType::Chunked: - mc_region_restore_sparse(&mc_model_checker->process(), region); + xbt_assert(((region->permanent_address().address()) & (xbt_pagesize - 1)) == 0, "Not at the beginning of a page"); + xbt_assert(simgrid::mc::mmu::chunkCount(region->size()) == region->page_data().page_count()); + + for (size_t i = 0; i != region->page_data().page_count(); ++i) { + void* target_page = + (void*)simgrid::mc::mmu::join(i, (std::uintptr_t)(void*)region->permanent_address().address()); + const void* source_page = region->page_data().page(i); + mc_model_checker->process().write_bytes(source_page, xbt_pagesize, remote(target_page)); + } + break; case simgrid::mc::StorageType::Privatized: diff --git a/src/mc/sosp/mc_page_snapshot.cpp b/src/mc/sosp/mc_page_snapshot.cpp deleted file mode 100644 index a8e0640e93..0000000000 --- a/src/mc/sosp/mc_page_snapshot.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (c) 2014-2019. The SimGrid Team. All rights reserved. */ - -/* 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. */ - -/* MC interface: definitions that non-MC modules must see, but not the user */ - -#include // pread, pwrite - -#include "src/mc/mc_mmu.hpp" -#include "src/mc/mc_private.hpp" -#include "src/mc/sosp/PageStore.hpp" -#include "src/mc/sosp/mc_snapshot.hpp" - -#include "src/mc/sosp/ChunkedData.hpp" -#include - -using simgrid::mc::remote; - -/** @brief Restore a snapshot of a region - * - * If possible, the restoration will be incremental - * (the modified pages will not be touched). - * - * @param start_addr - * @param page_count Number of pages of the region - * @param pagenos - */ -void mc_restore_page_snapshot_region(simgrid::mc::RemoteClient* process, void* start_addr, - simgrid::mc::ChunkedData const& pages_copy) -{ - for (size_t i = 0; i != pages_copy.page_count(); ++i) { - // Otherwise, copy the page: - void* target_page = (void*)simgrid::mc::mmu::join(i, (std::uintptr_t)start_addr); - const void* source_page = pages_copy.page(i); - process->write_bytes(source_page, xbt_pagesize, remote(target_page)); - } -} - -// ***** High level API - -void mc_region_restore_sparse(simgrid::mc::RemoteClient* process, simgrid::mc::RegionSnapshot* reg) -{ - xbt_assert(((reg->permanent_address().address()) & (xbt_pagesize - 1)) == 0, "Not at the beginning of a page"); - xbt_assert(simgrid::mc::mmu::chunkCount(reg->size()) == reg->page_data().page_count()); - mc_restore_page_snapshot_region(process, (void*)reg->permanent_address().address(), reg->page_data()); -} diff --git a/src/mc/sosp/mc_snapshot.hpp b/src/mc/sosp/mc_snapshot.hpp index 785c76ae79..b02b4d6002 100644 --- a/src/mc/sosp/mc_snapshot.hpp +++ b/src/mc/sosp/mc_snapshot.hpp @@ -13,8 +13,6 @@ // ***** Snapshot region -XBT_PRIVATE void mc_region_restore_sparse(simgrid::mc::RemoteClient* process, simgrid::mc::RegionSnapshot* reg); - static XBT_ALWAYS_INLINE void* mc_translate_address_region_chunked(uintptr_t addr, simgrid::mc::RegionSnapshot* region) { auto split = simgrid::mc::mmu::split(addr - region->start().address()); @@ -136,9 +134,6 @@ XBT_PRIVATE void restore_snapshot(std::shared_ptr snapshot); } // namespace mc } // namespace simgrid -XBT_PRIVATE void mc_restore_page_snapshot_region(simgrid::mc::RemoteClient* process, void* start_addr, - simgrid::mc::ChunkedData const& pagenos); - const void* MC_region_read_fragmented(simgrid::mc::RegionSnapshot* region, void* target, const void* addr, std::size_t size); diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index b856d198b7..8f61acb2be 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -612,7 +612,6 @@ set(MC_SRC src/mc/sosp/mc_checkpoint.cpp src/mc/sosp/mc_snapshot.hpp src/mc/sosp/mc_snapshot.cpp - src/mc/sosp/mc_page_snapshot.cpp src/mc/AddressSpace.hpp src/mc/Frame.hpp -- 2.20.1