simdata->computation_amount);
SIMIX_action_set_priority(simdata->compute, simdata->priority);
- self->simdata->waiting_task = task;
+ /* changed to waiting action since we are always waiting one action (execute, communicate or sleep) */
+ self->simdata->waiting_action = simdata->compute;
SIMIX_register_action_to_condition(simdata->compute, simdata->cond);
do {
SIMIX_cond_wait(simdata->cond, simdata->mutex);
state = SIMIX_action_get_state(simdata->compute);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_unregister_action_to_condition(simdata->compute, simdata->cond);
- self->simdata->waiting_task = NULL;
+ self->simdata->waiting_action = NULL;
SIMIX_mutex_unlock(simdata->mutex);
simdata->refcount--;
simdata->host_list, simdata->comp_amount,
simdata->comm_amount, 1.0, -1.0);
- self->simdata->waiting_task = task;
+ self->simdata->waiting_action = simdata->compute;
SIMIX_register_action_to_condition(simdata->compute, simdata->cond);
do {
SIMIX_cond_wait(simdata->cond, simdata->mutex);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_unregister_action_to_condition(simdata->compute, simdata->cond);
- self->simdata->waiting_task = NULL;
+ self->simdata->waiting_action = NULL;
SIMIX_mutex_unlock(simdata->mutex);
/* create conditional and register action to it */
cond = SIMIX_cond_init();
+ proc->simdata->waiting_action = act_sleep;
SIMIX_register_action_to_condition(act_sleep, cond);
do {
SIMIX_cond_wait(cond, mutex);
state = SIMIX_action_get_state(act_sleep);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
+ proc->simdata->waiting_action = NULL;
SIMIX_unregister_action_to_condition(act_sleep, cond);
SIMIX_mutex_unlock(mutex);
SIMIX_mutex_destroy(mutex);
if (SIMIX_action_get_state(act_sleep) == SURF_ACTION_DONE) {
- if (SIMIX_host_get_state(SIMIX_host_self()) == SURF_CPU_OFF) {
+ if (SIMIX_host_get_state(SIMIX_host_self()) == SURF_RESOURCE_OFF) {
SIMIX_action_destroy(act_sleep);
MSG_RETURN(MSG_HOST_FAILURE);
}