From: thiery Date: Fri, 30 Jun 2006 13:53:15 +0000 (+0000) Subject: Amount is finally back X-Git-Tag: v3.3~2894 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e01617e0cf654cb8f49f40baf572d9801e3da1e9 Amount is finally back git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2464 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/simdag/sd_test.c b/examples/simdag/sd_test.c index e9e9a31352..3c79394670 100644 --- a/examples/simdag/sd_test.c +++ b/examples/simdag/sd_test.c @@ -19,10 +19,10 @@ int main(int argc, char **argv) { SD_create_environment(platform_file); /* creation of the tasks and their dependencies */ - SD_task_t taskA = SD_task_create("Task A", NULL); - SD_task_t taskB = SD_task_create("Task B", NULL); - SD_task_t taskC = SD_task_create("Task C", NULL); - SD_task_t taskD = SD_task_create("Task D", NULL); + SD_task_t taskA = SD_task_create("Task A", NULL, 10.0); + SD_task_t taskB = SD_task_create("Task B", NULL, 40.0); + SD_task_t taskC = SD_task_create("Task C", NULL, 30.0); + SD_task_t taskD = SD_task_create("Task D", NULL, 60.0); SD_task_dependency_add(NULL, NULL, taskB, taskA); SD_task_dependency_add(NULL, NULL, taskC, taskA); diff --git a/include/simdag/simdag.h b/include/simdag/simdag.h index 4050cc6efc..e82edbd220 100644 --- a/include/simdag/simdag.h +++ b/include/simdag/simdag.h @@ -62,7 +62,7 @@ double SD_workstation_get_available_power(SD_workstation_t workstati * * This section describes the functions for managing the tasks. * - * A task is some computing amount that can be executed + * A task is some working amount that can be executed * in parallel on several workstations. A task may depend on other * tasks, this means that the task cannot start until the other tasks are done. * Each task has a \ref e_SD_task_state_t "state" indicating whether @@ -71,7 +71,7 @@ double SD_workstation_get_available_power(SD_workstation_t workstati * @see SD_task_t, SD_task_dependency_management * @{ */ -SD_task_t SD_task_create(const char *name, void *data); +SD_task_t SD_task_create(const char *name, void *data, double amount); void* SD_task_get_data(SD_task_t task); void SD_task_set_data(SD_task_t task, void *data); e_SD_task_state_t SD_task_get_state(SD_task_t task); diff --git a/src/simdag/private.h b/src/simdag/private.h index ed79e6909b..0ef4402ddb 100644 --- a/src/simdag/private.h +++ b/src/simdag/private.h @@ -47,6 +47,7 @@ typedef struct SD_task { xbt_swag_t state_set; void *data; /* user data */ char *name; + double amount; surf_action_t surf_action; unsigned short watch_points; int state_changed; /* used only by SD_simulate, to make sure we put diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index c507caf32d..059fa86047 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -13,7 +13,7 @@ static void __SD_task_remove_dependencies(SD_task_t task); * \return the new task * \see SD_task_destroy() */ -SD_task_t SD_task_create(const char *name, void *data) { +SD_task_t SD_task_create(const char *name, void *data, double amount) { SD_CHECK_INIT_DONE(); SD_task_t task = xbt_new0(s_SD_task_t, 1); @@ -28,6 +28,7 @@ SD_task_t SD_task_create(const char *name, void *data) { task->state_set = sd_global->not_scheduled_task_set; xbt_swag_insert(task,task->state_set); + task->amount = amount; task->surf_action = NULL; task->watch_points = 0; task->state_changed = 0; @@ -157,8 +158,7 @@ const char* SD_task_get_name(SD_task_t task) { double SD_task_get_amount(SD_task_t task) { SD_CHECK_INIT_DONE(); xbt_assert0(task != NULL, "Invalid parameter"); - xbt_assert1(task->surf_action != NULL, "The task '%s' is not running", SD_task_get_name(task)); - return task->surf_action->cost; + return task->amount; } /** @@ -171,8 +171,11 @@ double SD_task_get_amount(SD_task_t task) { double SD_task_get_remaining_amount(SD_task_t task) { SD_CHECK_INIT_DONE(); xbt_assert0(task != NULL, "Invalid parameter"); - xbt_assert1(task->surf_action != NULL, "The task '%s' is not running", SD_task_get_name(task)); - return task->surf_action->remains / task->surf_action->cost; + + if (task->surf_action) + return task->surf_action->remains; + else + return task->amount; } /* temporary function for debbuging */ @@ -489,7 +492,7 @@ surf_action_t __SD_task_run(SD_task_t task) { task->workstation_list, task->computation_amount, task->communication_amount, - 1.0, + task->amount, task->rate); __SD_task_destroy_scheduling_data(task); /* now the scheduling data are not useful anymore */