std::vector<std::string> surf_path;
std::vector<simgrid::s4u::Host*> host_that_restart;
xbt_dict_t watched_hosts_lib;
+extern std::map<std::string, storage_type_t> storage_types;
namespace simgrid {
namespace surf {
USER_HOST_LEVEL = simgrid::s4u::Host::extension_create(nullptr);
storage_lib = xbt_lib_new();
- storage_type_lib = xbt_lib_new();
- file_lib = xbt_lib_new();
watched_hosts_lib = xbt_dict_new_homogeneous(nullptr);
XBT_DEBUG("Add SURF levels");
if (!future_evt_set)
future_evt_set = new simgrid::trace_mgr::future_evt_set();
- TRACE_add_start_function(TRACE_surf_alloc);
- TRACE_add_end_function(TRACE_surf_release);
+ TRACE_surf_alloc();
+ simgrid::surf::surfExitCallbacks.connect(TRACE_surf_release);
sg_config_init(argc, argv);
sg_host_exit();
xbt_lib_free(&storage_lib);
sg_link_exit();
- xbt_lib_free(&storage_type_lib);
- xbt_lib_free(&file_lib);
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);
+ free(stype->content_type);
+ xbt_dict_free(&(stype->properties));
+ delete stype->model_properties;
+ free(stype);
+ }
for (auto model : *all_existing_models)
delete model;
while(!modifiedSet_->empty()) {
Action *action = &(modifiedSet_->front());
modifiedSet_->pop_front();
- int max_dur_flag = 0;
+ bool max_dur_flag = false;
if (action->getStateSet() != runningActionSet_)
continue;
min = now + time_to_completion; // when the task will complete if nothing changes
}
- if ((action->getMaxDuration() != NO_MAX_DURATION) &&
+ if ((action->getMaxDuration() > NO_MAX_DURATION) &&
(min == -1 || action->getStartTime() + action->getMaxDuration() < min)) {
// when the task will complete anyway because of the deadline if any
min = action->getStartTime() + action->getMaxDuration();
- max_dur_flag = 1;
+ max_dur_flag = true;
}
if (min != -1) {
action->heapUpdate(actionHeap_, min, max_dur_flag ? MAX_DURATION : NORMAL);
- XBT_DEBUG("Insert at heap action(%p) min %f now %f", action, min,
- now);
- } else DIE_IMPOSSIBLE;
+ XBT_DEBUG("Insert at heap action(%p) min %f now %f", action, min, now);
+ } else
+ DIE_IMPOSSIBLE;
}
//hereafter must have already the min value for this resource model
if (variable_)
lmm_update_variable_bound(getModel()->getMaxminSystem(), variable_, bound);
- if (getModel()->getUpdateMechanism() == UM_LAZY && getLastUpdate()!=surf_get_clock())
+ if (getModel()->getUpdateMechanism() == UM_LAZY && getLastUpdate() != surf_get_clock())
heapRemove(getModel()->getActionHeap());
XBT_OUT();
}
double Action::getFinishTime()
{
/* keep the function behavior, some models (cpu_ti) change the finish time before the action end */
- return remains_ == 0 ? finishTime_ : -1;
+ return remains_ <= 0 ? finishTime_ : -1;
}
void Action::setData(void* data)