X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/44723299849907b8923bfac8f9b111bcc07f0987..29ce1e7d528fc6f69c014cac44c0bbaf6e4aba06:/src/msg/msg_mailbox.c diff --git a/src/msg/msg_mailbox.c b/src/msg/msg_mailbox.c index f7f344550e..c0e97dca64 100644 --- a/src/msg/msg_mailbox.c +++ b/src/msg/msg_mailbox.c @@ -109,11 +109,16 @@ MSG_mailbox_get_task_ext(msg_mailbox_t mailbox, m_task_t *task, m_host_t host, double timeout) { xbt_ex_t e; - size_t task_size = sizeof(void*); MSG_error_t ret = MSG_OK; smx_comm_t comm; + + /* We no longer support getting a task from a specific host */ + if (host) THROW_UNIMPLEMENTED; + CHECK_HOST(); + memset(&comm,0,sizeof(comm)); + /* Kept for compatibility with older implementation */ xbt_assert1(!MSG_mailbox_get_cond(mailbox), "A process is already blocked on this channel %s", @@ -123,16 +128,12 @@ MSG_mailbox_get_task_ext(msg_mailbox_t mailbox, m_task_t *task, m_host_t host, xbt_assert0(task, "Null pointer for the task storage"); if (*task) - CRITICAL0 - ("MSG_task_get() was asked to write in a non empty task struct."); - - /* We no loger support getting a task from a specific host */ - if(host) - THROW_UNIMPLEMENTED; + CRITICAL0("MSG_task_get() was asked to write in a non empty task struct."); /* Try to receive it by calling SIMIX network layer */ TRY{ - SIMIX_network_recv(mailbox->rdv, timeout, task, &task_size, &comm); + SIMIX_network_recv(mailbox->rdv, timeout, task, NULL, &comm); + //INFO2("Got task %s from %s",(*task)->name,mailbox->alias); (*task)->simdata->refcount--; } CATCH(e){ @@ -144,10 +145,10 @@ MSG_mailbox_get_task_ext(msg_mailbox_t mailbox, m_task_t *task, m_host_t host, ret = MSG_TRANSFER_FAILURE; break; case timeout_error: - ret = MSG_TRANSFER_FAILURE; + ret = MSG_TIMEOUT_FAILURE; break; default: - xbt_die("Unhandled SIMIX network exception"); + xbt_die(bprintf("Unhandled SIMIX network exception: %s",e.msg)); } xbt_ex_free(e); } @@ -186,7 +187,7 @@ MSG_mailbox_put_with_timeout(msg_mailbox_t mailbox, m_task_t task, SIMIX_cond_signal(mailbox->cond); SIMIX_network_send(mailbox->rdv, t_simdata->message_size, t_simdata->rate, - timeout, &task, sizeof(void*), &t_simdata->comm, task); + timeout, task, sizeof(void*), &t_simdata->comm, task); } CATCH(e){ @@ -198,10 +199,10 @@ MSG_mailbox_put_with_timeout(msg_mailbox_t mailbox, m_task_t task, ret = MSG_TRANSFER_FAILURE; break; case timeout_error: - ret = MSG_TRANSFER_FAILURE; + ret = MSG_TIMEOUT_FAILURE; break; default: - xbt_die("Unhandled SIMIX network exception"); + xbt_die(bprintf("Unhandled SIMIX network exception: %s",e.msg)); } xbt_ex_free(e);