#ifndef SIMDAG_PRIVATE_H
#define SIMDAG_PRIVATE_H
-
+#include <set>
#include "xbt/dynar.h"
#include "simgrid/simdag.h"
#include "surf/surf.h"
typedef struct SD_global {
xbt_mallocator_t task_mallocator; /* to not remalloc new tasks */
- int watch_point_reached; /* has a task just reached a watch point? */
+ 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;
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;
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);