X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d656f9465e7b1c36319f86eeafdcec58fe9551a4..e6dcda80c72f6c1c092cf257c308812fe4442599:/src/mc/mc_comm_pattern.hpp diff --git a/src/mc/mc_comm_pattern.hpp b/src/mc/mc_comm_pattern.hpp index cc189d7ae4..ca221ea58d 100644 --- a/src/mc/mc_comm_pattern.hpp +++ b/src/mc/mc_comm_pattern.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -9,74 +9,58 @@ #include #include "smpi/smpi.h" -#include "xbt/dynar.h" - #include "src/mc/mc_state.hpp" namespace simgrid { namespace mc { -struct PatternCommunicationList { - unsigned int index_comm = 0; - std::vector> list; +enum class CallType { + NONE, + SEND, + RECV, + WAIT, + WAITANY, }; -} -} - -extern "C" { - -/** - * Type: `xbt_dynar_t` - */ -extern XBT_PRIVATE xbt_dynar_t initial_communications_pattern; -/** - * Type: `xbt_dynar_t>` - */ -extern XBT_PRIVATE xbt_dynar_t incomplete_communications_pattern; - -enum e_mc_call_type_t { - MC_CALL_TYPE_NONE, - MC_CALL_TYPE_SEND, - MC_CALL_TYPE_RECV, - MC_CALL_TYPE_WAIT, - MC_CALL_TYPE_WAITANY, +enum class CommPatternDifference { + NONE, + TYPE, + RDV, + TAG, + SRC_PROC, + DST_PROC, + DATA_SIZE, + DATA, }; -enum e_mc_comm_pattern_difference_t { - NONE_DIFF, - TYPE_DIFF, - RDV_DIFF, - TAG_DIFF, - SRC_PROC_DIFF, - DST_PROC_DIFF, - DATA_SIZE_DIFF, - DATA_DIFF, +struct PatternCommunicationList { + unsigned int index_comm = 0; + std::vector> list; }; +} // namespace mc +} // namespace simgrid -static inline e_mc_call_type_t MC_get_call_type(smx_simcall_t req) +extern XBT_PRIVATE std::vector initial_communications_pattern; +extern XBT_PRIVATE std::vector> incomplete_communications_pattern; + +static inline simgrid::mc::CallType MC_get_call_type(const s_smx_simcall* req) { - switch (req->call) { - case SIMCALL_COMM_ISEND: - return MC_CALL_TYPE_SEND; - case SIMCALL_COMM_IRECV: - return MC_CALL_TYPE_RECV; - case SIMCALL_COMM_WAIT: - return MC_CALL_TYPE_WAIT; - case SIMCALL_COMM_WAITANY: - return MC_CALL_TYPE_WAITANY; + using simgrid::mc::CallType; + using simgrid::simix::Simcall; + switch (req->call_) { + case Simcall::COMM_ISEND: + return CallType::SEND; + case Simcall::COMM_IRECV: + return CallType::RECV; + case Simcall::COMM_WAIT: + return CallType::WAIT; + case Simcall::COMM_WAITANY: + return CallType::WAITANY; default: - return MC_CALL_TYPE_NONE; + return CallType::NONE; } } -XBT_PRIVATE void MC_handle_comm_pattern(e_mc_call_type_t call_type, smx_simcall_t request, int value, - xbt_dynar_t current_pattern, int backtracking); - XBT_PRIVATE void MC_restore_communications_pattern(simgrid::mc::State* state); -XBT_PRIVATE void MC_state_copy_incomplete_communications_pattern(simgrid::mc::State* state); -XBT_PRIVATE void MC_state_copy_index_communications_pattern(simgrid::mc::State* state); -} - #endif