Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Enum class for MC call types, and MC comm pattern differences.
[simgrid.git] / src / mc / mc_state.cpp
index d5e0c20..de4158b 100644 (file)
@@ -58,18 +58,20 @@ Transition State::get_transition() const
  */
 static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::State* state, smx_actor_t actor)
 {
+  using simgrid::simix::Simcall;
+
   /* reset the outgoing transition */
   simgrid::mc::ActorState* procstate   = &state->actor_states_[actor->get_pid()];
   state->transition_.pid_              = -1;
   state->transition_.argument_         = -1;
-  state->executed_req_.call_           = SIMCALL_NONE;
+  state->executed_req_.call_           = Simcall::NONE;
 
   if (not simgrid::mc::actor_is_enabled(actor))
     return nullptr; // Not executable in the application
 
   smx_simcall_t req = nullptr;
   switch (actor->simcall_.call_) {
-    case SIMCALL_COMM_WAITANY:
+    case Simcall::COMM_WAITANY:
       state->transition_.argument_ = -1;
       while (procstate->times_considered < simcall_comm_waitany__get__count(&actor->simcall_)) {
         if (simgrid::mc::request_is_enabled_by_idx(&actor->simcall_, procstate->times_considered)) {
@@ -86,7 +88,7 @@ static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::Sta
         req = &actor->simcall_;
       break;
 
-    case SIMCALL_COMM_TESTANY: {
+    case Simcall::COMM_TESTANY: {
       unsigned start_count       = procstate->times_considered;
       state->transition_.argument_ = -1;
       while (procstate->times_considered < simcall_comm_testany__get__count(&actor->simcall_)) {
@@ -107,7 +109,7 @@ static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::Sta
       break;
     }
 
-    case SIMCALL_COMM_WAIT: {
+    case Simcall::COMM_WAIT: {
       simgrid::mc::RemotePtr<simgrid::kernel::activity::CommImpl> remote_act =
           remote(simcall_comm_wait__getraw__comm(&actor->simcall_));
       simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_act;
@@ -125,7 +127,7 @@ static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::Sta
       break;
     }
 
-    case SIMCALL_MC_RANDOM: {
+    case Simcall::MC_RANDOM: {
       int min_value                = simcall_mc_random__get__min(&actor->simcall_);
       state->transition_.argument_ = procstate->times_considered + min_value;
       procstate->times_considered++;
@@ -152,8 +154,8 @@ static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::Sta
   /* The waitany and testany request are transformed into a wait or test request over the corresponding communication
    * action so it can be treated later by the dependence function. */
   switch (req->call_) {
-    case SIMCALL_COMM_WAITANY: {
-      state->internal_req_.call_ = SIMCALL_COMM_WAIT;
+    case Simcall::COMM_WAITANY: {
+      state->internal_req_.call_ = Simcall::COMM_WAIT;
       simgrid::kernel::activity::CommImpl* remote_comm;
       remote_comm = mc_model_checker->get_remote_simulation().read(
           remote(simcall_comm_waitany__get__comms(req) + state->transition_.argument_));
@@ -163,8 +165,8 @@ static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::Sta
       break;
     }
 
-    case SIMCALL_COMM_TESTANY:
-      state->internal_req_.call_ = SIMCALL_COMM_TEST;
+    case Simcall::COMM_TESTANY:
+      state->internal_req_.call_ = Simcall::COMM_TEST;
 
       if (state->transition_.argument_ > 0) {
         simgrid::kernel::activity::CommImpl* remote_comm = mc_model_checker->get_remote_simulation().read(
@@ -176,14 +178,14 @@ static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::Sta
       simcall_comm_test__set__result(&state->internal_req_, state->transition_.argument_);
       break;
 
-    case SIMCALL_COMM_WAIT:
+    case Simcall::COMM_WAIT:
       mc_model_checker->get_remote_simulation().read_bytes(&state->internal_comm_, sizeof(state->internal_comm_),
                                                            remote(simcall_comm_wait__getraw__comm(req)));
       simcall_comm_wait__set__comm(&state->executed_req_, state->internal_comm_.get_buffer());
       simcall_comm_wait__set__comm(&state->internal_req_, state->internal_comm_.get_buffer());
       break;
 
-    case SIMCALL_COMM_TEST:
+    case Simcall::COMM_TEST:
       mc_model_checker->get_remote_simulation().read_bytes(&state->internal_comm_, sizeof(state->internal_comm_),
                                                            remote(simcall_comm_test__getraw__comm(req)));
       simcall_comm_test__set__comm(&state->executed_req_, state->internal_comm_.get_buffer());