Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add various getters to task structure:
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 6 Oct 2009 16:58:17 +0000 (16:58 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 6 Oct 2009 16:58:17 +0000 (16:58 +0000)
 * list of preceding/following tasks:
    SD_task_get_parents(task) and SD_task_get_children(task)
 * amount of workstations and list:
    SD_task_get_workstation_count(task)
    SD_task_get_workstation_list(task)

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6726 48e7efb5-ca39-0410-a469-dd3cf9ba447f

ChangeLog
include/simdag/simdag.h
src/simdag/sd_task.c

index 1cf92b9..b6903c8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -67,6 +67,11 @@ SimGrid (3.3.4) unstable; urgency=low
     - SD_task_create_comm_e2e() for end-to-end communication
     - SD_task_create_comp_seq() for sequential computation
    Use SD_task_schedulev() / SD_task_schedulel() to schedule them.
+ * Add getters on list of preceding/following tasks:
+    SD_task_get_parents(task) and SD_task_get_children(task)
+ * Add getters on amount of workstations and list:
+    SD_task_get_workstation_count(t) and SD_task_get_workstation_list(t)
+
    
  Bug fixes:
  * GTNetS wrappers should now be usable again (and betterly tested too)
index 9b6d259..8ef3b96 100644 (file)
@@ -132,6 +132,10 @@ XBT_PUBLIC(void) SD_task_schedule(SD_task_t task, int workstation_nb,
 XBT_PUBLIC(void) SD_task_unschedule(SD_task_t task);
 XBT_PUBLIC(double) SD_task_get_start_time(SD_task_t task);
 XBT_PUBLIC(double) SD_task_get_finish_time(SD_task_t task);
+XBT_PUBLIC(xbt_dynar_t) SD_task_get_parents(SD_task_t task);
+XBT_PUBLIC(xbt_dynar_t) SD_task_get_children(SD_task_t task);
+XBT_PUBLIC(int) SD_task_get_workstation_count(SD_task_t task);
+XBT_PUBLIC(SD_workstation_t*) SD_task_get_workstation_list(SD_task_t task);
 XBT_PUBLIC(void) SD_task_destroy(SD_task_t task);
 XBT_PUBLIC(void) SD_task_dump(SD_task_t task);
 
index 901e8f0..d297025 100644 (file)
@@ -168,6 +168,77 @@ const char *SD_task_get_name(SD_task_t task)
   return task->name;
 }
 
+/** @brief Returns the dynar of the parents of a task
+ *
+ * \param task a task
+ * \return a newly allocated dynar comprising the parents of this task
+ */
+
+xbt_dynar_t SD_task_get_parents(SD_task_t task)
+{
+  unsigned int i;
+  xbt_dynar_t parents;
+  SD_dependency_t dep;
+  SD_CHECK_INIT_DONE();
+  xbt_assert0(task != NULL, "Invalid parameter");
+
+  parents = xbt_dynar_new(sizeof(SD_task_t), NULL);
+  xbt_dynar_foreach(task->tasks_before, i, dep){
+    xbt_dynar_push(parents, &(dep->src));
+  }
+  return parents;
+}
+
+/** @brief Returns the dynar of the parents of a task
+ *
+ * \param task a task
+ * \return a newly allocated dynar comprising the parents of this task
+ */
+xbt_dynar_t SD_task_get_children(SD_task_t task)
+{
+  unsigned int i;
+  xbt_dynar_t children;
+  SD_dependency_t dep;
+  SD_CHECK_INIT_DONE();
+  xbt_assert0(task != NULL, "Invalid parameter");
+
+  children = xbt_dynar_new(sizeof(SD_task_t), NULL);
+  xbt_dynar_foreach(task->tasks_after, i, dep){
+    xbt_dynar_push(children, &(dep->dst));
+  }
+  return children;
+}
+
+/**
+ * \brief Returns the amount of workstations involved in a task
+ *
+ * Only call this on already scheduled tasks!
+ * \param task a task
+ */
+int SD_task_get_workstation_count(SD_task_t task)
+{
+  SD_CHECK_INIT_DONE();
+  xbt_assert0(task != NULL, "Invalid parameter");
+  //  xbt_assert1( task->state_set != sd_global->scheduled_task_set, 
+  //          "Unscheduled task %s", task->name);
+  return task->workstation_nb;
+}
+
+/**
+ * \brief Returns the list of workstations involved in a task
+ *
+ * Only call this on already scheduled tasks!
+ * \param task a task
+ */
+SD_workstation_t* SD_task_get_workstation_list(SD_task_t task)
+{
+  SD_CHECK_INIT_DONE();
+  xbt_assert0(task != NULL, "Invalid parameter");
+  //xbt_assert1( task->state_set != sd_global->scheduled_task_set, 
+  //          "Unscheduled task %s", task->name);
+  return task->workstation_list;
+}
+
 /**
  * \brief Returns the total amount of a task
  *