X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4365fa8e81736673eae923310a05cdbf78ec88d8..443652142305f56d1e13e904ba74d04b9cfeb3da:/src/simgrid/sg_config.c diff --git a/src/simgrid/sg_config.c b/src/simgrid/sg_config.c index 8ab8535a10..a36c0a2f3b 100644 --- a/src/simgrid/sg_config.c +++ b/src/simgrid/sg_config.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2010, 2012-2014. The SimGrid Team. +/* Copyright (c) 2009-2010, 2012-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -18,14 +18,16 @@ #include "instr/instr_interface.h" #include "simgrid/simix.h" #include "simgrid/sg_config.h" +#ifdef HAVE_SMPI #include "smpi/smpi_interface.h" +#endif #include "mc/mc.h" -#include "mc/mc_record.h" +#include "src/mc/mc_record.h" #include "simgrid/instr.h" -#include "mc/mc_replay.h" +#include "src/mc/mc_replay.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_config, surf, - "About the configuration of simgrid"); + "About the configuration of SimGrid"); xbt_cfg_t _sg_cfg_set = NULL; @@ -365,39 +367,22 @@ static void _sg_cfg_cb__surf_path(const char *name, int pos) } /* callback to decide if we want to use the model-checking */ -#include "xbt_modinter.h" +#include "src/xbt_modinter.h" #ifdef HAVE_MC extern int _sg_do_model_check; /* this variable lives in xbt_main until I find a right location for it */ extern int _sg_do_model_check_record; #endif -static void _sg_cfg_cb_model_check_replay(const char *name, int pos) -{ +static void _sg_cfg_cb_model_check_replay(const char *name, int pos) { MC_record_path = xbt_cfg_get_string(_sg_cfg_set, name); } -static void _sg_cfg_cb_model_check(const char *name, int pos) -{ -#ifdef HAVE_MC - _sg_do_model_check = xbt_cfg_get_boolean(_sg_cfg_set, name); -#else - if (xbt_cfg_get_boolean(_sg_cfg_set, name)) { - xbt_die("You tried to activate the model-checking from the command line, but it was not compiled in. Change your settings in cmake, recompile and try again"); - } -#endif -} - -static void _sg_cfg_cb_model_check_record(const char *name, int pos) -{ #ifdef HAVE_MC +static void _sg_cfg_cb_model_check_record(const char *name, int pos) { _sg_do_model_check_record = xbt_cfg_get_boolean(_sg_cfg_set, name); -#else - if (xbt_cfg_get_boolean(_sg_cfg_set, name)) { - xbt_die("You tried to activate the model-checking record from the command line, but it was not compiled in. Change your settings in cmake, recompile and try again"); - } -#endif } +#endif extern int _sg_do_verbose_exit; @@ -461,14 +446,16 @@ static void _sg_cfg_cb_contexts_parallel_mode(const char *name, int pos) static void _sg_cfg_cb__surf_network_coordinates(const char *name, int pos) { + static int already_set = 0; int val = xbt_cfg_get_boolean(_sg_cfg_set, name); if (val) { - if (!COORD_HOST_LEVEL) { - COORD_HOST_LEVEL = xbt_lib_add_level(host_lib,xbt_dynar_free_voidp); + if (!already_set) { + COORD_HOST_LEVEL = sg_host_extension_create(xbt_dynar_free_voidp); COORD_ASR_LEVEL = xbt_lib_add_level(as_router_lib,xbt_dynar_free_voidp); } + already_set = 1; } else - if (COORD_HOST_LEVEL) + if (already_set) xbt_die("Setting of whether to use coordinate cannot be disabled once set."); } @@ -478,18 +465,6 @@ static void _sg_cfg_cb__surf_network_crosstraffic(const char *name, sg_network_crosstraffic = xbt_cfg_get_boolean(_sg_cfg_set, name); } -#ifdef HAVE_GTNETS -static void _sg_cfg_cb__gtnets_jitter(const char *name, int pos) -{ - sg_gtnets_jitter = xbt_cfg_get_double(_sg_cfg_set, name); -} - -static void _sg_cfg_cb__gtnets_jitter_seed(const char *name, int pos) -{ - sg_gtnets_jitter_seed = xbt_cfg_get_int(_sg_cfg_set, name); -} -#endif - /* build description line with possible values */ static void describe_model(char *result, const s_surf_model_description_t model_description[], @@ -619,18 +594,12 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "network/maxmin_selective_update", "no"); - /* Replay (this part is enabled event if MC it disabled) */ + /* Replay (this part is enabled even if MC it disabled) */ xbt_cfg_register(&_sg_cfg_set, "model-check/replay", "Uenable replay mode with the given path", xbt_cfgelm_string, 0, 1, _sg_cfg_cb_model_check_replay, NULL); #ifdef HAVE_MC - /* do model-checking */ - xbt_cfg_register(&_sg_cfg_set, "model-check", - "Verify the system through model-checking instead of simulating it (EXPERIMENTAL)", - xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb_model_check, NULL); - xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check", "no"); - /* do model-checking-record */ xbt_cfg_register(&_sg_cfg_set, "model-check/record", "Record the model-checking paths", @@ -650,6 +619,17 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_sparse_checkpoint, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/sparse-checkpoint", "no"); + /* do stateful model-checking */ + xbt_cfg_register(&_sg_cfg_set, "model-check/soft-dirty", + "Use sparse per-page snapshots.", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_soft_dirty, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/soft-dirty", "no"); + + xbt_cfg_register(&_sg_cfg_set, "model-check/ksm", + "Kernel same-page merging", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_ksm, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/ksm", "no"); + /* do liveness model-checking */ xbt_cfg_register(&_sg_cfg_set, "model-check/property", "Specify the name of the file containing the property. It must be the result of the ltl2ba program.", @@ -797,17 +777,6 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb__surf_network_crosstraffic, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "network/crosstraffic", "no"); -#ifdef HAVE_GTNETS - xbt_cfg_register(&_sg_cfg_set, "gtnets/jitter", - "Double value to oscillate the link latency, uniformly in random interval [-latency*gtnets_jitter,latency*gtnets_jitter)", - xbt_cfgelm_double, 1, 1, _sg_cfg_cb__gtnets_jitter, NULL); - xbt_cfg_setdefault_double(_sg_cfg_set, "gtnets/jitter", 0.0); - - xbt_cfg_register(&_sg_cfg_set, "gtnets/jitter_seed", - "Use a positive seed to reproduce jitted results, value must be in [1,1e8], default is 10", - xbt_cfgelm_int, 0, 1, _sg_cfg_cb__gtnets_jitter_seed, NULL); - xbt_cfg_setdefault_int(_sg_cfg_set, "gtnets/jitter_seed", 10); -#endif #ifdef HAVE_NS3 xbt_cfg_register(&_sg_cfg_set, "ns3/TcpModel", "The ns3 tcp model can be : NewReno or Reno or Tahoe", @@ -862,10 +831,10 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_double, 1, 1, NULL, NULL); xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/cpu_threshold", 1e-6); - xbt_cfg_register(&_sg_cfg_set, "smpi/async_small_thres", + xbt_cfg_register(&_sg_cfg_set, "smpi/async_small_thresh", "Maximal size of messages that are to be sent asynchronously, without waiting for the receiver", xbt_cfgelm_int, 1, 1, NULL, NULL); - xbt_cfg_setdefault_int(_sg_cfg_set, "smpi/async_small_thres", 0); + xbt_cfg_setdefault_int(_sg_cfg_set, "smpi/async_small_thresh", 0); xbt_cfg_register(&_sg_cfg_set, "smpi/send_is_detached_thres", "Threshold of message size where MPI_Send stops behaving like MPI_Isend and becomes MPI_Ssend",