"SURF_ACTION_NOT_IN_THE_SYSTEM"
};
+int surf_network_resource_description_size=3
+ #ifdef HAVE_GTNETS
+ +1
+ #endif
+ #ifdef HAVE_SDP
+ +1
+ #endif
+;
+s_surf_resource_description_t surf_network_resource_description[]=
+ {
+ {"CM02",NULL,surf_network_resource_init_CM02},
+#ifdef HAVE_GTNETS
+ {"GTNets",NULL,surf_network_resource_init_GTNETS},
+#endif
+#ifdef HAVE_SDP
+ {"SDP",NULL,surf_network_resource_init_SDP},
+#endif
+ {"Reno",NULL,surf_network_resource_init_Reno},
+ {"Vegas",NULL,surf_network_resource_init_Vegas}
+ };
+
+int surf_cpu_resource_description_size=1;
+s_surf_resource_description_t surf_cpu_resource_description[]=
+ {
+ {"Cas01",NULL,surf_cpu_resource_init_Cas01},
+ };
+
+int surf_workstation_resource_description_size=4;
+s_surf_resource_description_t surf_workstation_resource_description[]=
+ {
+ {"CLM03",NULL,surf_workstation_resource_init_CLM03},
+ {"KCCFLN05",NULL,surf_workstation_resource_init_KCCFLN05},
+ {"compound",NULL,surf_workstation_resource_init_compound},
+ {"ptask_L07",NULL,surf_workstation_resource_init_ptask_L07}
+ };
+
+void update_resource_description(s_surf_resource_description_t *table,
+ int table_size,
+ const char* name,
+ surf_resource_t resource
+ )
+{
+ int i = find_resource_description(table, table_size, name);
+ table[i].resource=resource;
+}
+
+int find_resource_description(s_surf_resource_description_t *table,
+ int table_size,
+ const char* name)
+{
+ int i;
+ char *name_list=NULL;
+
+ for(i=0;i<table_size;i++)
+ if(!strcmp(name,table[i].name)) {
+ return i;
+ }
+ name_list=strdup(table[0].name);
+ for(i=1;i<table_size;i++) {
+ name_list = xbt_realloc(name_list,strlen(name_list)+strlen(table[i].name)+2);
+ strcat(name_list,", ");
+ strcat(name_list,table[i].name);
+ }
+ xbt_assert2(0, "Model '%s' is invalid! Valid models are: %s.",name,name_list);
+}
+
double generic_maxmin_share_resources(xbt_swag_t running_actions,
size_t offset)
{
return generic_maxmin_share_resources2(running_actions, offset,
- maxmin_system);
+ maxmin_system, lmm_solve);
}
double generic_maxmin_share_resources2(xbt_swag_t running_actions,
size_t offset,
- lmm_system_t sys)
+ lmm_system_t sys,
+ void (*solve)(lmm_system_t))
{
surf_action_t action = NULL;
double min = -1;
double value = -1;
#define VARIABLE(action) (*((lmm_variable_t*)(((char *) (action)) + (offset))))
- if(!use_sdp_solver && !use_lagrange_solver)
- lmm_solve(sys);
- else if(!use_lagrange_solver){
-#ifdef HAVE_SDP
- sdp_solve(sys);
-#else
- xbt_assert0(0, "No CSDP found! You cannot use this model!");
-#endif
- }else{
- lagrange_solve(sys);
- }
+ xbt_assert0(solve,"Give me a real solver function!");
+ solve(sys);
xbt_swag_foreach(action, running_actions) {
value = lmm_variable_getvalue(VARIABLE(action));
} else
min = action->max_duration;
- DEBUG5("Found an action (%p: duration = %f, remains = %f, value = %f) ! %f",action, action->max_duration, action->remains, value, min);
+ 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;
DEBUG0("Looking for next action end");
xbt_dynar_foreach(resource_list, i, resource) {
+ DEBUG1("Running for Resource [%s]",resource->common_public->name);
resource_next_action_end =
resource->common_private->share_resources(NOW);
DEBUG2("Resource [%s] : next action end = %f",resource->common_public->name,