X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/76c04d71c8291e609107f81e5d3a3c4e4adbbef7..6760cb07d6b57be16928d95339d71e57c4e24f36:/src/simdag/sd_task.c?ds=sidebyside diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index b5728f14be..1196233f45 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -1,4 +1,5 @@ -/* Copyright (c) 2007-2009 Da SimGrid Team. All rights reserved. */ +/* Copyright (c) 2006, 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -168,6 +169,12 @@ const char *SD_task_get_name(SD_task_t task) return task->name; } +/** @brief Allows to change the name of a task */ +void SD_task_set_name(SD_task_t task, const char *name) { + xbt_free(task->name); + task->name = xbt_strdup(name); +} + /** @brief Returns the dynar of the parents of a task * * \param task a task @@ -644,25 +651,27 @@ double SD_task_get_execution_time(SD_task_t task, double time, max_time = 0.0; int i, j; SD_CHECK_INIT_DONE(); - xbt_assert0(task != NULL && workstation_nb > 0 && workstation_list != NULL - && computation_amount != NULL - && communication_amount != NULL, "Invalid parameter"); + xbt_assert0(task != NULL && workstation_nb > 0 && workstation_list != NULL, + "Invalid parameter"); /* the task execution time is the maximum execution time of the parallel tasks */ for (i = 0; i < workstation_nb; i++) { - time = - SD_workstation_get_computation_time(workstation_list[i], - computation_amount[i]); - - for (j = 0; j < workstation_nb; j++) { - time += - SD_route_get_communication_time(workstation_list[i], - workstation_list[j], - communication_amount[i * - workstation_nb + - j]); - } + time = 0.0; + if (computation_amount != NULL) + time = + SD_workstation_get_computation_time(workstation_list[i], + computation_amount[i]); + + if (communication_amount != NULL) + for (j = 0; j < workstation_nb; j++) { + time += + SD_route_get_communication_time(workstation_list[i], + workstation_list[j], + communication_amount[i * + workstation_nb + + j]); + } if (time > max_time) { max_time = time;