X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b87fc0829538ec066fd077e6c30ee6270b8abd78..5e7d79b763a5f55d1afb579d2b5a8d30ccfe869c:/src/simix/popping.cpp diff --git a/src/simix/popping.cpp b/src/simix/popping.cpp index 91a79b1091..daeacbdd67 100644 --- a/src/simix/popping.cpp +++ b/src/simix/popping.cpp @@ -3,10 +3,10 @@ /* 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. */ -#include "smx_private.h" +#include "smx_private.hpp" #include "xbt/xbt_os_thread.h" #if SIMGRID_HAVE_MC -#include "src/mc/mc_private.h" +#include "src/mc/mc_private.hpp" #endif #include "src/kernel/activity/CommImpl.hpp" @@ -24,17 +24,20 @@ void SIMIX_simcall_answer(smx_simcall_t simcall) XBT_DEBUG("Answer simcall %s (%d) issued by %s (%p)", SIMIX_simcall_name(simcall->call), (int)simcall->call, simcall->issuer->name.c_str(), simcall->issuer); simcall->issuer->simcall.call = SIMCALL_NONE; +#if 0 /* This check should be useless and slows everyone. Reactivate if you see something weird in process scheduling. */ - // if (std::find(begin(simix_global->process_to_run), end(simix_global->process_to_run), simcall->issuer) != - // end(simix_global->process_to_run)) - // DIE_IMPOSSIBLE; + if (std::find(begin(simix_global->process_to_run), end(simix_global->process_to_run), simcall->issuer) != + end(simix_global->process_to_run)) + DIE_IMPOSSIBLE; +#endif simix_global->process_to_run.push_back(simcall->issuer); } } -void SIMIX_simcall_exit(smx_activity_t synchro) +void SIMIX_simcall_exit(smx_activity_t activity) { - synchro->post(); + if (activity != nullptr) // When migrating, the surf activity is disconnected from its simix activity before cancel + activity->post(); } void SIMIX_run_kernel(std::function const* code)