X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c626a03d1cebc8c01f8f17f4fac5ef9acff42633..778f65057da68465382593cd036b6ee59ada54e9:/src/gras/Transport/transport_plugin_sg.c diff --git a/src/gras/Transport/transport_plugin_sg.c b/src/gras/Transport/transport_plugin_sg.c index 6998072929..b19a9f837b 100644 --- a/src/gras/Transport/transport_plugin_sg.c +++ b/src/gras/Transport/transport_plugin_sg.c @@ -18,8 +18,7 @@ #include "transport_private.h" #include "gras/Virtu/virtu_sg.h" -XBT_LOG_EXTERNAL_CATEGORY(transport); -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(trp_sg,transport,"SimGrid pseudo-transport"); +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_trp_sg,gras_trp,"SimGrid pseudo-transport"); /*** *** Prototypes @@ -157,7 +156,7 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self, gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_by_id(gras_trp_libdata_id); gras_sg_portrec_t pr; gras_trp_sg_sock_data_t *data; - int found; + volatile int found; const char *host=MSG_host_get_name(MSG_host_self()); @@ -258,17 +257,21 @@ void gras_trp_sg_chunk_send_raw(gras_socket_t sock, sprintf(name,"Chunk[%d]",count++); task_data=xbt_new(sg_task_data_t,1); - task_data->data=(void*)xbt_malloc(size); task_data->size = size; - memcpy(task_data->data,data,size); + if (data) { + task_data->data=(void*)xbt_malloc(size); + memcpy(task_data->data,data,size); + } else { + task_data->data = NULL; + } - task=MSG_task_create(name,0,((double)size)/(1024.0*1024.0),task_data); + task=MSG_task_create(name,0,((double)size),task_data); DEBUG5("send chunk %s from %s to %s:%d (size=%ld)", name, MSG_host_get_name(MSG_host_self()), MSG_host_get_name(sock_data->to_host), sock_data->to_chan,size); - if (MSG_task_put(task, sock_data->to_host,sock_data->to_chan) != MSG_OK) { - THROW0(system_error,0,"Problem during the MSG_task_put"); + if (MSG_task_put_with_timeout(task, sock_data->to_host,sock_data->to_chan,60.0) != MSG_OK) { + THROW0(system_error,0,"Problem during the MSG_task_put with timeout 60"); } } @@ -286,7 +289,9 @@ int gras_trp_sg_chunk_recv(gras_socket_t sock, DEBUG4("recv chunk on %s -> %s:%d (size=%ld)", MSG_host_get_name(sock_data->to_host), MSG_host_get_name(MSG_host_self()), sock_data->to_chan, size); - if (MSG_task_get(&task, (sock->meas ? pd->measChan : pd->chan)) != MSG_OK) + if (MSG_task_get_with_time_out(&task, + (sock->meas ? pd->measChan : pd->chan), + 60) != MSG_OK) THROW0(system_error,0,"Error in MSG_task_get()"); DEBUG1("Got chuck %s",MSG_task_get_name(task)); @@ -297,8 +302,10 @@ int gras_trp_sg_chunk_recv(gras_socket_t sock, task_data->size, size, MSG_host_get_name(sock_data->to_host), MSG_host_get_name(MSG_host_self()), sock_data->to_chan); - memcpy(data,task_data->data,size); - free(task_data->data); + if (data) + memcpy(data,task_data->data,size); + if (task_data->data) + free(task_data->data); free(task_data); if (MSG_task_destroy(task) != MSG_OK)