X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f4d38cfaf4833e416c72a7ca427dd5cd6a0af2e2..83f28c874af4faaeaaa19571afc2cd52c801da39:/src/simix/smx_host.cpp diff --git a/src/simix/smx_host.cpp b/src/simix/smx_host.cpp index 53fd30cd5d..b7ce26dd56 100644 --- a/src/simix/smx_host.cpp +++ b/src/simix/smx_host.cpp @@ -24,9 +24,9 @@ const char* sg_host_self_get_name() return host->get_cname(); } -simgrid::kernel::activity::ExecImplPtr SIMIX_execution_parallel_start(std::string name, int host_nb, - sg_host_t* host_list, double* flops_amount, - double* bytes_amount, double rate, double timeout) +simgrid::kernel::activity::ExecImplPtr +SIMIX_execution_parallel_start(std::string name, int host_nb, const sg_host_t* host_list, const double* flops_amount, + const double* bytes_amount, double rate, double timeout) { /* Check that we are not mixing VMs and PMs in the parallel task */ @@ -47,7 +47,7 @@ simgrid::kernel::activity::ExecImplPtr SIMIX_execution_parallel_start(std::strin } simgrid::kernel::activity::ExecImplPtr exec = simgrid::kernel::activity::ExecImplPtr( - new simgrid::kernel::activity::ExecImpl(name, "", timeout_detector, nullptr)); + new simgrid::kernel::activity::ExecImpl(std::move(name), "", timeout_detector, nullptr)); if (surf_action != nullptr) { exec->surf_action_ = surf_action; exec->surf_action_->set_data(exec.get()); @@ -124,12 +124,14 @@ void SIMIX_execution_finish(smx_activity_t synchro) default: xbt_die("Internal error in SIMIX_execution_finish: unexpected synchro state %d", (int)exec->state_); } - /* Fail the process if the host is down */ - if (simcall->issuer->host_->is_off()) - simcall->issuer->context_->iwannadie = true; simcall->issuer->waiting_synchro = nullptr; simcall_execution_wait__set__result(simcall, exec->state_); - SIMIX_simcall_answer(simcall); + + /* Fail the process if the host is down */ + if (simcall->issuer->host_->is_on()) + SIMIX_simcall_answer(simcall); + else + simcall->issuer->context_->iwannadie = true; } }