X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fdeb7287e5c157e988bdee7a31a7d4f31b613fd7..0d1840a527cbbc437e17dbd7d09c94ef48fbb07b:/src/simix/smx_network.c diff --git a/src/simix/smx_network.c b/src/simix/smx_network.c index 38e22a0b8f..113c21b11c 100644 --- a/src/simix/smx_network.c +++ b/src/simix/smx_network.c @@ -315,6 +315,24 @@ XBT_INLINE double SIMIX_communication_get_remains(smx_comm_t comm) return SIMIX_action_get_remains(comm->act); } +/******************************************************************************/ +/* SIMIX_network_copy_data callbacks */ +/******************************************************************************/ +static void (*SIMIX_network_copy_data_callback)(smx_comm_t, size_t) = &SIMIX_network_copy_pointer_callback; + +void SIMIX_network_set_copy_data_callback(void (*callback)(smx_comm_t, size_t)) { + SIMIX_network_copy_data_callback = callback; +} + +void SIMIX_network_copy_pointer_callback(smx_comm_t comm, size_t buff_size) { + xbt_assert1((buff_size == sizeof(void*)), "Cannot copy %d bytes: must be sizeof(void*)",buff_size); + *(void**)(comm->dst_buff) = comm->src_buff; +} + +void SIMIX_network_copy_buffer_callback(smx_comm_t comm, size_t buff_size) { + memcpy(comm->dst_buff, comm->src_buff, buff_size); +} + /** * \brief Copy the communication data from the sender's buffer to the receiver's one * \param comm The communication @@ -336,25 +354,12 @@ void SIMIX_network_copy_data(smx_comm_t comm) if(buff_size == 0) return; - -#ifdef HAVE_RUBY /* FIXME: KILLME */ - INFO6("Copying comm %p data from %s (%p) -> %s (%p) (%zu bytes)", - comm, - comm->src_proc->smx_host->name, comm->src_buff, - comm->dst_proc->smx_host->name, comm->dst_buff, - buff_size); -#else DEBUG6("Copying comm %p data from %s (%p) -> %s (%p) (%zu bytes)", comm, comm->src_proc->smx_host->name, comm->src_buff, comm->dst_proc->smx_host->name, comm->dst_buff, buff_size); -#endif - if (buff_size == sizeof(void*)) { - *(void**)(comm->dst_buff) = *(void**)(comm->src_buff); - } else { - memcpy(comm->dst_buff, comm->src_buff, buff_size); - } + (*SIMIX_network_copy_data_callback)(comm, buff_size); } /**