X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4afde5a12341a68569e8c15d06a799d3b26338e9..30e424f828536f2e59c0175b482e6e5480fe7fdd:/src/mc/mc_safety.h diff --git a/src/mc/mc_safety.h b/src/mc/mc_safety.h index 0c82769f2c..0bbe379011 100644 --- a/src/mc/mc_safety.h +++ b/src/mc/mc_safety.h @@ -1,44 +1,52 @@ -/* Copyright (c) 2007-2014. The SimGrid Team. +/* Copyright (c) 2007-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#ifndef MC_SAFETY_H -#define MC_SAFETY_H +#ifndef SIMGRID_MC_SAFETY_H +#define SIMGRID_MC_SAFETY_H #include +#include +#include + #include -#include -#include "mc_forward.h" -#include "mc_state.h" -SG_BEGIN_DECL() +#include +#include + +#include "src/mc/mc_forward.hpp" +#include "src/mc/mc_state.h" + +namespace simgrid { +namespace mc { -typedef enum { - e_mc_reduce_unset, - e_mc_reduce_none, - e_mc_reduce_dpor -} e_mc_reduce_t; +enum class ReductionMode { + unset, + none, + dpor, +}; -extern e_mc_reduce_t mc_reduce_kind; +extern XBT_PRIVATE simgrid::mc::ReductionMode reduction_mode; -void MC_modelcheck_safety(void); +struct XBT_PRIVATE VisitedState { + simgrid::mc::Snapshot* system_state = nullptr; + size_t heap_bytes_used = 0; + int nb_processes = 0; + int num = 0; + int other_num = 0; // dot_output for -typedef struct s_mc_visited_state{ - mc_snapshot_t system_state; - size_t heap_bytes_used; - int nb_processes; - int num; - int other_num; // dot_output for -}s_mc_visited_state_t, *mc_visited_state_t; + VisitedState(); + ~VisitedState(); +}; -extern xbt_dynar_t visited_states; -mc_visited_state_t is_visited_state(mc_state_t graph_state); -void visited_state_free(mc_visited_state_t state); -void visited_state_free_voidp(void *s); +extern XBT_PRIVATE std::vector> visited_states; +XBT_PRIVATE std::unique_ptr is_visited_state(mc_state_t graph_state); +XBT_PRIVATE int snapshot_compare(simgrid::mc::VisitedState* state1, simgrid::mc::VisitedState* state2); -SG_END_DECL() +} +} #endif