-void SD_test() {
- /* temporary test to explore the workstations and the links */
- xbt_dict_cursor_t cursor = NULL;
- char *name = NULL;
- SD_workstation_t workstation = NULL;
- double power, available_power, bandwidth, latency;
- SD_link_t link = NULL;
+ /* the state has changed */
+ if (!task->state_changed) {
+ task->state_changed = 1;
+ changed_tasks[changed_task_number++] = task;
+ /*
+ if (changed_task_number == changed_task_capacity) {
+ changed_task_capacity *= 2;
+ changed_tasks = xbt_realloc(changed_tasks, sizeof(SD_task_t) * changed_task_capacity);
+ }
+ */
+ changed_tasks[changed_task_number] = NULL;
+ }
+
+ /* remove the dependencies after this task */
+ while (xbt_dynar_length(task->tasks_after) > 0) {
+ xbt_dynar_get_cpy(task->tasks_after, 0, &dependency);
+ dst = dependency->dst;
+ SD_task_dependency_remove(task, dst);
+
+ /* is dst ready now? */
+ if (__SD_task_is_ready(dst) && !sd_global->watch_point_reached) {
+ INFO1("Executing task '%s'", SD_task_get_name(dst));
+ if (__SD_task_try_to_run(dst)) {
+ changed_tasks[changed_task_number++] = dst;
+ /*
+ if (changed_task_number == changed_task_capacity) {
+ changed_task_capacity *= 2;
+ changed_tasks = xbt_realloc(changed_tasks, sizeof(SD_task_t) * changed_task_capacity);
+ }
+ */
+ changed_tasks[changed_task_number] = NULL;
+ }
+ }
+ }
+ }