Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
explicitely capture variables in lambda to please sonar
[simgrid.git] / src / mc / Process.hpp
index d5ff782..9778702 100644 (file)
@@ -45,8 +45,8 @@ namespace mc {
 class SimixProcessInformation {
 public:
   /** MCed address of the process */
-  RemotePtr<simgrid::simix::Process> address = nullptr;
-  Remote<simgrid::simix::Process> copy;
+  RemotePtr<simgrid::simix::ActorImpl> address = nullptr;
+  Remote<simgrid::simix::ActorImpl> copy;
 
   /** Hostname (owned by `mc_modelchecker->hostnames`) */
   const char* hostname = nullptr;
@@ -74,13 +74,13 @@ struct IgnoredHeapRegion {
 
 /** Representation of a process
  *
- *  This class is mixing a lot of different responsabilities and is tied
+ *  This class is mixing a lot of different responsibilities and is tied
  *  to SIMIX. It should probably be split into different classes.
  *
- *  Responsabilities:
+ *  Responsibilities:
  *
  *  - reading from the process memory (`AddressSpace`);
- *  - accessing the system state of the porcess (heap, …);
+ *  - accessing the system state of the process (heap, …);
  *  - storing the SIMIX state of the process;
  *  - privatization;
  *  - communication with the model-checked process;
@@ -109,15 +109,20 @@ public:
   const void* read_bytes(void* buffer, std::size_t size,
     RemotePtr<void> address, int process_index = ProcessIndexAny,
     ReadOptions options = ReadOptions::none()) const override;
+
   void read_variable(const char* name, void* target, size_t size) const;
+  template<class T> void read_variable(const char* name, T* target) const
+  {
+    read_variable(name, target, sizeof(*target));
+  }
   template<class T>
-  T read_variable(const char *name) const
+  Remote<T> read_variable(const char *name) const
   {
-    static_assert(std::is_trivial<T>::value, "Cannot read a non-trivial type");
-    T res;
-    read_variable(name, &res, sizeof(T));
+    Remote<T> res;
+    read_variable(name, res.getBuffer(), sizeof(T));
     return res;
   }
+
   std::string read_string(RemotePtr<char> address) const;
   std::string read_string(RemotePtr<char> address, std::size_t len) const
   {
@@ -219,7 +224,7 @@ public:
 
   /** Get a local description of a remote SIMIX process */
   simgrid::mc::SimixProcessInformation* resolveProcessInfo(
-    simgrid::mc::RemotePtr<simgrid::simix::Process> process)
+    simgrid::mc::RemotePtr<simgrid::simix::ActorImpl> process)
   {
     xbt_assert(mc_model_checker != nullptr);
     if (!process)
@@ -235,7 +240,7 @@ public:
   }
 
   /** Get a local copy of the SIMIX process structure */
-  simgrid::simix::Process* resolveProcess(simgrid::mc::RemotePtr<simgrid::simix::Process> process)
+  simgrid::simix::ActorImpl* resolveProcess(simgrid::mc::RemotePtr<simgrid::simix::ActorImpl> process)
   {
     simgrid::mc::SimixProcessInformation* process_info =
       this->resolveProcessInfo(process);
@@ -318,7 +323,7 @@ public: // Libunwind-data
    */
   unw_addr_space_t unw_addr_space;
 
-  /** Underlying libunwind addres-space
+  /** Underlying libunwind address-space
    *
    *  The `find_proc_info`, `put_unwind_info`, `get_dyn_info_list_addr`
    *  operations of the native MC address space is currently delegated