#include <vector>
#include <memory>
-#include <boost/range/iterator_range.hpp>
-
#include <sys/types.h>
#include <simgrid_config.h>
#include <xbt/base.h>
#include <xbt/dynar.h>
-#include <xbt/dynar.hpp>
#include <xbt/mmalloc.h>
-#ifdef HAVE_MC
+#if HAVE_MC
#include "src/xbt/mmalloc/mmprivate.h"
#endif
};
/** Representation of a process
+ *
+ * This class is mixing a lot of differents responsabilities and is tied
+ * to SIMIX. It should probably split into different classes.
+ *
+ * Responsabilities:
+ *
+ * - reading from the process memory (`AddressSpace`);
+ * - accessing the system state of the porcess (heap, …);
+ * - storing the SIMIX state of the process;
+ * - privatization;
+ * - communication with the model-checked process;
+ * - stack unwinding;
+ * - etc.
*/
class Process final : public AddressSpace {
public:
void ignore_local_variable(const char *var_name, const char *frame_name);
int socket() { return socket_; }
- simgrid::xbt::DynarRange<s_mc_smx_process_info> simix_processes();
+ std::vector<simgrid::mc::SimixProcessInformation>& simix_processes();
+ std::vector<simgrid::mc::SimixProcessInformation>& old_simix_processes();
private:
void init_memory_map_info();
void refresh_heap();
void refresh_malloc_info();
+ void refresh_simix();
private:
pid_t pid_ = -1;