#ifndef SIMDAG_PRIVATE_H
#define SIMDAG_PRIVATE_H
-
+#include <set>
#include "xbt/dynar.h"
#include "simgrid/simdag.h"
#include "surf/surf.h"
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> *runnable_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;
double *flops_amount;
double *bytes_amount;
double rate;
-
- long long int counter; /* task unique identifier for instrumentation */
- 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);
XBT_PRIVATE void uniq_transfer_task_name(SD_task_t task);
/* Task mallocator functions */
-XBT_PRIVATE void* SD_task_new_f(void);
+XBT_PRIVATE void* SD_task_new_f();
XBT_PRIVATE void SD_task_recycle_f(void *t);
XBT_PRIVATE void SD_task_free_f(void *t);