X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4340c977641036e7aa8ae5dcb69ccb3cac1df3c5..30e424f828536f2e59c0175b482e6e5480fe7fdd:/src/mc/mc_liveness.h diff --git a/src/mc/mc_liveness.h b/src/mc/mc_liveness.h index 57f77f74d9..0b5b2daa08 100644 --- a/src/mc/mc_liveness.h +++ b/src/mc/mc_liveness.h @@ -1,4 +1,4 @@ -/* 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 @@ -10,53 +10,66 @@ #include #include +#include #include #include #include -#include "mc_state.h" +#include +#include "src/mc/mc_state.h" SG_BEGIN_DECL() -extern XBT_INTERNAL xbt_automaton_t _mc_property_automaton; - -typedef struct s_mc_pair{ - int num; - int search_cycle; - mc_state_t graph_state; /* System state included */ - xbt_automaton_state_t automaton_state; - xbt_dynar_t atomic_propositions; - int requests; - int depth; - int exploration_started; - int visited_pair_removed; -} s_mc_pair_t, *mc_pair_t; - -typedef struct s_mc_visited_pair{ - int num; - int other_num; /* Dot output for */ - int acceptance_pair; - mc_state_t graph_state; /* System state included */ - xbt_automaton_state_t automaton_state; - xbt_dynar_t atomic_propositions; - size_t heap_bytes_used; - int nb_processes; - int acceptance_removed; - int visited_removed; -} s_mc_visited_pair_t, *mc_visited_pair_t; - -XBT_INTERNAL mc_pair_t MC_pair_new(void); -XBT_INTERNAL void MC_pair_delete(mc_pair_t); -XBT_INTERNAL void mc_pair_free_voidp(void *p); -XBT_INTERNAL mc_visited_pair_t MC_visited_pair_new(int pair_num, xbt_automaton_state_t automaton_state, xbt_dynar_t atomic_propositions, mc_state_t graph_state); -XBT_INTERNAL void MC_visited_pair_delete(mc_visited_pair_t p); - -void MC_modelcheck_liveness(void); -XBT_INTERNAL void MC_show_stack_liveness(xbt_fifo_t stack); -XBT_INTERNAL void MC_dump_stack_liveness(xbt_fifo_t stack); - -XBT_INTERNAL extern xbt_dynar_t visited_pairs; -XBT_INTERNAL int is_visited_pair(mc_visited_pair_t visited_pair, mc_pair_t pair); - SG_END_DECL() +namespace simgrid { +namespace mc { + +extern XBT_PRIVATE xbt_automaton_t property_automaton; + +struct XBT_PRIVATE Pair { + int num = 0; + int search_cycle = 0; + mc_state_t graph_state = nullptr; /* System state included */ + xbt_automaton_state_t automaton_state = nullptr; + simgrid::xbt::unique_ptr atomic_propositions; + int requests = 0; + int depth = 0; + int exploration_started = 0; + int visited_pair_removed = 0; + + Pair(); + ~Pair(); + + Pair(Pair const&) = delete; + Pair& operator=(Pair const&) = delete; +}; + +struct XBT_PRIVATE VisitedPair { + int num = 0; + int other_num = 0; /* Dot output for */ + int acceptance_pair = 0; + mc_state_t graph_state = nullptr; /* System state included */ + xbt_automaton_state_t automaton_state = nullptr; + simgrid::xbt::unique_ptr atomic_propositions; + size_t heap_bytes_used = 0; + int nb_processes = 0; + int acceptance_removed = 0; + int visited_removed = 0; + + VisitedPair(int pair_num, xbt_automaton_state_t automaton_state, xbt_dynar_t atomic_propositions, mc_state_t graph_state); + ~VisitedPair(); +}; + +int modelcheck_liveness(void); +XBT_PRIVATE void show_stack_liveness(xbt_fifo_t stack); +XBT_PRIVATE void dump_stack_liveness(xbt_fifo_t stack); + +XBT_PRIVATE extern xbt_dynar_t visited_pairs; +XBT_PRIVATE int is_visited_pair(simgrid::mc::VisitedPair* visited_pair, simgrid::mc::Pair* pair); + +XBT_PRIVATE int snapshot_compare(simgrid::mc::VisitedPair* state1, simgrid::mc::VisitedPair* state2); + +} +} + #endif