Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Use std::unique_ptr for Process::heap
[simgrid.git] / src / mc / Process.hpp
index e3a11cc..f6b941a 100644 (file)
 #include <xbt/mmalloc.h>
 
 #ifdef HAVE_MC
-#include "xbt/mmalloc/mmprivate.h"
+#include "src/xbt/mmalloc/mmprivate.h"
 #endif
 
 #include <simgrid/simix.h>
-#include "simix/popping_private.h"
-#include "simix/smx_private.h"
+#include "src/simix/popping_private.h"
+#include "src/simix/smx_private.h"
 
 #include "mc_forward.hpp"
 #include "mc_base.h"
 #include "AddressSpace.hpp"
 #include "mc_protocol.h"
 
-typedef int mc_process_flags_t;
-#define MC_PROCESS_NO_FLAG 0
-#define MC_PROCESS_SELF_FLAG 1
-
 // Those flags are used to track down which cached information
 // is still up to date and which information needs to be updated.
 typedef int mc_process_cache_flags_t;
@@ -57,16 +53,15 @@ struct IgnoredRegion {
 
 /** Representation of a process
  */
-class Process : public AddressSpace {
+class Process final : public AddressSpace {
 public:
   Process(pid_t pid, int sockfd);
   ~Process();
 
-
-  bool is_self() const
-  {
-    return this->process_flags & MC_PROCESS_SELF_FLAG;
-  }
+  Process(Process const&) = delete;
+  Process(Process &&) = delete;
+  Process& operator=(Process const&) = delete;
+  Process& operator=(Process &&) = delete;
 
   // Read memory:
   const void* read_bytes(void* buffer, std::size_t size,
@@ -99,7 +94,7 @@ public:
   {
     if (!(this->cache_flags & MC_PROCESS_CACHE_FLAG_HEAP))
       this->refresh_heap();
-    return this->heap;
+    return this->heap.get();
   }
   malloc_info* get_malloc_info()
   {
@@ -164,7 +159,6 @@ private:
   void refresh_heap();
   void refresh_malloc_info();
 private:
-  mc_process_flags_t process_flags;
   pid_t pid_;
   int socket_;
   int status_;
@@ -206,7 +200,7 @@ public: // Copies of MCed SMX data structures
    *  This is not used if the process is the current one:
    *  use `get_heap_info()` in order to use it.
    */
-   xbt_mheap_t heap;
+   std::unique_ptr<s_xbt_mheap_t> heap;
 
   /** Copy of the allocation info structure
    *