XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_gos, msg,
"Logging specific to MSG (gos)");
-/** \ingroup msg_gos_functions
- *
- * \brief Return the last value returned by a MSG function (except
- * MSG_get_errno...).
- */
-MSG_error_t MSG_get_errno(void)
-{
- return PROCESS_GET_ERRNO();
-}
-
/** \ingroup msg_gos_functions
* \brief Executes a task and waits for its termination.
*
msg_global->sent_msg++;
/* Send it by calling SIMIX network layer */
- SIMIX_req_comm_isend(mailbox, t_simdata->message_size,
+ smx_action_t comm = SIMIX_req_comm_isend(mailbox, t_simdata->message_size,
t_simdata->rate, task, sizeof(void *), NULL, cleanup, 1);
+ t_simdata->comm = comm;
}
/** \ingroup msg_gos_functions
int finished = 0;
TRY {
finished = SIMIX_req_comm_test(comm->s_comm);
+
+ if (finished && comm->task_received != NULL) {
+ /* I am the receiver */
+ (*comm->task_received)->simdata->isused = 0;
+ }
}
CATCH(e) {
switch (e.category) {
comm = xbt_dynar_get_as(comms, finished_index, msg_comm_t);
/* the communication is finished */
comm->status = status;
+
+ if (status == MSG_OK && comm->task_received != NULL) {
+ /* I am the receiver */
+ (*comm->task_received)->simdata->isused = 0;
+ }
}
return finished_index;
return MSG_process_get_PID(task->simdata->sender);
}
+
+#ifdef MSG_USE_DEPRECATED
+/** \ingroup msg_gos_functions
+ *
+ * \brief Return the last value returned by a MSG function (except
+ * MSG_get_errno...).
+ */
+MSG_error_t MSG_get_errno(void)
+{
+ return PROCESS_GET_ERRNO();
+}
+#endif