From: coldpeace Date: Wed, 4 Aug 2010 10:42:35 +0000 (+0000) Subject: add SD_load_environment_script function to Simdag Module X-Git-Tag: v3_5~725 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5dbbe94ce380f979a687b46ca435d39d4c22bb97?hp=a470bbfee8e031e6e21e4605d1d19a1a5eb1039b add SD_load_environment_script function to Simdag Module git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8096 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/include/simdag/simdag.h b/include/simdag/simdag.h index 2dbde6053e..2dac2c4a06 100644 --- a/include/simdag/simdag.h +++ b/include/simdag/simdag.h @@ -196,6 +196,7 @@ XBT_PUBLIC(int) SD_task_dependency_exists(SD_task_t src, SD_task_t dst); XBT_PUBLIC(void) SD_init(int *argc, char **argv); XBT_PUBLIC(void) SD_application_reinit(void); XBT_PUBLIC(void) SD_create_environment(const char *platform_file); +XBT_PUBLIC(void) SD_load_environment_script(const char *script_file); XBT_PUBLIC(xbt_dynar_t) SD_simulate(double how_long); XBT_PUBLIC(double) SD_get_clock(void); XBT_PUBLIC(void) SD_exit(void); diff --git a/src/simdag/sd_global.c b/src/simdag/sd_global.c index b82cd23c5b..a20439fe27 100644 --- a/src/simdag/sd_global.c +++ b/src/simdag/sd_global.c @@ -12,6 +12,11 @@ #include "xbt/log.h" #include "xbt/str.h" #include "xbt/config.h" +#ifdef HAVE_LUA +#include +#include +#include +#endif XBT_LOG_NEW_CATEGORY(sd, "Logging specific to SimDag"); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_kernel, sd, @@ -162,7 +167,6 @@ void SD_create_environment(const char *platform_file) surf_config_models_setup(platform_file); parse_platform_file(platform_file); - /* now let's create the SD wrappers for workstations and links */ xbt_dict_foreach(surf_model_resource_set(surf_workstation_model), cursor, name, surf_workstation) { @@ -380,3 +384,23 @@ void SD_exit(void) /* we cannot use exceptions here because xbt is not running! */ } } + +/** + * \bried load script file + */ + +void SD_load_environment_script(const char* script_file) +{ +#ifdef HAVE_LUA + lua_State *L = lua_open(); + luaL_openlibs(L); + + if (luaL_loadfile(L, script_file) || lua_pcall(L, 0, 0, 0)) { + printf("error: %s\n", lua_tostring(L, -1)); + return; + } +#else + xbt_die("Lua is not available!! to call SD_load_environment_script, lua should be available..."); +#endif + return; +}