From f03991ac727cda8b10a5ee24de5f2e8aa40cab2d Mon Sep 17 00:00:00 2001 From: mquinson Date: Mon, 1 Mar 2010 14:06:07 +0000 Subject: [PATCH] don't free scheduling data of typed tasks git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7147 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/simdag/datatypes.h | 2 +- src/simdag/sd_task.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/simdag/datatypes.h b/include/simdag/datatypes.h index 01b272afc9..7634fad865 100644 --- a/include/simdag/datatypes.h +++ b/include/simdag/datatypes.h @@ -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; diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index bed2939f5e..959eebdcf0 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -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 */ -- 2.20.1