From: thiery Date: Wed, 12 Jul 2006 12:22:55 +0000 (+0000) Subject: Add functions SD_task_get_start_time() and SD_task_get_finish_time() to SimDag X-Git-Tag: v3.3~2817 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/a663419ba463280a80d1a5e2a1d8bba6b24f9259 Add functions SD_task_get_start_time() and SD_task_get_finish_time() to SimDag git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2541 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/include/simdag/simdag.h b/include/simdag/simdag.h index 429618beee..effb3eb5ed 100644 --- a/include/simdag/simdag.h +++ b/include/simdag/simdag.h @@ -97,6 +97,8 @@ void SD_task_schedule(SD_task_t task, int workstation_nb, const SD_workstation_t *workstation_list, const double *computation_amount, const double *communication_amount, double rate); void SD_task_unschedule(SD_task_t task); +double SD_task_get_start_time(SD_task_t task); +double SD_task_get_finish_time(SD_task_t task); void SD_task_destroy(SD_task_t task); /** @} */ diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 5d13f2af3a..236d629b28 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -564,6 +564,41 @@ static void __SD_task_remove_dependencies(SD_task_t task) { } } +/** + * \brief Returns the start time of a task + * + * The task state must be SD_RUNNING, SD_DONE or SD_FAILED. + * + * \task a task + * \return the start time of this task + */ +double SD_task_get_start_time(SD_task_t task) { + SD_CHECK_INIT_DONE(); + xbt_assert0(task != NULL, "Invalid parameter"); + xbt_assert1(task->surf_action != NULL, "Task '%s' is not started yet!", SD_task_get_name(task)); + + return surf_workstation_resource->common_public->action_get_start_time(task->surf_action); +} + +/** + * \brief Returns the finish time of a task + * + * The task state must be SD_RUNNING, SD_DONE or SD_FAILED. + * If the state is not completed yet, the returned value is an + * estimation of the task finish time. This value can fluctuate + * until the task is completed. + * + * \task a task + * \return the start time of this task + */ +double SD_task_get_finish_time(SD_task_t task) { + SD_CHECK_INIT_DONE(); + xbt_assert0(task != NULL, "Invalid parameter"); + xbt_assert1(task->surf_action != NULL, "Task '%s' is not started yet!", SD_task_get_name(task)); + + return surf_workstation_resource->common_public->action_get_finish_time(task->surf_action); +} + /** * \brief Destroys a task. *