Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Move MC_report() functions as static functions where they're used
[simgrid.git] / src / mc / mc_state.h
index c3d6190..599b0cb 100644 (file)
@@ -17,6 +17,7 @@
 #include "src/simix/smx_private.h"
 #include "src/mc/mc_snapshot.h"
 #include "src/mc/mc_record.h"
+#include "src/mc/Transition.hpp"
 
 namespace simgrid {
 namespace mc {
@@ -103,40 +104,25 @@ public:
   }
 };
 
-/* An exploration state.
- *
- *  The `executed_state` is sometimes transformed into another `internal_req`.
- *  For example WAITANY is transformes into a WAIT and TESTANY into TEST.
- *  See `MC_state_get_request_for_process()`.
+/* A node in the exploration graph (kind-of)
  */
 struct XBT_PRIVATE State {
 
   /** Sequential state number (used for debugging) */
   int num = 0;
 
-  /* Next transition to explore for this communication
-   *
-   * Some transitions are not deterministic such as:
-   *
-   * * waitany which can receive different messages;
-   *
-   * * random which can produce different values.
-   *
-   * This variable is used to keep track of which transition
-   * should be explored next for a given simcall.
-   */
-  int req_num = 0;
-
   /** State's exploration status by process */
   std::vector<ProcessState> processStates;
 
-  /** The simcall */
+  Transition transition;
+
+  /** The simcall which was executed */
   s_smx_simcall_t executed_req;
 
   /* Internal translation of the simcall
    *
-   * IMCALL_COMM_TESTANY is translated to a SIMCALL_COMM_TEST
-   * and SIMCALL_COMM_WAITANY to a SIMCALL_COMM_WAIT.
+   * SIMCALL_COMM_TESTANY is translated to a SIMCALL_COMM_TEST
+   * and SIMCALL_COMM_WAITANY to a SIMCALL_COMM_WAIT.  
    */
   s_smx_simcall_t internal_req;
 
@@ -157,7 +143,7 @@ struct XBT_PRIVATE State {
   {
     this->processStates[process->pid].interleave();
   }
-  RecordTraceElement getRecordElement() const;
+  Transition getTransition() const;
 };
 
 XBT_PRIVATE void replay(std::list<std::unique_ptr<simgrid::mc::State>> const& stack);
@@ -165,9 +151,7 @@ XBT_PRIVATE void replay(std::list<std::unique_ptr<simgrid::mc::State>> const& st
 }
 }
 
-XBT_PRIVATE simgrid::mc::State* MC_state_new(void);
-XBT_PRIVATE smx_simcall_t MC_state_get_executed_request(simgrid::mc::State* state, int *value);
-XBT_PRIVATE smx_simcall_t MC_state_get_internal_request(simgrid::mc::State* state);
-XBT_PRIVATE smx_simcall_t MC_state_get_request(simgrid::mc::State* state, int *value);
+XBT_PRIVATE simgrid::mc::State* MC_state_new(unsigned long state_number);
+XBT_PRIVATE smx_simcall_t MC_state_get_request(simgrid::mc::State* state);
 
 #endif