Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] merging instr_variables.c into instr_interface.c (code re-organization)
[simgrid.git] / src / msg / gos.c
index bb22ab2..c272f1e 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);
@@ -406,12 +409,12 @@ msg_comm_t MSG_task_isend(m_task_t task, const char *alias)
 
   t_simdata->refcount++;
   msg_global->sent_msg++;
-  process->simdata->waiting_task = task;
+  //process->simdata->waiting_task = task;
 
   /* Send it by calling SIMIX network layer */
 
   return SIMIX_req_comm_isend(mailbox, t_simdata->message_size,
-                             t_simdata->rate, task, sizeof(void *),
+                             t_simdata->rate, task, sizeof(void *), NULL,
                              &t_simdata->comm);
 }
 
@@ -441,7 +444,7 @@ msg_comm_t MSG_task_irecv(m_task_t * task, const char *alias)
         ("MSG_task_get() was asked to write in a non empty task struct.");
 
   /* Try to receive it by calling SIMIX network layer */
-  return SIMIX_req_comm_irecv(rdv, task, NULL);
+  return SIMIX_req_comm_irecv(rdv, task, NULL, NULL, NULL);
 }
 
 /** \ingroup msg_gos_functions
@@ -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");