X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d33e7a563a884247bff85406dcc589a70a162e79..6325e7c528bcaff5a625184cf6a888f8151e494a:/src/surf/surf_interface.cpp diff --git a/src/surf/surf_interface.cpp b/src/surf/surf_interface.cpp index cf5f486fa7..8c3c1069cf 100644 --- a/src/surf/surf_interface.cpp +++ b/src/surf/surf_interface.cpp @@ -12,6 +12,8 @@ #include "src/surf/HostImpl.hpp" #include +#include +#include #include XBT_LOG_NEW_CATEGORY(surf, "All SURF categories"); @@ -26,8 +28,9 @@ std::vector * all_existing_models = nullptr; /* to destroy models simgrid::trace_mgr::future_evt_set *future_evt_set = nullptr; std::vector surf_path; std::vector host_that_restart; -xbt_dict_t watched_hosts_lib; -extern std::map storage_types; +/** set of hosts for which one want to be notified if they ever restart. */ +std::set watched_hosts; +extern std::map storage_types; namespace simgrid { namespace surf { @@ -112,10 +115,6 @@ s_surf_model_description_t surf_storage_model_description[] = { {nullptr, nullptr, nullptr} /* this array must be nullptr terminated */ }; -#if HAVE_THREAD_CONTEXTS -static xbt_parmap_t surf_parmap = nullptr; /* parallel map on models */ -#endif - double NOW = 0; double surf_get_clock() @@ -161,9 +160,8 @@ FILE *surf_fopen(const char *name, const char *mode) /* search relative files in the path */ for (auto path_elm : surf_path) { - char* buff = bprintf("%s" FILE_DELIM "%s", path_elm.c_str(), name); - file = fopen(buff, mode); - free(buff); + std::string buff = path_elm + FILE_DELIM + name; + file = fopen(buff.c_str(), mode); if (file) return file; @@ -240,20 +238,18 @@ void model_help(const char *category, s_surf_model_description_t * table) printf(" %s: %s\n", table[i].name, table[i].description); } -int find_model_description(s_surf_model_description_t * table, - const char *name) +int find_model_description(s_surf_model_description_t* table, const char* name) { - int i; - char *name_list = nullptr; - - for (i = 0; table[i].name; i++) + for (int i = 0; table[i].name; i++) if (not strcmp(name, table[i].name)) { return i; } + if (not table[0].name) xbt_die("No model is valid! This is a bug."); - name_list = xbt_strdup(table[0].name); - for (i = 1; table[i].name; i++) { + + char* name_list = xbt_strdup(table[0].name); + for (int i = 1; table[i].name; i++) { name_list = (char *) xbt_realloc(name_list, strlen(name_list) + strlen(table[i].name) + 3); strncat(name_list, ", ", 2); strncat(name_list, table[i].name, strlen(table[i].name)); @@ -346,8 +342,6 @@ void surf_init(int *argc, char **argv) XBT_DEBUG("Create all Libs"); USER_HOST_LEVEL = simgrid::s4u::Host::extension_create(nullptr); - watched_hosts_lib = xbt_dict_new_homogeneous(nullptr); - xbt_init(argc, argv); if (not all_existing_models) all_existing_models = new std::vector(); @@ -369,19 +363,15 @@ void surf_exit() sg_host_exit(); sg_link_exit(); - xbt_dict_free(&watched_hosts_lib); for (auto e : storage_types) { - storage_type_t stype = e.second; - free(stype->model); - free(stype->type_id); - free(stype->content); - xbt_dict_free(&(stype->properties)); + simgrid::surf::StorageType* stype = e.second; + delete stype->properties; delete stype->model_properties; - free(stype); + delete stype; } - for (auto s : *simgrid::surf::StorageImpl::storages) + for (auto s : *simgrid::surf::StorageImpl::storagesMap()) delete s.second; - delete simgrid::surf::StorageImpl::storages; + delete simgrid::surf::StorageImpl::storagesMap(); for (auto model : *all_existing_models) delete model; @@ -394,10 +384,6 @@ void surf_exit() future_evt_set = nullptr; } -#if HAVE_THREAD_CONTEXTS - xbt_parmap_destroy(surf_parmap); -#endif - tmgr_finalize(); sg_platf_exit(); simgrid::s4u::Engine::shutdown(); @@ -446,9 +432,9 @@ double Model::nextOccuringEvent(double now) double Model::nextOccuringEventLazy(double now) { - XBT_DEBUG("Before share resources, the size of modified actions set is %zd", modifiedSet_->size()); + XBT_DEBUG("Before share resources, the size of modified actions set is %zu", modifiedSet_->size()); lmm_solve(maxminSystem_); - XBT_DEBUG("After share resources, The size of modified actions set is %zd", modifiedSet_->size()); + XBT_DEBUG("After share resources, The size of modified actions set is %zu", modifiedSet_->size()); while (not modifiedSet_->empty()) { Action *action = &(modifiedSet_->front()); @@ -651,7 +637,7 @@ Action::~Action() { } void Action::finish() { - finishTime_ = surf_get_clock(); + finishTime_ = surf_get_clock(); } Action::State Action::getState() @@ -739,8 +725,6 @@ void Action::setMaxDuration(double duration) heapRemove(getModel()->getActionHeap()); } -void Action::gapRemove() {} - void Action::setSharingWeight(double weight) { XBT_IN("(%p,%g)", this, weight); @@ -869,13 +853,10 @@ void Action::updateRemainingLazy(double now) { double delta = 0.0; - if(getModel() == surf_network_model) - { + if (getModel() == surf_network_model) { if (suspended_ != 0) return; - } - else - { + } else { xbt_assert(stateSet_ == getModel()->getRunningActionSet(), "You're updating an action that is not running."); xbt_assert(sharingWeight_ > 0, "You're updating an action that seems suspended."); } @@ -894,8 +875,7 @@ void Action::updateRemainingLazy(double now) XBT_DEBUG("Updating action(%p): remains is now %f", this, remains_); } - if(getModel() == surf_network_model) - { + if (getModel() == surf_network_model) { if (maxDuration_ != NO_MAX_DURATION) double_update(&maxDuration_, delta, sg_surf_precision);