X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/682eb8ce658cd1cafc772d2f62b6fb9430471b81..f4ae32c676421a6cd5c076b273dd7a07f2695957:/src/surf/surf.c diff --git a/src/surf/surf.c b/src/surf/surf.c index 2f7957df2e..a1d6ebf4ec 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -125,8 +125,11 @@ const char *surf_action_state_names[6] = { "SURF_ACTION_NOT_IN_THE_SYSTEM" }; -s_surf_model_description_t surf_network_model_description[surf_network_model_description_size] = { + +s_surf_model_description_t surf_network_model_description[] = { + {"Constant", NULL, surf_network_model_init_Constant}, {"CM02", NULL, surf_network_model_init_CM02}, + {"LegrandVelho", NULL, surf_network_model_init_LegrandVelho}, #ifdef HAVE_GTNETS {"GTNets", NULL, surf_network_model_init_GTNETS}, #endif @@ -134,40 +137,43 @@ s_surf_model_description_t surf_network_model_description[surf_network_model_des {"SDP", NULL, surf_network_model_init_SDP}, #endif {"Reno", NULL, surf_network_model_init_Reno}, - {"Vegas", NULL, surf_network_model_init_Vegas} + {"Reno2", NULL, surf_network_model_init_Reno2}, + {"Vegas", NULL, surf_network_model_init_Vegas}, + { NULL,NULL,NULL} /* this array must be NULL terminated */ }; -s_surf_model_description_t surf_cpu_model_description[surf_cpu_model_description_size] = { +s_surf_model_description_t surf_cpu_model_description[] = { {"Cas01", NULL, surf_cpu_model_init_Cas01}, + { NULL,NULL,NULL} /* this array must be NULL terminated */ }; -s_surf_model_description_t surf_workstation_model_description[surf_workstation_model_description_size] = { +s_surf_model_description_t surf_workstation_model_description[] = { {"CLM03", NULL, surf_workstation_model_init_CLM03, create_workstations}, - {"compound", NULL, surf_workstation_model_init_compound, NULL}, - {"ptask_L07", NULL, surf_workstation_model_init_ptask_L07, NULL} + {"compound", NULL, surf_workstation_model_init_compound, create_workstations}, + {"ptask_L07", NULL, surf_workstation_model_init_ptask_L07, NULL}, + { NULL,NULL,NULL} /* this array must be NULL terminated */ }; void update_model_description(s_surf_model_description_t * table, - int table_size, - const char *name, - surf_model_t model) + const char *name, + surf_model_t model) { - int i = find_model_description(table, table_size, name); + int i = find_model_description(table, name); table[i].model = model; } int find_model_description(s_surf_model_description_t * table, - int table_size, const char *name) + const char *name) { int i; char *name_list = NULL; - for (i = 0; i < table_size; i++) + for (i = 0; table[i].name; i++) if (!strcmp(name, table[i].name)) { return i; } name_list = strdup(table[0].name); - for (i = 1; i < table_size; i++) { + for (i = 1; table[i].name; i++) { name_list = xbt_realloc(name_list, strlen(name_list) + strlen(table[i].name) + 2); @@ -210,8 +216,6 @@ double generic_maxmin_share_resources(xbt_swag_t running_actions, } else min = action->max_duration; - DEBUG5("Found action (%p: duration = %f, remains = %f, value = %f) ! %f", - action, action->max_duration, action->remains, value, min); for (action = xbt_swag_getNext(action, running_actions->offset); action; @@ -453,20 +457,14 @@ void surf_exit(void) xbt_exit(); } -double surf_solve(void) -{ - static int first_run = 1; - - double min = -1.0; +void surf_presolve(void) { double next_event_date = -1.0; - double model_next_action_end = -1.0; + tmgr_trace_event_t event = NULL; double value = -1.0; surf_model_object_t model_obj = NULL; surf_model_t model = NULL; - tmgr_trace_event_t event = NULL; unsigned int iter; - - if (first_run) { + DEBUG0 ("First Run! Let's \"purge\" events and put models in the right state"); while ((next_event_date = tmgr_history_next_date(history)) != -1.0) { @@ -477,15 +475,24 @@ double surf_solve(void) &value, (void **) &model_obj))) { model_obj->model->common_private-> - update_resource_state(model_obj, event, value); + update_resource_state(model_obj, event, value,NOW); } } xbt_dynar_foreach(model_list, iter, model) { model->common_private->update_actions_state(NOW, 0.0); } - first_run = 0; - return 0.0; - } +} + +double surf_solve(void) +{ + double min = -1.0; + double next_event_date = -1.0; + double model_next_action_end = -1.0; + double value = -1.0; + surf_model_object_t model_obj = NULL; + surf_model_t model = NULL; + tmgr_trace_event_t event = NULL; + unsigned int iter; min = -1.0; @@ -525,7 +532,7 @@ double surf_solve(void) /* 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_resource_state(model_obj, event, value); + update_resource_state(model_obj, event, value,NOW+min); } }