Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of framagit.org:simgrid/simgrid
[simgrid.git] / src / mc / sosp / Region.hpp
index 4985c61..7ab26e2 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2023. 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. */
@@ -12,8 +12,7 @@
 #include <memory>
 #include <vector>
 
-namespace simgrid {
-namespace mc {
+namespace simgrid::mc {
 
 enum class RegionType { Heap = 1, Data = 2 };
 
@@ -36,8 +35,7 @@ private:
   ChunkedData chunks_;
 
 public:
-  Region(RegionType type, void* start_addr, size_t size);
-  ~Region()             = default;
+  Region(PageStore& store, const RemoteProcessMemory& memory, RegionType type, void* start_addr, size_t size);
   Region(Region const&) = delete;
   Region& operator=(Region const&) = delete;
   Region(Region&& that)            = delete;
@@ -60,7 +58,7 @@ public:
   bool contain(RemotePtr<void> p) const { return p >= start() && p < end(); }
 
   /** @brief Restore a region from a snapshot */
-  void restore();
+  void restore(const RemoteProcessMemory& memory) const;
 
   /** @brief Read memory that was snapshotted in this region
    *
@@ -69,16 +67,15 @@ public:
    *  @param size    Size of the data to read in bytes
    *  @return Pointer where the data is located (either target buffer or original location)
    */
-  void* read(void* target, const void* addr, std::size_t size);
+  void* read(void* target, const void* addr, std::size_t size) const;
 };
 
-} // namespace mc
-} // namespace simgrid
+} // namespace simgrid::mc
 
-int MC_snapshot_region_memcmp(const void* addr1, simgrid::mc::Region* region1, const void* addr2,
-                              simgrid::mc::Region* region2, std::size_t size);
+int MC_snapshot_region_memcmp(const void* addr1, const simgrid::mc::Region* region1, const void* addr2,
+                              const simgrid::mc::Region* region2, std::size_t size);
 
-static XBT_ALWAYS_INLINE void* MC_region_read_pointer(simgrid::mc::Region* region, const void* addr)
+static XBT_ALWAYS_INLINE void* MC_region_read_pointer(const simgrid::mc::Region* region, const void* addr)
 {
   void* res;
   return *(void**)region->read(&res, addr, sizeof(void*));