Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : new surf configuration mc-checkpoint
[simgrid.git] / src / surf / surf_config.c
index e2cbb45..28f00ec 100644 (file)
@@ -10,7 +10,8 @@
 #include "xbt/log.h"
 #include "xbt/str.h"
 #include "surf/surf_private.h"
-#include "surf/surf_routing.h" /* COORD_HOST_LEVEL and COORD_ASR_LEVEL */
+#include "surf/surf_routing.h"  /* COORD_HOST_LEVEL and COORD_ASR_LEVEL */
+#include "simgrid/simix.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_config, surf,
                                 "About the configuration of surf (and the rest of the simulation)");
@@ -37,6 +38,9 @@ static void surf_config_cmd_line(int *argc, char **argv)
       xbt_cfg_help(_surf_cfg_set);
       printf(
 "\n"
+"Each of these configurations can be used by adding\n"
+"    --cfg=<option name>:<option value>\n"
+"to the command line.\n"
 "You can also use --help-models to see the details of all models known by this simulator.\n"
 #ifdef HAVE_TRACING
 "\n"
@@ -233,6 +237,14 @@ static void _surf_cfg_cb_model_check(const char *name, int pos)
   }
 }
 
+extern int _surf_do_mc_checkpoint;   /* this variable lives in xbt_main until I find a right location for it */
+
+static void _surf_cfg_cb_mc_checkpoint(const char *name, int pos)
+{
+  _surf_do_mc_checkpoint = xbt_cfg_get_int(_surf_cfg_set, name);
+
+}
+
 extern int _surf_do_verbose_exit;
 
 static void _surf_cfg_cb_verbose_exit(const char *name, int pos)
@@ -480,6 +492,14 @@ void surf_config_init(int *argc, char **argv)
        _surf_cfg_cb_model_check which sets it's value to 1 (instead of the default value 0)
        xbt_cfg_set_int(_surf_cfg_set, "model-check", default_value_int); */
 
+
+    /* do stateful model-check */
+    default_value_int = 0;
+    xbt_cfg_register(&_surf_cfg_set, "mc-checkpoint",
+                     "Activate the stateful model-checking of the \"simulated\" system (EXPERIMENTAL -- msg only for now), value corresponding to steps between each checkpoint",
+                     xbt_cfgelm_int, &default_value_int, 0, 1,
+                     _surf_cfg_cb_mc_checkpoint, NULL);
+    
     /* do verbose-exit */
     default_value_int = 1;
     xbt_cfg_register(&_surf_cfg_set, "verbose-exit",
@@ -591,7 +611,7 @@ void surf_config_init(int *argc, char **argv)
     //Default value have to be "threshold0:value0;threshold1:value1;...;thresholdN:valueN"
     //test is if( size >= thresholdN ) return valueN;
     //Values can be modified with command line --cfg=smpi/bw_factor:"threshold0:value0;threshold1:value1;...;thresholdN:valueN"
-    // or with tag config put line <prop id="smpi/bw_factor" value="threshold0:value0;threshold1:value1;...;thresholdN:valueN"></prop>
+    //  or with tag config put line <prop id="smpi/bw_factor" value="threshold0:value0;threshold1:value1;...;thresholdN:valueN"></prop>
     xbt_cfg_register(&_surf_cfg_set, "smpi/bw_factor",
                      "Bandwidth factors for smpi.",
                      xbt_cfgelm_string, NULL, 1, 1, NULL,
@@ -654,14 +674,14 @@ void surf_config_models_setup()
    */
 
   if((!xbt_cfg_is_default_value(_surf_cfg_set, "network/model") ||
-         !xbt_cfg_is_default_value(_surf_cfg_set, "cpu/model")) &&
-         xbt_cfg_is_default_value(_surf_cfg_set, "workstation/model"))
+    !xbt_cfg_is_default_value(_surf_cfg_set, "cpu/model")) &&
+    xbt_cfg_is_default_value(_surf_cfg_set, "workstation/model"))
   {
-           const char *val = "compound";
-           XBT_INFO
-               ("Switching workstation model to compound since you changed the network and/or cpu model(s)");
-           xbt_cfg_set_string(_surf_cfg_set, "workstation/model", val);
-           workstation_model_name = (char *) "compound";
+      const char *val = "compound";
+      XBT_INFO
+          ("Switching workstation model to compound since you changed the network and/or cpu model(s)");
+      xbt_cfg_set_string(_surf_cfg_set, "workstation/model", val);
+      workstation_model_name = (char *) "compound";
   }
 
   XBT_DEBUG("Workstation model: %s", workstation_model_name);