X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/96f99f2c43f129472ec7603caef3e370be91e13e..c22474b6cb132c199c1708c093c9544418bacecc:/src/simdag/sd_task.c diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index e1598889d5..d9b5ed6a24 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -21,6 +21,8 @@ SD_task_t SD_task_create(const char *name, void *data, double amount) { 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; @@ -66,7 +68,7 @@ e_SD_task_state_t SD_task_get_state(SD_task_t task) { 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); @@ -86,6 +88,12 @@ static void __SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state) { 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. @@ -325,7 +333,7 @@ void SD_task_schedule(SD_task_t task, int workstation_nb, 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);