Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
uniformization of the conversion of task state to string
[simgrid.git] / src / simdag / sd_task.cpp
index 8ce0b26..e1fcd29 100644 (file)
@@ -22,7 +22,6 @@ static void __SD_task_destroy_scheduling_data(SD_task_t task)
   task->flops_amount = nullptr;
 }
 
-
 /**
  * \brief Creates a new task.
  *
@@ -34,7 +33,6 @@ static void __SD_task_destroy_scheduling_data(SD_task_t task)
  */
 SD_task_t SD_task_create(const char *name, void *data, double amount)
 {
-  //SD_task_t task = static_cast<SD_task_t>(xbt_mallocator_get(sd_global->task_mallocator));
   SD_task_t task = xbt_new0(s_SD_task_t, 1);
   task->kind = SD_TASK_NOT_TYPED;
   task->state= SD_NOT_SCHEDULED;
@@ -54,7 +52,6 @@ SD_task_t SD_task_create(const char *name, void *data, double amount)
   task->data = data;
   task->name = xbt_strdup(name);
   task->amount = amount;
-  task->remains = amount;
   task->allocation = new std::vector<sg_host_t>();
   task->rate = -1;
   return task;
@@ -292,7 +289,6 @@ void SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state)
     task->start_time = task->surf_action->getStartTime();
     if (new_state == SD_DONE){
       task->finish_time = task->surf_action->getFinishTime();
-      task->remains = 0;
 #if HAVE_JEDULE
       jedule_log_sd_event(task);
 #endif
@@ -440,7 +436,7 @@ double SD_task_get_remaining_amount(SD_task_t task)
   if (task->surf_action)
     return task->surf_action->getRemains();
   else
-    return task->remains;
+    return (task->state == SD_DONE) ? 0 : task->amount;
 }
 
 e_SD_task_kind_t SD_task_get_kind(SD_task_t task)
@@ -452,16 +448,12 @@ e_SD_task_kind_t SD_task_get_kind(SD_task_t task)
 void SD_task_dump(SD_task_t task)
 {
   XBT_INFO("Displaying task %s", SD_task_get_name(task));
-  char *statename = bprintf("%s%s%s%s%s%s%s",
-                      (task->state == SD_NOT_SCHEDULED ? " not scheduled" : ""),
-                      (task->state == SD_SCHEDULABLE ? " schedulable" : ""),
-                      (task->state == SD_SCHEDULED ? " scheduled" : ""),
-                      (task->state == SD_RUNNABLE ? " runnable" : " not runnable"),
-                      (task->state == SD_RUNNING ? " running" : ""),
-                      (task->state == SD_DONE ? " done" : ""),
-                      (task->state == SD_FAILED ? " failed" : ""));
-  XBT_INFO("  - state:%s", statename);
-  free(statename);
+  if (task->state == SD_RUNNABLE)
+    XBT_INFO("  - state: runnable");
+  else if (task->state < SD_RUNNABLE)
+    XBT_INFO("  - state: %s not runnable", __get_state_name(task->state));
+  else
+    XBT_INFO("  - state: not runnable %s", __get_state_name(task->state));
 
   if (task->kind != 0) {
     switch (task->kind) {
@@ -793,7 +785,6 @@ void SD_task_unschedule(SD_task_t task)
     else
       SD_task_set_state(task, SD_NOT_SCHEDULED);
   }
-  task->remains = task->amount;
   task->start_time = -1.0;
 }
 
@@ -920,7 +911,7 @@ void SD_task_schedulev(SD_task_t task, int count, const sg_host_t * list)
   if (task->kind == SD_TASK_COMP_SEQ) {
     if (!task->flops_amount){ /*This task has failed and is rescheduled. Reset the flops_amount*/
       task->flops_amount = xbt_new0(double, 1);
-      task->flops_amount[0] = task->remains;
+      task->flops_amount[0] = task->amount;
     }
     XBT_VERB("It costs %.f flops", task->flops_amount[0]);
   }