X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7f4f03348bd07609e258eb3b545bdafc2c881847..a0d711a05dca6280fc380173262b05a5f9fb15b3:/src/simix/smx_network.cpp diff --git a/src/simix/smx_network.cpp b/src/simix/smx_network.cpp index d808503b73..f62fa0a48c 100644 --- a/src/simix/smx_network.cpp +++ b/src/simix/smx_network.cpp @@ -4,6 +4,7 @@ /* 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 "src/surf/surf_interface.hpp" #include "smx_private.h" #include "xbt/log.h" #include "mc/mc.h" @@ -314,17 +315,17 @@ void SIMIX_comm_destroy_internal_actions(smx_synchro_t synchro) #ifdef HAVE_LATENCY_BOUND_TRACKING synchro->latency_limited = SIMIX_comm_is_latency_bounded(synchro); #endif - surf_action_unref(synchro->comm.surf_comm); + synchro->comm.surf_comm->unref(); synchro->comm.surf_comm = NULL; } if (synchro->comm.src_timeout){ - surf_action_unref(synchro->comm.src_timeout); + synchro->comm.src_timeout->unref(); synchro->comm.src_timeout = NULL; } if (synchro->comm.dst_timeout){ - surf_action_unref(synchro->comm.dst_timeout); + synchro->comm.dst_timeout->unref(); synchro->comm.dst_timeout = NULL; } } @@ -334,10 +335,10 @@ void simcall_HANDLER_comm_send(smx_simcall_t simcall, smx_process_t src, smx_rdv void *src_buff, size_t src_buff_size, int (*match_fun)(void *, void *,smx_synchro_t), void (*copy_data_fun)(smx_synchro_t, void*, size_t), - void *data, double timeout){ + void *data, double timeout){ smx_synchro_t comm = simcall_HANDLER_comm_isend(simcall, src, rdv, task_size, rate, - src_buff, src_buff_size, match_fun, NULL, copy_data_fun, - data, 0); + src_buff, src_buff_size, match_fun, NULL, copy_data_fun, + data, 0); SIMCALL_SET_MC_VALUE(simcall, 0); simcall_HANDLER_comm_wait(simcall, comm, timeout); } @@ -347,7 +348,7 @@ smx_synchro_t simcall_HANDLER_comm_isend(smx_simcall_t simcall, smx_process_t sr int (*match_fun)(void *, void *,smx_synchro_t), void (*clean_fun)(void *), // used to free the synchro in case of problem after a detached send void (*copy_data_fun)(smx_synchro_t, void*, size_t),// used to copy data if not default one - void *data, int detached) + void *data, int detached) { XBT_DEBUG("send from %p", rdv); @@ -425,7 +426,7 @@ void simcall_HANDLER_comm_recv(smx_simcall_t simcall, smx_process_t receiver, sm void *data, double timeout, double rate) { smx_synchro_t comm = SIMIX_comm_irecv(receiver, rdv, dst_buff, - dst_buff_size, match_fun, copy_data_fun, data, rate); + dst_buff_size, match_fun, copy_data_fun, data, rate); SIMCALL_SET_MC_VALUE(simcall, 0); simcall_HANDLER_comm_wait(simcall, comm, timeout); } @@ -434,10 +435,10 @@ smx_synchro_t simcall_HANDLER_comm_irecv(smx_simcall_t simcall, smx_process_t re void *dst_buff, size_t *dst_buff_size, int (*match_fun)(void *, void *, smx_synchro_t), void (*copy_data_fun)(smx_synchro_t, void*, size_t), - void *data, double rate) + void *data, double rate) { return SIMIX_comm_irecv(receiver, rdv, dst_buff, dst_buff_size, - match_fun, copy_data_fun, data, rate); + match_fun, copy_data_fun, data, rate); } smx_synchro_t SIMIX_comm_irecv(smx_process_t dst_proc, smx_rdv_t rdv, @@ -464,7 +465,7 @@ smx_synchro_t SIMIX_comm_irecv(smx_process_t dst_proc, smx_rdv_t rdv, other_synchro = this_synchro; SIMIX_rdv_push(rdv, this_synchro); }else{ - if(other_synchro->comm.surf_comm && SIMIX_comm_get_remains(other_synchro)==0.0) + if(other_synchro->comm.surf_comm && SIMIX_comm_get_remains(other_synchro)==0.0) { XBT_DEBUG("comm %p has been already sent, and is finished, destroy it",&(other_synchro->comm)); other_synchro->state = SIMIX_DONE; @@ -609,7 +610,7 @@ void simcall_HANDLER_comm_wait(smx_simcall_t simcall, smx_synchro_t synchro, dou SIMIX_comm_finish(synchro); } else { /* if (timeout >= 0) { we need a surf sleep action even when there is no timeout, otherwise surf won't tell us when the host fails */ sleep = surf_host_sleep(simcall->issuer->host, timeout); - surf_action_set_data(sleep, synchro); + sleep->setData(synchro); if (simcall->issuer == synchro->comm.src_proc) synchro->comm.src_timeout = sleep; @@ -723,20 +724,20 @@ static inline void SIMIX_comm_start(smx_synchro_t synchro) sg_host_t receiver = synchro->comm.dst_proc->host; XBT_DEBUG("Starting communication %p from '%s' to '%s'", synchro, - SIMIX_host_get_name(sender), SIMIX_host_get_name(receiver)); + sg_host_get_name(sender), sg_host_get_name(receiver)); synchro->comm.surf_comm = surf_network_model_communicate(surf_network_model, - sender, receiver, - synchro->comm.task_size, synchro->comm.rate); + sender, receiver, + synchro->comm.task_size, synchro->comm.rate); - surf_action_set_data(synchro->comm.surf_comm, synchro); + synchro->comm.surf_comm->setData(synchro); synchro->state = SIMIX_RUNNING; /* If a link is failed, detect it immediately */ - if (surf_action_get_state(synchro->comm.surf_comm) == SURF_ACTION_FAILED) { + if (synchro->comm.surf_comm->getState() == SURF_ACTION_FAILED) { XBT_DEBUG("Communication from '%s' to '%s' failed to start because of a link failure", - SIMIX_host_get_name(sender), SIMIX_host_get_name(receiver)); + sg_host_get_name(sender), sg_host_get_name(receiver)); synchro->state = SIMIX_LINK_FAILURE; SIMIX_comm_destroy_internal_actions(synchro); } @@ -749,12 +750,12 @@ static inline void SIMIX_comm_start(smx_synchro_t synchro) if (SIMIX_process_is_suspended(synchro->comm.src_proc)) XBT_DEBUG("The communication is suspended on startup because src (%s:%s) were suspended since it initiated the communication", - SIMIX_host_get_name(synchro->comm.src_proc->host), synchro->comm.src_proc->name); + sg_host_get_name(synchro->comm.src_proc->host), synchro->comm.src_proc->name); else XBT_DEBUG("The communication is suspended on startup because dst (%s:%s) were suspended since it initiated the communication", - SIMIX_host_get_name(synchro->comm.dst_proc->host), synchro->comm.dst_proc->name); + sg_host_get_name(synchro->comm.dst_proc->host), synchro->comm.dst_proc->name); - surf_action_suspend(synchro->comm.surf_comm); + synchro->comm.surf_comm->suspend(); } } @@ -792,8 +793,7 @@ void SIMIX_comm_finish(smx_synchro_t synchro) /* Check out for errors */ - if (surf_host_get_state(surf_host_resource_priv( - simcall->issuer->host)) != SURF_RESOURCE_ON) { + if (simcall->issuer->host->is_off()) { simcall->issuer->context->iwannadie = 1; SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed"); } else @@ -871,7 +871,7 @@ void SIMIX_comm_finish(smx_synchro_t synchro) } } - if (surf_host_get_state(surf_host_resource_priv(simcall->issuer->host)) != SURF_RESOURCE_ON) { + if (simcall->issuer->host->is_off()) { simcall->issuer->context->iwannadie = 1; } @@ -903,19 +903,19 @@ void SIMIX_post_comm(smx_synchro_t synchro) { /* Update synchro state */ if (synchro->comm.src_timeout && - surf_action_get_state(synchro->comm.src_timeout) == SURF_ACTION_DONE) + synchro->comm.src_timeout->getState() == SURF_ACTION_DONE) synchro->state = SIMIX_SRC_TIMEOUT; else if (synchro->comm.dst_timeout && - surf_action_get_state(synchro->comm.dst_timeout) == SURF_ACTION_DONE) + synchro->comm.dst_timeout->getState() == SURF_ACTION_DONE) synchro->state = SIMIX_DST_TIMEOUT; else if (synchro->comm.src_timeout && - surf_action_get_state(synchro->comm.src_timeout) == SURF_ACTION_FAILED) + synchro->comm.src_timeout->getState() == SURF_ACTION_FAILED) synchro->state = SIMIX_SRC_HOST_FAILURE; else if (synchro->comm.dst_timeout && - surf_action_get_state(synchro->comm.dst_timeout) == SURF_ACTION_FAILED) + synchro->comm.dst_timeout->getState() == SURF_ACTION_FAILED) synchro->state = SIMIX_DST_HOST_FAILURE; else if (synchro->comm.surf_comm && - surf_action_get_state(synchro->comm.surf_comm) == SURF_ACTION_FAILED) { + synchro->comm.surf_comm->getState() == SURF_ACTION_FAILED) { XBT_DEBUG("Puta madre. Surf says that the link broke"); synchro->state = SIMIX_LINK_FAILURE; } else @@ -945,7 +945,7 @@ void SIMIX_comm_cancel(smx_synchro_t synchro) && !MC_record_replay_is_active() && (synchro->state == SIMIX_READY || synchro->state == SIMIX_RUNNING)) { - surf_action_cancel(synchro->comm.surf_comm); + synchro->comm.surf_comm->cancel(); } } @@ -953,7 +953,7 @@ void SIMIX_comm_suspend(smx_synchro_t synchro) { /*FIXME: shall we suspend also the timeout synchro? */ if (synchro->comm.surf_comm) - surf_action_suspend(synchro->comm.surf_comm); + synchro->comm.surf_comm->suspend(); /* in the other case, the action will be suspended on creation, in SIMIX_comm_start() */ } @@ -961,7 +961,7 @@ void SIMIX_comm_resume(smx_synchro_t synchro) { /*FIXME: check what happen with the timeouts */ if (synchro->comm.surf_comm) - surf_action_resume(synchro->comm.surf_comm); + synchro->comm.surf_comm->resume(); /* in the other case, the synchro were not really suspended yet, see SIMIX_comm_suspend() and SIMIX_comm_start() */ }