Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
don't free scheduling data of typed tasks
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 1 Mar 2010 14:06:07 +0000 (14:06 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 1 Mar 2010 14:06:07 +0000 (14:06 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7147 48e7efb5-ca39-0410-a469-dd3cf9ba447f

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

index 01b272a..7634fad 100644 (file)
@@ -78,7 +78,7 @@ typedef enum {
 
     @see SD_task_management */
 typedef enum {
-  /* leave 0 for "not typed" */
+  SD_TASK_NOT_TYPED = 0,      /**< @no specified type */
   SD_TASK_COMM_E2E  = 1,      /**< @brief end to end communication */
   SD_TASK_COMP_SEQ  = 2,      /**< @brief sequential computation */
 } e_SD_task_kind_t;
index bed2939..959eebd 100644 (file)
@@ -34,7 +34,7 @@ SD_task_t SD_task_create(const char *name, void *data, double amount)
   /* general information */
   task->data = data;            /* user data */
   task->name = xbt_strdup(name);
-  task->kind = 0;
+  task->kind = SD_TASK_NOT_TYPED;
   task->state_hookup.prev = NULL;
   task->state_hookup.next = NULL;
   task->state_set = sd_global->not_scheduled_task_set;
@@ -749,7 +749,8 @@ void SD_task_unschedule(SD_task_t task)
            "Task %s: the state must be SD_SCHEDULED, SD_READY, SD_RUNNING or SD_FAILED",
            SD_task_get_name(task));
 
-  if (__SD_task_is_scheduled_or_ready(task))    /* if the task is scheduled or ready */
+  if (__SD_task_is_scheduled_or_ready(task) /* if the task is scheduled or ready */
+      && task->kind == SD_TASK_NOT_TYPED) /* Don't free scheduling data for typed tasks */
     __SD_task_destroy_scheduling_data(task);
 
   if (__SD_task_is_running(task))       /* the task should become SD_FAILED */