From 4dab43b565697db8842f7bdaf9baa4c28f5a2082 Mon Sep 17 00:00:00 2001 From: Gabriel Corona Date: Wed, 6 Apr 2016 14:42:00 +0200 Subject: [PATCH 1/1] [mc] Document/cleanup State --- src/mc/VisitedState.cpp | 1 - src/mc/mc_state.h | 45 +++++++++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/mc/VisitedState.cpp b/src/mc/VisitedState.cpp index 88c91758e1..746a0f115d 100644 --- a/src/mc/VisitedState.cpp +++ b/src/mc/VisitedState.cpp @@ -81,7 +81,6 @@ std::unique_ptr VisitedStates::addVisitedState(simgri std::unique_ptr new_state = std::unique_ptr(new VisitedState()); graph_state->system_state = new_state->system_state; - graph_state->in_visited_states = 1; XBT_DEBUG("Snapshot %p of visited state %d (exploration stack state %d)", new_state->system_state.get(), new_state->num, graph_state->num); diff --git a/src/mc/mc_state.h b/src/mc/mc_state.h index 3fb62da892..5ddfcf9385 100644 --- a/src/mc/mc_state.h +++ b/src/mc/mc_state.h @@ -91,21 +91,44 @@ struct ProcessState { * See `MC_state_set_executed_request()`. */ 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 processStates; - s_smx_synchro_t internal_comm; /* To be referenced by the internal_req */ - s_smx_simcall_t internal_req; /* Internal translation of request */ - s_smx_simcall_t executed_req; /* The executed request of the state */ - int req_num = 0; /* The request number (in the case of a - multi-request like waitany ) */ - std::shared_ptr system_state = nullptr; /* Snapshot of system state */ - int num = 0; - int in_visited_states = 0; - // comm determinism verification (xbt_dynar_t): - std::vector> incomplete_comm_pattern; + /** The simcall */ + 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. + */ + s_smx_simcall_t internal_req; + + /* Can be used as a copy of the remote synchro object */ + s_smx_synchro_t internal_comm; - // For communication determinism verification: + /** Snapshot of system state (if needed) */ + std::shared_ptr system_state; + + // For CommunicationDeterminismChecker + std::vector> incomplete_comm_pattern; std::vector communicationIndices; State(); -- 2.20.1