Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use #if instead if #ifdef for the things in the public config header
[simgrid.git] / src / simdag / sd_task.cpp
index c9243b0..3768b22 100644 (file)
@@ -4,18 +4,47 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#include "src/surf/HostImpl.hpp"
 #include "src/surf/surf_interface.hpp"
-#include "src/surf/host_interface.hpp"
 #include "src/simdag/simdag_private.h"
 #include "simgrid/simdag.h"
-#include "xbt/sysdep.h"
-#include "xbt/dynar.h"
 #include "src/instr/instr_private.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_task, sd, "Logging specific to SimDag (task)");
 
-static void __SD_task_remove_dependencies(SD_task_t task);
-static void __SD_task_destroy_scheduling_data(SD_task_t task);
+/* Destroys a dependency between two tasks. */
+static void __SD_task_dependency_destroy(void *dependency)
+{
+  xbt_free(((SD_dependency_t)dependency)->name);
+  xbt_free(dependency);
+}
+
+/* Remove all dependencies associated with a task. This function is called when the task is destroyed. */
+static void __SD_task_remove_dependencies(SD_task_t task)
+{
+  /* we must destroy the dependencies carefuly (with SD_dependency_remove) because each one is stored twice */
+  SD_dependency_t dependency;
+  while (!xbt_dynar_is_empty(task->tasks_before)) {
+    xbt_dynar_get_cpy(task->tasks_before, 0, &dependency);
+    SD_task_dependency_remove(dependency->src, dependency->dst);
+  }
+
+  while (!xbt_dynar_is_empty(task->tasks_after)) {
+    xbt_dynar_get_cpy(task->tasks_after, 0, &dependency);
+    SD_task_dependency_remove(dependency->src, dependency->dst);
+  }
+}
+
+/* Destroys the data memorized by SD_task_schedule. Task state must be SD_SCHEDULED or SD_RUNNABLE. */
+static void __SD_task_destroy_scheduling_data(SD_task_t task)
+{
+  if (task->state != SD_SCHEDULED && task->state != SD_RUNNABLE)
+    THROWF(arg_error, 0, "Task '%s' must be SD_SCHEDULED or SD_RUNNABLE", SD_task_get_name(task));
+
+  xbt_free(task->flops_amount);
+  xbt_free(task->bytes_amount);
+  task->flops_amount = task->bytes_amount = NULL;
+}
 
 void* SD_task_new_f(void)
 {
@@ -87,7 +116,7 @@ SD_task_t SD_task_create(const char *name, void *data, double amount)
   return task;
 }
 
-static XBT_INLINE SD_task_t SD_task_create_sized(const char *name, void *data, double amount, int ws_count)
+static inline SD_task_t SD_task_create_sized(const char *name, void *data, double amount, int ws_count)
 {
   SD_task_t task = SD_task_create(name, data, amount);
   task->bytes_amount = xbt_new0(double, ws_count * ws_count);
@@ -321,7 +350,7 @@ void SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state)
     xbt_dynar_push(sd_global->completed_task_set,&task);
     task->finish_time = task->surf_action->getFinishTime();
     task->remains = 0;
-#ifdef HAVE_JEDULE
+#if HAVE_JEDULE
     jedule_log_sd_event(task);
 #endif
     break;
@@ -561,14 +590,6 @@ void SD_task_dotty(SD_task_t task, void *out)
   }
 }
 
-/* Destroys a dependency between two tasks.
- */
-static void __SD_task_dependency_destroy(void *dependency)
-{
-  xbt_free(((SD_dependency_t)dependency)->name);
-  xbt_free(dependency);
-}
-
 /**
  * \brief Adds a dependency between two tasks
  *
@@ -836,7 +857,7 @@ double SD_task_get_execution_time(SD_task_t task, int workstation_nb, const sg_h
   return max_time;
 }
 
-static XBT_INLINE void SD_task_do_schedule(SD_task_t task)
+static inline void SD_task_do_schedule(SD_task_t task)
 {
   if (SD_task_get_state(task) > SD_SCHEDULABLE)
     THROWF(arg_error, 0, "Task '%s' has already been scheduled", SD_task_get_name(task));
@@ -932,18 +953,6 @@ void SD_task_unschedule(SD_task_t task)
   task->start_time = -1.0;
 }
 
-/* Destroys the data memorized by SD_task_schedule. Task state must be SD_SCHEDULED or SD_RUNNABLE.
- */
-static void __SD_task_destroy_scheduling_data(SD_task_t task)
-{
-  if (task->state != SD_SCHEDULED && task->state != SD_RUNNABLE)
-    THROWF(arg_error, 0, "Task '%s' must be SD_SCHEDULED or SD_RUNNABLE", SD_task_get_name(task));
-
-  xbt_free(task->flops_amount);
-  xbt_free(task->bytes_amount);
-  task->flops_amount = task->bytes_amount = NULL;
-}
-
 /* Runs a task. */
 void SD_task_run(SD_task_t task)
 {
@@ -981,24 +990,6 @@ void SD_task_run(SD_task_t task)
   SD_task_set_state(task, SD_RUNNING);
 }
 
-/* 
- * Remove all dependencies associated with a task. This function is called when the task is destroyed.
- */
-static void __SD_task_remove_dependencies(SD_task_t task)
-{
-  /* we must destroy the dependencies carefuly (with SD_dependency_remove) because each one is stored twice */
-  SD_dependency_t dependency;
-  while (!xbt_dynar_is_empty(task->tasks_before)) {
-    xbt_dynar_get_cpy(task->tasks_before, 0, &dependency);
-    SD_task_dependency_remove(dependency->src, dependency->dst);
-  }
-
-  while (!xbt_dynar_is_empty(task->tasks_after)) {
-    xbt_dynar_get_cpy(task->tasks_after, 0, &dependency);
-    SD_task_dependency_remove(dependency->src, dependency->dst);
-  }
-}
-
 /**
  * \brief Returns the start time of a task
  *