X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7e9b6e88f6c2daa87a9f5370596e5acc7f73fc6a..45f517dc85cc6c2ed4ebce27de4f75c00271f945:/src/simdag/sd_task.c diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 0b7e382a76..c51d5f2847 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -279,14 +279,22 @@ void SD_task_set_data(SD_task_t task, void *data) /** * \brief Sets the rate of a task * - * This will change the percentage of the available power or network bandwidth - * a task can use. + * This will change the network bandwidth a task can use. This rate + * depends on both the nominal bandwidth on the route onto which the task is + * scheduled (\see SD_task_get_current_bandwidth) and the amount of data to + * transfer. * - * \param task a task - * \param rate the new rate you want to associate with this task + * To divide the nominal bandwidth by 2, the rate then has to be : + * rate = bandwidth/(2*amount) + * + * \param task a \see SD_TASK_COMM_E2E task (end-to-end communication) + * \param rate the new rate you want to associate with this task. */ void SD_task_set_rate(SD_task_t task, double rate) { + xbt_assert(task->kind == SD_TASK_COMM_E2E, + "The rate can be modified for end-to-end communications only."); + task->rate = rate; } @@ -965,8 +973,12 @@ void SD_task_unschedule(SD_task_t task) SD_task_get_name(task)); if (__SD_task_is_scheduled_or_runnable(task) /* if the task is scheduled or runnable */ - &&task->kind == SD_TASK_NOT_TYPED) /* Don't free scheduling data for typed tasks */ + && ((task->kind == SD_TASK_COMP_PAR_AMDAHL) || + (task->kind == SD_TASK_COMM_PAR_MXN_1D_BLOCK))) { /* Don't free scheduling data for typed tasks */ __SD_task_destroy_scheduling_data(task); + task->workstation_list=NULL; + task->workstation_nb = 0; + } if (__SD_task_is_running(task)) /* the task should become SD_FAILED */ surf_workstation_model->action_cancel(task->surf_action);