quic/qbox
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
ExclusiveAccessTlmExtension Class Reference

Exclusive load/store TLM extension. More...

#include <exclusive-access.h>

Inheritance diagram for ExclusiveAccessTlmExtension:
Inheritance graph
[legend]
Collaboration diagram for ExclusiveAccessTlmExtension:
Collaboration graph
[legend]

Classes

class  InitiatorId
 

Public Types

enum  ExclusiveStoreStatus { EXCLUSIVE_STORE_NA = 0 , EXCLUSIVE_STORE_SUCCESS , EXCLUSIVE_STORE_FAILURE }
 

Public Member Functions

 ExclusiveAccessTlmExtension (const ExclusiveAccessTlmExtension &)=default
 
virtual tlm_extension_baseclone () const override
 
virtual void copy_from (const tlm_extension_base &ext) override
 
void set_exclusive_store_success ()
 
void set_exclusive_store_failure ()
 
ExclusiveStoreStatus get_exclusive_store_status () const
 
void add_hop (int id)
 
const InitiatorIdget_initiator_id () const
 

Detailed Description

Exclusive load/store TLM extension.

Exclusive load/store TLM extension. It embeds an initiator ID (InitiatorId) and a store status (ExclusiveStoreStatus).

The initiator ID is meant to be composed by all the routers on the path that support this extension. Each router can call add_hop on the extension with an unique ID correponding to the initiator the request is comming from (typically the index of the initiator on the router). The first initiator is not required call add_hop since an empty InitiatorId is a perfectly valid ID (in the case the initiator would be directly connected to a target, without routers in between). It can still do it if it needs to emit exclusive transactions with different exclusive IDs.

The store status is valid after a TLM_WRITE_COMMAND transaction and indicate whether the exclusive store succeeded or not.


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