From 87363de824c98c5824d7dcc8b16c6342fb63a6fa Mon Sep 17 00:00:00 2001 From: thiery Date: Tue, 18 Jul 2006 07:13:08 +0000 Subject: [PATCH] Update SD_init() and SD_exit() git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2607 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/simdag/private.h | 3 ++- src/simdag/sd_global.c | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/simdag/private.h b/src/simdag/private.h index c145d441ea..9fef23bc63 100644 --- a/src/simdag/private.h +++ b/src/simdag/private.h @@ -7,7 +7,8 @@ #include "simdag/datatypes.h" #include "surf/surf.h" -#define SD_CHECK_INIT_DONE() xbt_assert0(sd_global != NULL, "Call SD_init() first") +#define SD_INITIALISED() (sd_global != NULL) +#define SD_CHECK_INIT_DONE() xbt_assert0(SD_INITIALISED(), "Call SD_init() first") /* Global variables */ diff --git a/src/simdag/sd_global.c b/src/simdag/sd_global.c index cfcab36cea..22ee178e74 100644 --- a/src/simdag/sd_global.c +++ b/src/simdag/sd_global.c @@ -20,7 +20,9 @@ SD_global_t sd_global = NULL; * \see SD_create_environment(), SD_exit() */ void SD_init(int *argc, char **argv) { - xbt_assert0(sd_global == NULL, "SD_init already called"); + if (SD_INITIALISED()) { + xbt_assert0(0, "SD_init() already called"); + } sd_global = xbt_new0(s_SD_global_t, 1); sd_global->workstations = xbt_dict_new(); @@ -108,6 +110,8 @@ SD_task_t* SD_simulate(double how_long) int i; static int first_time = 1; + SD_CHECK_INIT_DONE(); + INFO0("Starting simulation..."); /* create the array that will be returned */ @@ -231,6 +235,8 @@ SD_task_t* SD_simulate(double how_long) * \return the current clock, in second */ double SD_get_clock(void) { + SD_CHECK_INIT_DONE(); + return surf_get_clock(); } @@ -243,7 +249,7 @@ double SD_get_clock(void) { * \see SD_init(), SD_task_destroy() */ void SD_exit(void) { - if (sd_global != NULL) { + if (SD_INITIALISED()) { DEBUG0("Destroying workstation and link dictionaries..."); xbt_dict_free(&sd_global->workstations); xbt_dict_free(&sd_global->links); @@ -264,8 +270,13 @@ void SD_exit(void) { xbt_swag_free(sd_global->failed_task_set); xbt_free(sd_global); + sd_global = NULL; DEBUG0("Exiting Surf..."); surf_exit(); } + else { + fprintf(stderr, "Warning: SD_exit() called while SimDag was not running\n"); + /* we cannot use assertions here because xbt is not running! */ + } } -- 2.20.1