xbt_fifo_remove(msg_global->process_to_run, arg);
xbt_fifo_remove(((m_process_t) arg)->simdata->host->simdata->process_list, arg);
free(((m_process_t) arg)->name);
+ ((m_process_t) arg)->name = NULL;
free(((m_process_t) arg)->simdata);
+ ((m_process_t) arg)->simdata = NULL;
free(arg);
}
name contains the word get), in \ref m_task_management (to create
or destroy some #m_task_t for example) and in \ref
msg_gos_functions (to handle file transfers and task processing).
- * \param data a pointer to any data may want to attach to the new
+ * \param data a pointer to any data one may want to attach to the new
object. It is for user-level information and can be NULL. It can
be retrieved with the function \ref MSG_process_get_data.
* \param host the location where the new agent is executed.
return (process->simdata->suspended);
}
+static char blocked_name[512];
+
int __MSG_process_block(double max_duration)
{
m_process_t process = MSG_process_self();
m_task_t dummy = MSG_TASK_UNINITIALIZED;
- dummy = MSG_task_create("blocked", 0.0, 0, NULL);
+ snprintf(blocked_name,512,"blocked (%s:%s)",process->name,
+ process->simdata->host->name);
+
+ XBT_IN1(": max_duration=%g",max_duration);
+
+ dummy = MSG_task_create(blocked_name, 0.0, 0, NULL);
PAJE_PROCESS_PUSH_STATE(process,"B");
MSG_task_destroy(dummy);
+ XBT_OUT;
return 1;
}
xbt_assert0(((process != NULL) && (process->simdata)), "Invalid parameters");
CHECK_HOST();
+ XBT_IN2(": %s unblocking %s", MSG_process_self()->name,process->name);
+
simdata = process->simdata;
if(!(simdata->waiting_task)) {
xbt_assert0(0,"Process not waiting for anything else. Weird !");
+ XBT_OUT;
return MSG_WARNING;
}
simdata_task = simdata->waiting_task->simdata;
PAJE_PROCESS_POP_STATE(process);
+ XBT_OUT;
+
MSG_RETURN(MSG_OK);
}