X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/87468a9f6b682ee41edc3a16a100554ef48032c9..58a5fef8735699a10762fe2bb8f1f938fba4b651:/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 092c9b75d3..fdf2fe4b8f 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 @@ -154,7 +153,7 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self, gras_socket_t sock){ gras_hostdata_t *hd=(gras_hostdata_t *)MSG_host_get_data(MSG_host_self()); - gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_get("gras_trp"); + 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; @@ -258,11 +257,15 @@ 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()), @@ -275,7 +278,7 @@ void gras_trp_sg_chunk_send_raw(gras_socket_t sock, int gras_trp_sg_chunk_recv(gras_socket_t sock, char *data, unsigned long int size){ - gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_get("gras_trp"); + gras_trp_procdata_t pd=(gras_trp_procdata_t)gras_libdata_by_id(gras_trp_libdata_id); m_task_t task=NULL; sg_task_data_t *task_data; @@ -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)