summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
c6e308f)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7147
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
@see SD_task_management */
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;
SD_TASK_COMM_E2E = 1, /**< @brief end to end communication */
SD_TASK_COMP_SEQ = 2, /**< @brief sequential computation */
} e_SD_task_kind_t;
/* general information */
task->data = data; /* user data */
task->name = xbt_strdup(name);
/* general information */
task->data = data; /* user data */
task->name = xbt_strdup(name);
+ 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;
task->state_hookup.prev = NULL;
task->state_hookup.next = NULL;
task->state_set = sd_global->not_scheduled_task_set;
"Task %s: the state must be SD_SCHEDULED, SD_READY, SD_RUNNING or SD_FAILED",
SD_task_get_name(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 */
__SD_task_destroy_scheduling_data(task);
if (__SD_task_is_running(task)) /* the task should become SD_FAILED */