X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/05f306119e96e0429a97b53a5faf5c791f6b59a8..c2184f1318115fcea2571f738e8359044bc78d42:/src/mc/RegionSnapshot.hpp diff --git a/src/mc/RegionSnapshot.hpp b/src/mc/RegionSnapshot.hpp index 9707681d3f..3ab73611ab 100644 --- a/src/mc/RegionSnapshot.hpp +++ b/src/mc/RegionSnapshot.hpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2007-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2007-2018. 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. */ @@ -13,12 +12,12 @@ #include #include -#include +#include "xbt/base.h" -#include "src/mc/remote_ptr.hpp" -#include "src/mc/PageStore.hpp" #include "src/mc/AddressSpace.hpp" #include "src/mc/ChunkedData.hpp" +#include "src/mc/PageStore.hpp" +#include "src/mc/remote/RemotePtr.hpp" namespace simgrid { namespace mc { @@ -29,7 +28,6 @@ enum class RegionType { Data = 2 }; -// TODO, use Boost.Variant instead of this enum class StorageType { NoData = 0, Flat = 1, @@ -46,12 +44,12 @@ private: void* data_ = nullptr; std::size_t size_; Type type_ = Type::Malloc; -private: + Buffer(std::size_t size, Type type = Type::Malloc); Buffer(void* data, std::size_t size, Type type = Type::Malloc) : data_(data), size_(size), type_(type) {} public: - Buffer() {} + Buffer() = default; void clear() noexcept; ~Buffer() noexcept { clear(); } @@ -102,9 +100,9 @@ public: * * sparse/per-page snapshots are snaapshots which shared * identical pages. * - * * privatized (SMPI global variable privatisation). + * * privatized (SMPI global variable privatization). * - * This is handled with a variant based approch: + * This is handled with a variant based approach: * * * `storage_type` identified the type of storage; * @@ -158,20 +156,20 @@ public: size_(size), permanent_addr_(permanent_addr) {} - ~RegionSnapshot() {} + ~RegionSnapshot() = default; RegionSnapshot(RegionSnapshot const&) = default; RegionSnapshot& operator=(RegionSnapshot const&) = default; RegionSnapshot(RegionSnapshot&& that) + : region_type_(that.region_type_) + , storage_type_(that.storage_type_) + , object_info_(that.object_info_) + , start_addr_(that.start_addr_) + , size_(that.size_) + , permanent_addr_(that.permanent_addr_) + , flat_data_(std::move(that.flat_data_)) + , page_numbers_(std::move(that.page_numbers_)) + , privatized_regions_(std::move(that.privatized_regions_)) { - region_type_ = that.region_type_; - storage_type_ = that.storage_type_; - object_info_ = that.object_info_; - start_addr_ = that.start_addr_; - size_ = that.size_; - permanent_addr_ = that.permanent_addr_; - flat_data_ = std::move(that.flat_data_); - page_numbers_ = std::move(that.page_numbers_); - privatized_regions_ = std::move(that.privatized_regions_); that.clear(); } RegionSnapshot& operator=(RegionSnapshot&& that) @@ -211,7 +209,7 @@ public: page_numbers_.clear(); privatized_regions_.clear(); } - + void flat_data(Buffer data) { storage_type_ = StorageType::Flat; @@ -252,14 +250,14 @@ public: // Other getters - remote_ptr start() const { return remote(start_addr_); } - remote_ptr end() const { return remote((char*)start_addr_ + size_); } - remote_ptr permanent_address() const { return remote(permanent_addr_); } + RemotePtr start() const { return remote(start_addr_); } + RemotePtr end() const { return remote((char*)start_addr_ + size_); } + RemotePtr permanent_address() const { return remote(permanent_addr_); } std::size_t size() const { return size_; } StorageType storage_type() const { return storage_type_; } RegionType region_type() const { return region_type_; } - bool contain(remote_ptr p) const + bool contain(RemotePtr p) const { return p >= start() && p < end(); } @@ -267,19 +265,17 @@ public: RegionSnapshot privatized_region( RegionType region_type, void *start_addr, void* permanent_addr, - std::size_t size, const RegionSnapshot* ref_region); + std::size_t size); RegionSnapshot dense_region( RegionType type, void *start_addr, void* data_addr, std::size_t size); simgrid::mc::RegionSnapshot sparse_region( - RegionType type, void *start_addr, void* data_addr, std::size_t size, - RegionSnapshot const* ref_region); + RegionType type, void *start_addr, void* data_addr, std::size_t size); simgrid::mc::RegionSnapshot region( - RegionType type, void *start_addr, void* data_addr, std::size_t size, - RegionSnapshot const* ref_region); + RegionType type, void *start_addr, void* data_addr, std::size_t size); } } -typedef class simgrid::mc::RegionSnapshot s_mc_mem_region_t, *mc_mem_region_t; - +typedef simgrid::mc::RegionSnapshot s_mc_mem_region_t; +typedef s_mc_mem_region_t* mc_mem_region_t; #endif