xbt_context_yield();
}
- PAJE_PROCESS_POP_STATE(process);
+ PAJE_PROCESS_POP_STATE(process);
PAJE_COMM_STOP(process,t,channel);
- if(state == SURF_ACTION_DONE) MSG_RETURN(MSG_OK);
- else if(surf_workstation_resource->extension_public->get_state(h_simdata->host)
- == SURF_CPU_OFF)
+ if(state == SURF_ACTION_DONE) {
+ if(surf_workstation_resource->common_public->action_free(t_simdata->comm))
+ t_simdata->comm = NULL;
+ MSG_RETURN(MSG_OK);
+ } else if(surf_workstation_resource->extension_public->get_state(h_simdata->host)
+ == SURF_CPU_OFF) {
+ if(surf_workstation_resource->common_public->action_free(t_simdata->comm))
+ t_simdata->comm = NULL;
MSG_RETURN(MSG_HOST_FAILURE);
- else MSG_RETURN(MSG_TRANSFER_FAILURE);
+ } else {
+ if(surf_workstation_resource->common_public->action_free(t_simdata->comm))
+ t_simdata->comm = NULL;
+ MSG_RETURN(MSG_TRANSFER_FAILURE);
+ }
}
/** \ingroup msg_gos_functions
process->simdata->put_channel = channel;
while(!(task_simdata->comm))
__MSG_process_block();
+ surf_workstation_resource->common_public->action_use(task_simdata->comm);
process->simdata->put_host = NULL;
process->simdata->put_channel = -1;
PAJE_PROCESS_POP_STATE(process);
- if(state == SURF_ACTION_DONE) MSG_RETURN(MSG_OK);
- else if(surf_workstation_resource->extension_public->get_state(local_host->simdata->host)
- == SURF_CPU_OFF)
+ if(state == SURF_ACTION_DONE) {
+ if(surf_workstation_resource->common_public->action_free(task_simdata->comm))
+ task_simdata->comm = NULL;
+ MSG_RETURN(MSG_OK);
+ } else if(surf_workstation_resource->extension_public->get_state(local_host->simdata->host)
+ == SURF_CPU_OFF) {
+ if(surf_workstation_resource->common_public->action_free(task_simdata->comm))
+ task_simdata->comm = NULL;
MSG_RETURN(MSG_HOST_FAILURE);
- else MSG_RETURN(MSG_TRANSFER_FAILURE);
+ } else {
+ if(surf_workstation_resource->common_public->action_free(task_simdata->comm))
+ task_simdata->comm = NULL;
+ MSG_RETURN(MSG_TRANSFER_FAILURE);
+ }
}
/** \ingroup msg_gos_functions
simdata->using--;
- if(state == SURF_ACTION_DONE) MSG_RETURN(MSG_OK);
- else if(surf_workstation_resource->extension_public->
- get_state(MSG_process_get_host(process)->simdata->host)
- == SURF_CPU_OFF)
+ if(state == SURF_ACTION_DONE) {
+ if(surf_workstation_resource->common_public->action_free(simdata->compute))
+ simdata->compute = NULL;
+ MSG_RETURN(MSG_OK);
+ } else if(surf_workstation_resource->extension_public->
+ get_state(MSG_process_get_host(process)->simdata->host)
+ == SURF_CPU_OFF) {
+ if(surf_workstation_resource->common_public->action_free(simdata->compute))
+ simdata->compute = NULL;
MSG_RETURN(MSG_HOST_FAILURE);
- else MSG_RETURN(MSG_TRANSFER_FAILURE);
+ } else {
+ if(surf_workstation_resource->common_public->action_free(simdata->compute))
+ simdata->compute = NULL;
+ MSG_RETURN(MSG_TRANSFER_FAILURE);
+ }
}
/** \ingroup msg_gos_functions
if(state == SURF_ACTION_DONE) {
if(surf_workstation_resource->extension_public->
get_state(MSG_process_get_host(process)->simdata->host)
- == SURF_CPU_OFF)
+ == SURF_CPU_OFF) {
+ if(surf_workstation_resource->common_public->action_free(simdata->compute))
+ simdata->compute = NULL;
MSG_RETURN(MSG_HOST_FAILURE);
-
+ }
if(__MSG_process_isBlocked(process)) {
__MSG_process_unblock(MSG_process_self());
}
if(surf_workstation_resource->extension_public->
get_state(MSG_process_get_host(process)->simdata->host)
- == SURF_CPU_OFF)
+ == SURF_CPU_OFF) {
+ if(surf_workstation_resource->common_public->action_free(simdata->compute))
+ simdata->compute = NULL;
MSG_RETURN(MSG_HOST_FAILURE);
+ }
+ if(surf_workstation_resource->common_public->action_free(simdata->compute))
+ simdata->compute = NULL;
MSG_task_destroy(dummy);
MSG_RETURN(MSG_OK);
} else MSG_RETURN(MSG_HOST_FAILURE);