/* If any of the process is suspend, create the synchro but stop its execution,
it will be restarted when the sender process resume */
- if (SIMIX_process_is_suspended(comm->src_proc) ||
- SIMIX_process_is_suspended(comm->dst_proc)) {
- /* FIXME: check what should happen with the synchro state */
-
+ if (SIMIX_process_is_suspended(comm->src_proc) || SIMIX_process_is_suspended(comm->dst_proc)) {
if (SIMIX_process_is_suspended(comm->src_proc))
- XBT_DEBUG("The communication is suspended on startup because src (%s:%s) were suspended since it initiated the communication",
- sg_host_get_name(comm->src_proc->host), comm->src_proc->name);
+ XBT_DEBUG("The communication is suspended on startup because src (%s@%s) was suspended since it initiated the communication",
+ comm->src_proc->name, sg_host_get_name(comm->src_proc->host));
else
- XBT_DEBUG("The communication is suspended on startup because dst (%s:%s) were suspended since it initiated the communication",
- sg_host_get_name(comm->dst_proc->host), comm->dst_proc->name);
+ XBT_DEBUG("The communication is suspended on startup because dst (%s@%s) was suspended since it initiated the communication",
+ comm->dst_proc->name, sg_host_get_name(comm->dst_proc->host));
comm->surf_comm->suspend();
}
static_cast<simgrid::simix::Comm*>(synchro)->unref();
}
-/**
- * \brief This function is called when a Surf communication synchro is finished.
- * \param synchro the corresponding Simix communication
- */
-void SIMIX_post_comm(smx_synchro_t synchro)
-{
- simgrid::simix::Comm *comm = static_cast<simgrid::simix::Comm*>(synchro);
-
- /* Update synchro state */
- if (comm->src_timeout &&
- comm->src_timeout->getState() == simgrid::surf::Action::State::done)
- synchro->state = SIMIX_SRC_TIMEOUT;
- else if (comm->dst_timeout &&
- comm->dst_timeout->getState() == simgrid::surf::Action::State::done)
- synchro->state = SIMIX_DST_TIMEOUT;
- else if (comm->src_timeout &&
- comm->src_timeout->getState() == simgrid::surf::Action::State::failed)
- synchro->state = SIMIX_SRC_HOST_FAILURE;
- else if (comm->dst_timeout &&
- comm->dst_timeout->getState() == simgrid::surf::Action::State::failed)
- synchro->state = SIMIX_DST_HOST_FAILURE;
- else if (comm->surf_comm &&
- comm->surf_comm->getState() == simgrid::surf::Action::State::failed) {
- synchro->state = SIMIX_LINK_FAILURE;
- } else
- synchro->state = SIMIX_DONE;
-
- XBT_DEBUG("SIMIX_post_comm: comm %p, state %d, src_proc %p, dst_proc %p, detached: %d",
- comm, (int)comm->state, comm->src_proc, comm->dst_proc, comm->detached);
-
- /* destroy the surf actions associated with the Simix communication */
- comm->cleanupSurf();
-
- /* if there are simcalls associated with the synchro, then answer them */
- if (xbt_fifo_size(synchro->simcalls)) {
- SIMIX_comm_finish(comm);
- }
-}
-
/******************************************************************************/
/* SIMIX_comm_copy_data callbacks */
/******************************************************************************/