Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git] / src / simdag / simdag_private.h
index 28e8664..331a2c3 100644 (file)
@@ -6,7 +6,7 @@
 
 #ifndef SIMDAG_PRIVATE_H
 #define SIMDAG_PRIVATE_H
-
+#include <set>
 #include "xbt/dynar.h"
 #include "simgrid/simdag.h"
 #include "surf/surf.h"
@@ -22,9 +22,9 @@ typedef struct SD_global {
 
   bool watch_point_reached;      /* has a task just reached a watch point? */
 
-  xbt_dynar_t initial_task_set;
-  xbt_dynar_t executable_task_set;
-  xbt_dynar_t completed_task_set;
+  std::set<SD_task_t> *initial_tasks;
+  std::set<SD_task_t> *executable_tasks;
+  std::set<SD_task_t> *completed_tasks;
 
   xbt_dynar_t return_set;
 
@@ -49,11 +49,14 @@ typedef struct SD_task {
   int marked;                   /* used to check if the task DAG has some cycle*/
 
   /* dependencies */
-  xbt_dynar_t tasks_before;
-  xbt_dynar_t tasks_after;
   int unsatisfied_dependencies;
   unsigned int is_not_ready;
 
+  std::set<SD_task_t> *inputs;
+  std::set<SD_task_t> *outputs;
+  std::set<SD_task_t> *predecessors;
+  std::set<SD_task_t> *successors;
+
   /* scheduling parameters (only exist in state SD_SCHEDULED) */
   int host_count;
   sg_host_t *host_list;
@@ -65,15 +68,6 @@ typedef struct SD_task {
   char *category;               /* sd task category for instrumentation */
 } s_SD_task_t;
 
-/* Task dependencies */
-typedef struct SD_dependency {
-  char *name;
-  void *data;
-  SD_task_t src;
-  SD_task_t dst;
-  /* src must be finished before dst can start */
-} s_SD_dependency_t, *SD_dependency_t;
-
 /* SimDag private functions */
 XBT_PRIVATE void SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state);
 XBT_PRIVATE void SD_task_run(SD_task_t task);