s_SD_task_t task;
- xbt_assert0(!SD_INITIALISED(), "SD_init() already called");
+ xbt_assert(!SD_INITIALISED(), "SD_init() already called");
/* Connect our log channels: that must be done manually under windows */
XBT_LOG_CONNECT(sd_kernel, sd);
sd_global = xbt_new(s_SD_global_t, 1);
- sd_global->workstations = xbt_dict_new();
- sd_global->workstation_count = 0;
sd_global->workstation_list = NULL;
- sd_global->links = xbt_dict_new();
- sd_global->link_count = 0;
sd_global->link_list = NULL;
sd_global->recyclable_route = NULL;
sd_global->watch_point_reached = 0;
#endif
XBT_DEBUG("ADD SD LEVELS");
- SD_HOST_LEVEL = xbt_lib_add_level(host_lib,free);
- SD_LINK_LEVEL = xbt_lib_add_level(link_lib,free);
+ SD_HOST_LEVEL = xbt_lib_add_level(host_lib,__SD_workstation_destroy);
+ SD_LINK_LEVEL = xbt_lib_add_level(link_lib,__SD_link_destroy);
}
/**
*/
void SD_create_environment(const char *platform_file)
{
- xbt_dict_cursor_t cursor = NULL;
+ xbt_lib_cursor_t cursor = NULL;
char *name = NULL;
- void *surf_workstation = NULL;
- void *surf_link = NULL;
+ void **surf_workstation = NULL;
+ void **surf_link = NULL;
- platform_filename = bprintf("%s",platform_file);
+ platform_filename = xbt_strdup(platform_file);
// Reset callbacks
surf_parse_reset_callbacks();
surf_config_models_create_elms();
/* 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) {
- __SD_workstation_create(surf_workstation, NULL);
+ xbt_lib_foreach(host_lib, cursor, name, surf_workstation){
+ if(surf_workstation[SURF_WKS_LEVEL])
+ __SD_workstation_create(surf_workstation[SURF_WKS_LEVEL], NULL);
}
- xbt_dict_foreach(surf_model_resource_set(surf_network_model), cursor,
- name, surf_link) {
- __SD_link_create(surf_link, NULL);
+ xbt_lib_foreach(link_lib, cursor, name, surf_link) {
+ if(surf_link[SURF_LINK_LEVEL])
+ __SD_link_create(surf_link[SURF_LINK_LEVEL], NULL);
}
XBT_DEBUG("Workstation number: %d, link number: %d",
#ifdef HAVE_TRACING
TRACE_surf_release();
#endif
+
if (SD_INITIALISED()) {
XBT_DEBUG("Destroying workstation and link dictionaries...");
- xbt_dict_free(&sd_global->workstations);
- xbt_dict_free(&sd_global->links);
XBT_DEBUG("Destroying workstation and link arrays if necessary...");
if (sd_global->workstation_list != NULL)
xbt_swag_free(sd_global->done_task_set);
xbt_swag_free(sd_global->failed_task_set);
+ XBT_DEBUG("Exiting Surf...");
+ surf_exit();
+
xbt_free(sd_global);
sd_global = NULL;
jedule_sd_cleanup();
#endif
- XBT_DEBUG("Exiting Surf...");
- surf_exit();
} else {
XBT_WARN("SD_exit() called, but SimDag is not running");
/* we cannot use exceptions here because xbt is not running! */
}
/**
- * \bried load script file
+ * \brief load script file
*/
void SD_load_environment_script(const char *script_file)