|
| EvtStateCats (mc::cats::ExecWitness *ew, mc::cats::Architecture *arch) |
|
void | Reset () |
|
bool | Exhausted () const |
|
template<std::size_t max_size_bytes, class Func > |
EventPtrs< max_size_bytes > | MakeEvent (types::Pid pid, mc::Event::Type type, std::size_t size, Func mkevt) |
|
mc::Event | MakeOther (types::Pid pid, mc::Event::Type type, types::Addr addr) |
|
template<std::size_t max_size_bytes = sizeof(types::WriteID)> |
EventPtrs< max_size_bytes > | MakeRead (types::Pid pid, mc::Event::Type type, types::Addr addr, std::size_t size=max_size_bytes) |
|
template<std::size_t max_size_bytes = sizeof(types::WriteID)> |
EventPtrs< max_size_bytes > | MakeWrite (types::Pid pid, mc::Event::Type type, types::Addr addr, types::WriteID *data, std::size_t size=max_size_bytes) |
|
template<std::size_t max_size_bytes = sizeof(types::WriteID)> |
EventPtrs< max_size_bytes > | GetWrite (const EventPtrs< max_size_bytes > &after, types::Addr addr, const types::WriteID *from_id, std::size_t size=max_size_bytes) |
|
mc::cats::ExecWitness * | ew () |
|
const mc::cats::ExecWitness * | ew () const |
|
mc::cats::Architecture * | arch () |
|
const mc::cats::Architecture * | arch () const |
|
void | set_addr_mask (types::Addr val) |
|
types::Addr | addr_mask () const |
|
Interface to memconsistency::cats data structures.
This class serves as a helper to interface with data structures in memconsistency::cats. Its primary function is the creation of new events by Operations.
Furthermore, as this is the interface to the consistency model descriptions and checker, we can encode efficient support for virtual address synonyms here by transforming the address used to construct events (see EvtStateCats::set_addr_mask). As described in [1], if we are working at the virtual address level, we are checking VAMC (Virtual Address Memory Consistency). Here we only consider the problem of synonym sets of virtual addresses mapping to the same physical address, and add simple support for it.
[1] Bogdan F. Romanescu, Alvin R. Lebeck, Daniel J. Sorin, "Specifying and
dynamically verifying address translation-aware memory consistency", 2010.