task->name = NULL;
task->state_set = sd_global->not_scheduled_task_set;
+ xbt_swag_insert(task,task->state_set);
+
task->amount = amount;
task->surf_action = NULL;
task->watch_points = 0;
return SD_FAILED;
}
-/* Changes the state of a task and update the swags.
+/* Changes the state of a task. Update the swags and the flag sd_global->watch_point_reached.
*/
static void __SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state) {
xbt_swag_remove(task, task->state_set);
default: /* SD_FAILED */
task->state_set = sd_global->failed_task_set;
}
+ xbt_swag_insert(task,task->state_set);
+
+ if (task->watch_points & new_state) {
+ printf("Watch point reached with task '%s' in state %d!\n", SD_task_get_name(task), new_state);
+ sd_global->watch_point_reached = 1;
+ }
}
/* Sets the data of a task.
task->workstation_list = xbt_new0(void*, workstation_nb);
int i;
for (i = 0; i < workstation_nb; i++) {
- task->workstation_list[i] = workstation_list[i]->sd_data->surf_workstation;
+ task->workstation_list[i] = workstation_list[i]->surf_workstation;
}
__SD_task_set_state(task, SD_SCHEDULED);