state (all dependencies are satisfied, but not scheduled) and no more
in the SD_NOT_SCHEDULED state.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7853
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
static XBT_INLINE void SD_task_do_schedule(SD_task_t task) {
SD_CHECK_INIT_DONE();
static XBT_INLINE void SD_task_do_schedule(SD_task_t task) {
SD_CHECK_INIT_DONE();
- if (!__SD_task_is_not_scheduled(task))
+ if (!__SD_task_is_not_scheduled(task) && !__SD_task_is_ready(task) )
THROW1(arg_error, 0, "Task '%s' has already been scheduled",
SD_task_get_name(task));
THROW1(arg_error, 0, "Task '%s' has already been scheduled",
SD_task_get_name(task));
SD_task_t before = dep->src;
if (before->kind == SD_TASK_COMM_E2E) {
before->workstation_list[1] = task->workstation_list[0];
SD_task_t before = dep->src;
if (before->kind == SD_TASK_COMM_E2E) {
before->workstation_list[1] = task->workstation_list[0];
- if (before->workstation_list[0] && __SD_task_is_not_scheduled(before)) {
+ if (before->workstation_list[0] && __SD_task_is_ready(before)) {
SD_task_do_schedule(before);
VERB4("Auto-Schedule comm task %s between %s -> %s. It costs %.f bytes",
SD_task_get_name(before),
SD_task_do_schedule(before);
VERB4("Auto-Schedule comm task %s between %s -> %s. It costs %.f bytes",
SD_task_get_name(before),
SD_task_t after = dep->dst;
if (after->kind == SD_TASK_COMM_E2E) {
after->workstation_list[0] = task->workstation_list[0];
SD_task_t after = dep->dst;
if (after->kind == SD_TASK_COMM_E2E) {
after->workstation_list[0] = task->workstation_list[0];
- if (after->workstation_list[1] && __SD_task_is_not_scheduled(after)) {
+ if (after->workstation_list[1] && (__SD_task_is_not_scheduled(after) ||
+ __SD_task_is_ready(after))) {
SD_task_do_schedule(after);
VERB4("Auto-Schedule comm task %s between %s -> %s. It costs %.f bytes",
SD_task_get_name(after),
SD_task_do_schedule(after);
VERB4("Auto-Schedule comm task %s between %s -> %s. It costs %.f bytes",
SD_task_get_name(after),