Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Don't auto-destroy the MSG_comm_t in MSG_comm_wait(), it's the
[simgrid.git] / src / msg / gos.c
index bb22ab2..899b135 100644 (file)
@@ -66,6 +66,9 @@ MSG_error_t MSG_task_execute(m_task_t task)
       SIMIX_req_host_execute(task->name, SIMIX_host_self(),
                            simdata->computation_amount);
   SIMIX_req_host_execution_set_priority(simdata->compute, simdata->priority);
+#ifdef HAVE_TRACING
+  SIMIX_req_set_category(simdata->compute, task->category);
+#endif
 
   self->simdata->waiting_action = simdata->compute;
   SIMIX_req_host_execution_wait(simdata->compute);
@@ -495,7 +498,6 @@ MSG_error_t MSG_comm_wait(msg_comm_t comm, double timeout)
       task = (m_task_t) SIMIX_req_comm_get_src_buff(comm);
       task->simdata->refcount--;
     }
-    SIMIX_req_comm_destroy(comm);
 
     /* FIXME: these functions are not tracable */
   }
@@ -546,6 +548,18 @@ int MSG_comm_waitany(xbt_dynar_t comms)
   return SIMIX_req_comm_waitany(comms);
 }
 
+/** \ingroup msg_gos_functions
+* \brief This function wait for the first completed communication
+*
+* It takes on parameter.
+* \param comms a vector of communication
+* \return the position of the completed communication, if any, or -1 if none was completed
+*/
+int MSG_comm_testany(xbt_dynar_t comms)
+{
+  return SIMIX_req_comm_testany(comms);
+}
+
 m_task_t MSG_comm_get_task(msg_comm_t comm)
 {
   xbt_assert0(comm, "Invalid parameters");