Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
bring new network models to end users
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 1 Aug 2007 00:53:29 +0000 (00:53 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 1 Aug 2007 00:53:29 +0000 (00:53 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3925 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/simix/smx_config.c
src/simix/smx_environment.c

index aab10e1..6043e65 100644 (file)
@@ -26,11 +26,41 @@ static void _simix_cfg_cb__workstation_model(const char *name, int pos)
   /* New Module missing */
   xbt_assert1(!strcmp(val, "CLM03") ||
               !strcmp(val, "KCCFLN05") ||
   /* New Module missing */
   xbt_assert1(!strcmp(val, "CLM03") ||
               !strcmp(val, "KCCFLN05") ||
-             !strcmp(val, "KCCFLN05_proportional") ||
-             !strcmp(val, "KCCFLN05_Vegas") ||
-             !strcmp(val, "KCCFLN05_Reno") ||
-              !strcmp(val, "GTNETS"),
-              "Unknown workstation model: %s (choices are: 'CLM03', 'KCCFLN05', 'KCCFLN05_proportional', 'KCCFLN05_Vegas', 'KCCFLN05_Reno' and 'GTNETS'",val);
+             !strcmp(val, "SDP") ||
+             !strcmp(val, "Vegas") ||
+             !strcmp(val, "Reno") ||
+             !strcmp(val, "GTNets") ||
+             !strcmp(val, "compound"),
+              "Unknown workstation model: %s (choices are: 'CLM03', 'KCCFLN05', 'SDP', 'Vegas', 'Reno', 'GTNets' and 'Compound'",val);
+}
+
+/* callback of the cpu_model variable */
+static void _simix_cfg_cb__cpu_model(const char *name, int pos) 
+{
+  char *val;
+
+  xbt_assert0(_simix_init_status<2, "Cannot change the model after the initialization");
+  
+  val = xbt_cfg_get_string (_simix_cfg_set, name);
+  /* New Module missing */
+  xbt_assert1(!strcmp(val, "Cas01"),
+              "Unknown CPU model: %s (choices are: 'Cas01'",val);
+}
+/* callback of the workstation_model variable */
+static void _simix_cfg_cb__network_model(const char *name, int pos) 
+{
+  char *val;
+
+  xbt_assert0(_simix_init_status<2, "Cannot change the model after the initialization");
+  
+  val = xbt_cfg_get_string (_simix_cfg_set, name);
+  /* New Module missing */
+  xbt_assert1(!strcmp(val, "CM02") ||
+              !strcmp(val, "GTNets") ||
+             !strcmp(val, "SDP") ||
+             !strcmp(val, "Vegas") ||
+             !strcmp(val, "Reno"),
+              "Unknown workstation model: %s (choices are: 'CM02', 'GTNets', 'SDP', 'Vegas' and 'Reno'",val);
 }
 
 /* create the config set and register what should be */
 }
 
 /* create the config set and register what should be */
@@ -46,7 +76,14 @@ void simix_config_init(void)
   xbt_cfg_register (_simix_cfg_set, 
                     "workstation_model", xbt_cfgelm_string, 1,1,
                     &_simix_cfg_cb__workstation_model,NULL);
   xbt_cfg_register (_simix_cfg_set, 
                     "workstation_model", xbt_cfgelm_string, 1,1,
                     &_simix_cfg_cb__workstation_model,NULL);
-                    
+
+  xbt_cfg_register (_simix_cfg_set, 
+                    "cpu_model", xbt_cfgelm_string, 1,1,
+                    &_simix_cfg_cb__cpu_model,NULL); 
+  xbt_cfg_register (_simix_cfg_set, 
+                    "network_model", xbt_cfgelm_string, 1,1,
+                    &_simix_cfg_cb__network_model,NULL);
+                   
   xbt_cfg_set_string(_simix_cfg_set,"workstation_model", "KCCFLN05");
 }
 
   xbt_cfg_set_string(_simix_cfg_set,"workstation_model", "KCCFLN05");
 }
 
index 0cd11b0..b80f238 100644 (file)
@@ -45,16 +45,48 @@ void SIMIX_create_environment(const char *file)
   DEBUG1("Model : %s", workstation_model_name);
   if (!strcmp(workstation_model_name,"KCCFLN05")) {
     surf_workstation_resource_init_KCCFLN05(file);
   DEBUG1("Model : %s", workstation_model_name);
   if (!strcmp(workstation_model_name,"KCCFLN05")) {
     surf_workstation_resource_init_KCCFLN05(file);
-  } else if (!strcmp(workstation_model_name,"KCCFLN05_proportional")) {
+#ifdef HAVE_SDP
+  } else if (!strcmp(workstation_model_name,"SDP")) {
     surf_workstation_resource_init_KCCFLN05_proportional(file);
     surf_workstation_resource_init_KCCFLN05_proportional(file);
-  } else if (!strcmp(workstation_model_name,"KCCFLN05_Vegas")) {
+#endif
+  } else if (!strcmp(workstation_model_name,"Vegas")) {
     surf_workstation_resource_init_KCCFLN05_Vegas(file);
     surf_workstation_resource_init_KCCFLN05_Vegas(file);
-  } else if (!strcmp(workstation_model_name,"KCCFLN05_Reno")) {
+  } else if (!strcmp(workstation_model_name,"Reno")) {
     surf_workstation_resource_init_KCCFLN05_Reno(file);
   } else if (!strcmp(workstation_model_name,"CLM03")) {
     surf_workstation_resource_init_CLM03(file);
     surf_workstation_resource_init_KCCFLN05_Reno(file);
   } else if (!strcmp(workstation_model_name,"CLM03")) {
     surf_workstation_resource_init_CLM03(file);
+#ifdef HAVE_GTNETS
+  } else if (!strcmp(workstation_model_name,"GTNets")) {
+    surf_workstation_resource_init_GTNETS(file);
+#endif
+  } else if (!strcmp(workstation_model_name,"compound")) {
+    char *network_model_name = xbt_cfg_get_string (_simix_cfg_set, "network_model");
+    char *cpu_model_name = xbt_cfg_get_string (_simix_cfg_set, "cpu_model");
+    
+    if(!strcmp(cpu_model_name,"Cas01")) {
+      surf_cpu_resource_init_Cas01(file);
+    } else DIE_IMPOSSIBLE;
+
+    if(!strcmp(network_model_name,"CM02")) {
+      surf_network_resource_init_CM02(file);
+#ifdef HAVE_GTNETS
+    } else if(!strcmp(network_model_name,"GTNets")) {
+      surf_network_resource_init_GTNETS(file);
+#endif
+    } else if(!strcmp(network_model_name,"Reno")) {
+      surf_network_resource_init_Reno(file);
+    } else if(!strcmp(network_model_name,"Vegas")) {
+      surf_network_resource_init_Vegas(file);
+#ifdef HAVE_SDP
+    } else if(!strcmp(network_model_name,"SDP")) {
+      surf_network_resource_init_SDP(file);
+#endif
+    } else
+      DIE_IMPOSSIBLE;
+    
+    surf_workstation_resource_init_compound(file);
   } else {
   } else {
-    xbt_assert0(0,"The impossible happened (once again)");
+    DIE_IMPOSSIBLE;
   }
   _simix_init_status = 2; /* inited; don't change settings now */
 
   }
   _simix_init_status = 2; /* inited; don't change settings now */