CBMC
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
memory_model_sct Class Reference

#include <memory_model_sc.h>

+ Inheritance diagram for memory_model_sct:
+ Collaboration diagram for memory_model_sct:

Public Member Functions

 
 
- Public Member Functions inherited from memory_model_baset
 
 
- Public Member Functions inherited from partial_order_concurrencyt
 
 

Protected Member Functions

 
 
 
 
 
 
 
- Protected Member Functions inherited from memory_model_baset
  In-thread program order.
 
symbol_exprt  nondet_bool_symbol (const std::string &prefix)
 
  For each read r from every address we collect the choice symbols S via register_read_from_choice_symbol (for potential read-write pairs) and add a constraint r.guard => \/S.
 
  Introduce a new choice symbol s for the pair (r, w) add constraint s => (w.guard /\ r.lhs=w.lhs) add constraint s => before(w,r) [if w is from another thread].
 
- Protected Member Functions inherited from partial_order_concurrencyt
  First call add_init_writes then for each shared read/write (or spawn) populate: 1) the address_map (with a list of reads/writes for the address of each event) 2) the numbering map (with per-thread unique number of every event)
 
  For each shared read event and for each shared write event that appears after spawn or has false guard prepend a shared write SSA step with non-deterministic value.
 
  Produce an address ID for an event.
 
  Produce a clock symbol for some event.
 
  Initialize the clock_type so that it can be used to number events.
 
  Simplify and add a constraint to equation.
 
  Build the partial order constraint for two events: if e1 and e2 are in the same atomic section then constrain with equality between their clocks otherwise constrain with e1 clock being less than e2 clock.
 

Additional Inherited Members

- Public Types inherited from partial_order_concurrencyt
 
 
 
typedef eventst::const_iterator  event_it
 
- Static Public Member Functions inherited from partial_order_concurrencyt
  Build identifier for the read/write clock variable.
 
- Protected Types inherited from memory_model_baset
typedef std::map< std::pair< event_it, event_it >, symbol_exprtchoice_symbolst
 
 
- Protected Types inherited from partial_order_concurrencyt
typedef std::vector< event_itevent_listt
 
 
 
- Static Protected Member Functions inherited from partial_order_concurrencyt
  Produce the symbol ID for an event.
 
- Protected Attributes inherited from memory_model_baset
 
 
- Protected Attributes inherited from partial_order_concurrencyt
 
 
 
 

Detailed Description

Definition at line 17 of file memory_model_sc.h.

Constructor & Destructor Documentation

◆  memory_model_sct()

memory_model_sct::memory_model_sct ( const namespacet_ns )
inlineexplicit

Definition at line 20 of file memory_model_sc.h.

Member Function Documentation

◆  before()

exprt memory_model_sct::before ( event_it  e1,
event_it  e2 
)
protectedvirtual

Implements partial_order_concurrencyt.

Reimplemented in memory_model_tsot.

Definition at line 31 of file memory_model_sc.cpp.

◆  build_per_thread_map()

void memory_model_sct::build_per_thread_map ( const symex_target_equationtequation,
per_thread_maptdest 
) const
protected

Definition at line 47 of file memory_model_sc.cpp.

◆  from_read()

void memory_model_sct::from_read ( symex_target_equationtequation )
protected

Definition at line 250 of file memory_model_sc.cpp.

◆  operator()()

void memory_model_sct::operator() ( symex_target_equationtequation,
message_handlertmessage_handler 
)
virtual

Implements memory_model_baset.

Reimplemented in memory_model_psot, and memory_model_tsot.

Definition at line 16 of file memory_model_sc.cpp.

◆  program_order()

void memory_model_sct::program_order ( symex_target_equationtequation )
protected

Definition at line 151 of file memory_model_sc.cpp.

◆  program_order_is_relaxed()

bool memory_model_sct::program_order_is_relaxed ( partial_order_concurrencyt::event_it  e1,
) const
protectedvirtual

Reimplemented in memory_model_psot, and memory_model_tsot.

Definition at line 37 of file memory_model_sc.cpp.

◆  thread_spawn()

void memory_model_sct::thread_spawn ( symex_target_equationtequation,
const per_thread_maptper_thread_map 
)
protected

Definition at line 68 of file memory_model_sc.cpp.

◆  write_serialization_external()

void memory_model_sct::write_serialization_external ( symex_target_equationtequation )
protected

Definition at line 198 of file memory_model_sc.cpp.


The documentation for this class was generated from the following files:

AltStyle によって変換されたページ (->オリジナル) /