#include"xbt/sysdep.h"
#include "xbt/error.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gos, msg,
- "Logging specific to MSG (process)");
+ "Logging specific to MSG (gos)");
/** \ingroup msg_gos_functions
* \brief This function is now deprecated and useless. Please stop using it.
t_simdata->using++;
t_simdata->comm = surf_workstation_resource->extension_public->
communicate(MSG_process_get_host(t_simdata->sender)->simdata->host,
- h, t_simdata->message_size);
+ h->simdata->host, t_simdata->message_size);
+ surf_workstation_resource->common_public->action_set_data(t_simdata->comm,t);
+
+ if(MSG_process_isSuspended(t_simdata->sender))
+ MSG_process_resume(t_simdata->sender);
do {
__MSG_task_wait_event(process, t);
task_simdata = task->simdata;
task_simdata->sender = process;
-
+ xbt_assert0(task_simdata->using==1,"Gargl!");
+ task_simdata->comm = NULL;
local_host = ((simdata_process_t) process->simdata)->host;
remote_host = dest;
if(remote_host->simdata->sleeping[channel])
MSG_process_resume(remote_host->simdata->sleeping[channel]);
- else
- MSG_process_suspend(process);
-
+ else {
+ process->simdata->put_host = dest;
+ process->simdata->put_channel = channel;
+ while(!(task_simdata->comm))
+ MSG_process_suspend(process);
+ process->simdata->put_host = NULL;
+ process->simdata->put_channel = -1;
+ }
+
do {
__MSG_task_wait_event(process, task);
state=surf_workstation_resource->common_public->action_get_state(task_simdata->comm);
simdata->compute = surf_workstation_resource->extension_public->
execute(MSG_process_get_host(process)->simdata->host,
simdata->computation_amount);
+ surf_workstation_resource->common_public->action_set_data(simdata->compute,task);
}
MSG_error_t __MSG_wait_for_computation(m_process_t process, m_task_t task)
simdata->compute = surf_workstation_resource->extension_public->
sleep(MSG_process_get_host(process)->simdata->host,
simdata->computation_amount);
+ surf_workstation_resource->common_public->action_set_data(simdata->compute,dummy);
simdata->using++;