CBMC
memory_model_sc.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Memory models for partial order concurrency
4 
5 Author: Michael Tautschnig, michael.tautschnig@cs.ox.ac.uk
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_GOTO_SYMEX_MEMORY_MODEL_SC_H
13 #define CPROVER_GOTO_SYMEX_MEMORY_MODEL_SC_H
14 
15 #include "memory_model.h"
16 
18 {
19 public:
20  explicit memory_model_sct(const namespacet &_ns):
22  {
23  }
24 
25  virtual void operator()(symex_target_equationt &equation, message_handlert &);
26 
27 protected:
28  virtual exprt before(event_it e1, event_it e2);
29  virtual bool program_order_is_relaxed(
32 
34  const symex_target_equationt &equation,
35  per_thread_mapt &dest) const;
36  void thread_spawn(
37  symex_target_equationt &equation,
38  const per_thread_mapt &per_thread_map);
39  void program_order(symex_target_equationt &equation);
40  void from_read(symex_target_equationt &equation);
42 };
43 
44 #endif // CPROVER_GOTO_SYMEX_MEMORY_MODEL_SC_H
partial_order_concurrencyt::event_it
eventst::const_iterator event_it
Definition: partial_order_concurrency.h:28
exprt
Base class for all expressions.
Definition: expr.h:55
memory_model_sct::program_order
void program_order(symex_target_equationt &equation)
Definition: memory_model_sc.cpp:151
memory_model_baset::per_thread_mapt
std::map< unsigned, event_listt > per_thread_mapt
Definition: memory_model.h:60
memory_model_sct::write_serialization_external
void write_serialization_external(symex_target_equationt &equation)
Definition: memory_model_sc.cpp:198
memory_model_sct::from_read
void from_read(symex_target_equationt &equation)
Definition: memory_model_sc.cpp:250
memory_model_baset
Definition: memory_model.h:17
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:90
memory_model_sct::before
virtual exprt before(event_it e1, event_it e2)
Definition: memory_model_sc.cpp:31
memory_model_sct::memory_model_sct
memory_model_sct(const namespacet &_ns)
Definition: memory_model_sc.h:20
message_handlert
Definition: message.h:27
symex_target_equationt
Inheriting the interface of symex_targett this class represents the SSA form of the input program as ...
Definition: symex_target_equation.h:33
memory_model_sct
Definition: memory_model_sc.h:17
memory_model_sct::operator()
virtual void operator()(symex_target_equationt &equation, message_handlert &)
Definition: memory_model_sc.cpp:17
memory_model_sct::thread_spawn
void thread_spawn(symex_target_equationt &equation, const per_thread_mapt &per_thread_map)
Definition: memory_model_sc.cpp:68
memory_model.h
memory_model_sct::program_order_is_relaxed
virtual bool program_order_is_relaxed(partial_order_concurrencyt::event_it e1, partial_order_concurrencyt::event_it e2) const
Definition: memory_model_sc.cpp:37
memory_model_sct::build_per_thread_map
void build_per_thread_map(const symex_target_equationt &equation, per_thread_mapt &dest) const
Definition: memory_model_sc.cpp:47