name_list);
}
-double generic_maxmin_share_models(xbt_swag_t running_actions,
- size_t offset)
-{
- return generic_maxmin_share_models2(running_actions, offset,
- maxmin_system, lmm_solve);
-}
-
-double generic_maxmin_share_models2(xbt_swag_t running_actions,
- size_t offset,
- lmm_system_t sys,
- void (*solve) (lmm_system_t))
+double generic_maxmin_share_resources(xbt_swag_t running_actions,
+ size_t offset,
+ lmm_system_t sys,
+ void (*solve) (lmm_system_t))
{
surf_action_t action = NULL;
double min = -1;
model_list = xbt_dynar_new(sizeof(surf_model_private_t), NULL);
if (!history)
history = tmgr_history_new();
- if (!maxmin_system)
- maxmin_system = lmm_system_new();
}
static char *path_name = NULL;
FILE *surf_fopen(const char *name, const char *mode)
{
- int i;
+ unsigned int iter;
char *path = NULL;
FILE *file = NULL;
- int path_name_len = 0; /* don't count '\0' */
+ unsigned int path_name_len = 0; /* don't count '\0' */
xbt_assert0(name, "Need a non-NULL file name");
path_name = xbt_new0(char, path_name_len + 1);
}
- xbt_dynar_foreach(surf_path, i, path) {
+ xbt_dynar_foreach(surf_path, iter, path) {
if (path_name_len < strlen(path) + strlen(name) + 1) {
path_name_len = strlen(path) + strlen(name) + 1; /* plus '/' */
path_name = xbt_realloc(path_name, path_name_len + 1);
}
+ #ifdef WIN32
+ sprintf(path_name, "%s\\%s", path, name);
+ #else
sprintf(path_name, "%s/%s", path, name);
+ #endif
file = fopen(path_name, mode);
if (file)
return file;
void surf_exit(void)
{
- int i;
+ unsigned int iter;
surf_model_t model = NULL;
- xbt_dynar_foreach(model_list, i, model) {
+ xbt_dynar_foreach(model_list, iter, model) {
model->common_private->finalize();
}
free(path_name);
path_name = NULL;
}
+ surf_parse_free_callbacks();
+ xbt_dict_free(&route_table);
+ NOW=0; /* Just in case the user plans to restart the simulation afterward */
xbt_exit();
}
surf_model_object_t model_obj = NULL;
surf_model_t model = NULL;
tmgr_trace_event_t event = NULL;
- int i;
+ unsigned int iter;
if (first_run) {
DEBUG0
&value,
(void **) &model_obj))) {
model_obj->model->common_private->
- update_model_state(model_obj, event, value);
+ update_resource_state(model_obj, event, value);
}
}
- xbt_dynar_foreach(model_list, i, model) {
+ xbt_dynar_foreach(model_list, iter, model) {
model->common_private->update_actions_state(NOW, 0.0);
}
first_run = 0;
min = -1.0;
DEBUG0("Looking for next action end");
- xbt_dynar_foreach(model_list, i, model) {
+ xbt_dynar_foreach(model_list, iter, model) {
DEBUG1("Running for Resource [%s]", model->common_public->name);
model_next_action_end =
- model->common_private->share_models(NOW);
+ model->common_private->share_resources(NOW);
DEBUG2("Resource [%s] : next action end = %f",
model->common_public->name, model_next_action_end);
if (((min < 0.0) || (model_next_action_end < min))
&value,
(void **) &model_obj))) {
if (model_obj->model->common_private->
- model_used(model_obj)) {
+ resource_used(model_obj)) {
min = next_event_date - NOW;
DEBUG1
("This event will modify model state. Next event set to %f",
/* update state of model_obj according to new value. Does not touch lmm.
It will be modified if needed when updating actions */
model_obj->model->common_private->
- update_model_state(model_obj, event, value);
+ update_resource_state(model_obj, event, value);
}
}
NOW = NOW + min;
- xbt_dynar_foreach(model_list, i, model) {
+ xbt_dynar_foreach(model_list, iter, model) {
model->common_private->update_actions_state(NOW, min);
}