Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Move ignore_local_variable() into Process
[simgrid.git] / src / mc / Process.hpp
index 5d50961..0b47eac 100644 (file)
@@ -54,6 +54,13 @@ struct IgnoredRegion {
   size_t size;
 };
 
+struct IgnoredHeapRegion {
+  int block;
+  int fragment;
+  void *address;
+  size_t size;
+};
+
 /** Representation of a process
  */
 class Process final : public AddressSpace {
@@ -161,6 +168,31 @@ public:
   }
   void privatized(bool privatized) { privatized_ = privatized; }
 
+  void ignore_global_variable(const char* name)
+  {
+    for (std::shared_ptr<simgrid::mc::ObjectInformation> const& info :
+        this->object_infos)
+      info->remove_global_variable(name);
+  }
+
+  std::vector<s_stack_region_t>& stack_areas()
+  {
+    return stack_areas_;
+  }
+  std::vector<s_stack_region_t> const& stack_areas() const
+  {
+    return stack_areas_;
+  }
+
+  std::vector<IgnoredHeapRegion> const& ignored_heap() const
+  {
+    return ignored_heap_;
+  }
+  void ignore_heap(IgnoredHeapRegion const& region);
+  void unignore_heap(void *address, size_t size);
+
+  void ignore_local_variable(const char *var_name, const char *frame_name);
+
 private:
   void init_memory_map_info();
   void refresh_heap();
@@ -176,6 +208,9 @@ private:
   int clear_refs_fd_;
   int pagemap_fd_;
   bool privatized_;
+  std::vector<s_stack_region_t> stack_areas_;
+  std::vector<IgnoredHeapRegion> ignored_heap_;
+
 public: // object info
   // TODO, make private (first, objectify simgrid::mc::ObjectInformation*)
   std::vector<std::shared_ptr<simgrid::mc::ObjectInformation>> object_infos;
@@ -247,10 +282,4 @@ XBT_PRIVATE int open_vm(pid_t pid, int flags);
 }
 }
 
-SG_BEGIN_DECL()
-
-XBT_PRIVATE void MC_invalidate_cache(void);
-
-SG_END_DECL()
-
 #endif