Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mc: move some files related to ELF, DWARF or unwind reading into their own directory
[simgrid.git] / src / mc / Session.hpp
index 11afeda..342e37c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016. The SimGrid Team.
+/* Copyright (c) 2016-2019. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
 #include <sys/prctl.h>
 #endif
 
-#include <sys/types.h>
+#include "xbt/sysdep.h"
+#include "xbt/system_error.hpp"
 #include <sys/socket.h>
-#include <xbt/sysdep.h>
-#include <xbt/system_error.hpp>
+#include <sys/types.h>
 
 #include <functional>
 
-#include <xbt/log.h>
+#include "xbt/log.h"
 
 #include "src/mc/mc_forward.hpp"
 #include "src/mc/ModelChecker.hpp"
@@ -39,7 +39,6 @@ private:
   std::unique_ptr<ModelChecker> modelChecker_;
   std::shared_ptr<simgrid::mc::Snapshot> initialSnapshot_;
 
-private:
   Session(pid_t pid, int socket);
 
   // No copy:
@@ -50,26 +49,36 @@ public:
   ~Session();
   void close();
 
-public:
   void initialize();
   void execute(Transition const& transition);
   void logState();
 
   void restoreInitialState();
 
-public: // static constructors
+  // static constructors
 
   /** Create a new session by forking
+   *
+   *  This sets up the environment for the model-checked process
+   *  (environoment variables, sockets, etc.).
    *
    *  The code is expected to `exec` the model-checker program.
    */
-  static Session* fork(std::function<void(void)> code);
+  static Session* fork(const std::function<void()>& code);
 
-  /** Create a session using `execv` */
+  /** Spawn a model-checked process
+   *
+   *  @param path full path of the executable
+   *  @param argv arguments for the model-checked process (NULL-terminated)
+   */
   static Session* spawnv(const char *path, char *const argv[]);
 
-  /** Create a session using `execvp` */
-  static Session* spawnvp(const char *path, char *const argv[]);
+  /** Spawn a model-checked process (using PATH)
+   *
+   *  @param file file name of the executable (found using `PATH`)
+   *  @param argv arguments for the model-checked process (NULL-terminated)
+   */
+  static Session* spawnvp(const char *file, char *const argv[]);
 };
 
 // Temporary