Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branches 'mc'
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 25 Feb 2014 11:47:47 +0000 (12:47 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 25 Feb 2014 11:47:47 +0000 (12:47 +0100)
1  2 
src/mc/mc_global.c

diff --combined src/mc/mc_global.c
@@@ -34,8 -34,6 +34,8 @@@ int _sg_mc_hash=0
  int _sg_mc_max_depth=1000;
  int _sg_mc_visited=0;
  char *_sg_mc_dot_output_file = NULL;
 +int _sg_mc_comms_determinism=0;
 +int _sg_mc_send_determinism=0;
  
  int user_max_depth_reached = 0;
  
@@@ -101,20 -99,6 +101,20 @@@ void _mc_cfg_cb_dot_output(const char *
    _sg_mc_dot_output_file= xbt_cfg_get_string(_sg_cfg_set, name);
  }
  
 +void _mc_cfg_cb_comms_determinism(const char *name, int pos) {
 +  if (_sg_cfg_init_status && !_sg_do_model_check) {
 +    xbt_die("You are specifying a value to enable/disable the detection of determinism in the communications schemes after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry.");
 +  }
 +  _sg_mc_comms_determinism= xbt_cfg_get_boolean(_sg_cfg_set, name);
 +}
 +
 +void _mc_cfg_cb_send_determinism(const char *name, int pos) {
 +  if (_sg_cfg_init_status && !_sg_do_model_check) {
 +    xbt_die("You are specifying a value to enable/disable the detection of send-determinism in the communications schemes after the initialization (through MSG_config?), but model-checking was not activated at config time (through --cfg=model-check:1). This won't work, sorry.");
 +  }
 +  _sg_mc_send_determinism= xbt_cfg_get_boolean(_sg_cfg_set, name);
 +}
 +
  /* MC global data structures */
  mc_state_t mc_current_state = NULL;
  char mc_replay_mode = FALSE;
@@@ -970,12 -954,14 +970,14 @@@ void MC_init()
    MC_ignore_local_variable("_throw_ctx", "*");
    MC_ignore_local_variable("ctx", "*");
  
+   MC_ignore_local_variable("self", "simcall_BODY_mc_snapshot");
    MC_ignore_local_variable("next_context", "smx_ctx_sysv_suspend_serial");
    MC_ignore_local_variable("i", "smx_ctx_sysv_suspend_serial");
  
    /* Ignore local variable about time used for tracing */
    MC_ignore_local_variable("start_time", "*"); 
  
+   MC_ignore_global_variable("compared_pointers");
    MC_ignore_global_variable("mc_comp_times");
    MC_ignore_global_variable("mc_snapshot_comparison_time"); 
    MC_ignore_global_variable("mc_time");
@@@ -1255,8 -1241,7 +1257,8 @@@ void MC_replay(xbt_fifo_t stack, int st
        xbt_free(key);
      }
    }
 -  xbt_dynar_reset(communications_pattern);
 +  if(_sg_mc_comms_determinism || _sg_mc_send_determinism)
 +    xbt_dynar_reset(communications_pattern);
    MC_UNSET_RAW_MEM;
    
  
        }
      }
  
 -    if(req->call == SIMCALL_COMM_ISEND)
 -      comm_pattern = 1;
 -    else if(req->call == SIMCALL_COMM_IRECV)
 +    if(_sg_mc_comms_determinism || _sg_mc_send_determinism){
 +      if(req->call == SIMCALL_COMM_ISEND)
 +        comm_pattern = 1;
 +      else if(req->call == SIMCALL_COMM_IRECV)
        comm_pattern = 2;
 -    
 +    }
 +
      SIMIX_simcall_pre(req, value);
  
 -    MC_SET_RAW_MEM;
 -    if(comm_pattern != 0){
 -      get_comm_pattern(communications_pattern, req, comm_pattern);
 +    if(_sg_mc_comms_determinism || _sg_mc_send_determinism){
 +      MC_SET_RAW_MEM;
 +      if(comm_pattern != 0){
 +        get_comm_pattern(communications_pattern, req, comm_pattern);
 +      }
 +      MC_UNSET_RAW_MEM;
 +      comm_pattern = 0;
      }
 -    MC_UNSET_RAW_MEM;
 -
 -    comm_pattern = 0;
      
      MC_wait_for_requests();
  
@@@ -1586,10 -1568,8 +1588,10 @@@ void MC_print_statistics(mc_stats_t sta
      fclose(dot_output);
    }
    if(initial_state_safety != NULL){
 -    // XBT_INFO("Communication-deterministic : %s", !initial_state_safety->comm_deterministic ? "No" : "Yes");
 -    // XBT_INFO("Send-deterministic : %s", !initial_state_safety->send_deterministic ? "No" : "Yes");
 +    if(_sg_mc_comms_determinism)
 +      XBT_INFO("Communication-deterministic : %s", !initial_state_safety->comm_deterministic ? "No" : "Yes");
 +    if (_sg_mc_send_determinism)
 +      XBT_INFO("Send-deterministic : %s", !initial_state_safety->send_deterministic ? "No" : "Yes");
    }
    MC_UNSET_RAW_MEM;
  }