gem5  v19.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Protected Member Functions | Friends | List of all members
TimingRequestProtocol Class Referenceabstract

#include <timing.hh>

Inheritance diagram for TimingRequestProtocol:
MasterPort AddrMapper::MapperMasterPort AtomicSimpleCPU::AtomicCPUPort BaseKvmCPU::KVMCpuPort BaseTrafficGen::TrafficGenPort Bridge::BridgeMasterPort CoherentXBar::CoherentXBarMasterPort CoherentXBar::SnoopRespPort CommMonitor::MonitorMasterPort ComputeUnit::DataPort ComputeUnit::DTLBPort ComputeUnit::ITLBPort ComputeUnit::LDSPort ComputeUnit::SQCPort DefaultFetch< Impl >::IcachePort DmaPort ExternalMaster::ExternalPort GarnetSyntheticTraffic::CpuPort Gicv3Its::DataPort GpuDispatcher::TLBPort LSQ< Impl >::DcachePort MemCheckerMonitor::MonitorMasterPort MemTest::CpuPort MinorCPU::MinorCPUPort NoncoherentXBar::NoncoherentXBarMasterPort QueuedMasterPort RubyDirectedTester::CpuPort RubyTester::CpuPort sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeMasterPort SerialLink::SerialLinkMasterPort SimpleCache::MemSidePort SimpleMemobj::MemSidePort SMMUMasterPort SMMUMasterTableWalkPort System::SystemPort TimingSimpleCPU::TimingCPUPort TLBCoalescer::MemSidePort TraceCPU::DcachePort TraceCPU::IcachePort X86ISA::GpuTLB::MemSidePort X86ISA::Walker::WalkerPort

Protected Member Functions

bool sendReq (TimingResponseProtocol *peer, PacketPtr pkt)
 Attempt to send a timing request to the peer by calling its corresponding receive function. More...
 
bool trySend (TimingResponseProtocol *peer, PacketPtr pkt) const
 Check if the peer can handle a timing request. More...
 
bool sendSnoopResp (TimingResponseProtocol *peer, PacketPtr pkt)
 Attempt to send a timing snoop response packet to it's peer by calling its corresponding receive function. More...
 
void sendRetryResp (TimingResponseProtocol *peer)
 Send a retry to the peer that previously attempted a sendTimingResp to this protocol and failed. More...
 
virtual bool recvTimingResp (PacketPtr pkt)=0
 Receive a timing response from the peer. More...
 
virtual void recvTimingSnoopReq (PacketPtr pkt)=0
 Receive a timing snoop request from the peer. More...
 
virtual void recvReqRetry ()=0
 Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on the peer) and was unsuccessful. More...
 
virtual void recvRetrySnoopResp ()=0
 Called by the peer if sendTimingSnoopResp was called on this protocol (causing recvTimingSnoopResp to be called on the peer) and was unsuccessful. More...
 

Friends

class TimingResponseProtocol
 

Detailed Description

Definition at line 52 of file timing.hh.

Member Function Documentation

◆ recvReqRetry()

virtual void TimingRequestProtocol::recvReqRetry ( )
protectedpure virtual

◆ recvRetrySnoopResp()

virtual void TimingRequestProtocol::recvRetrySnoopResp ( )
protectedpure virtual

Called by the peer if sendTimingSnoopResp was called on this protocol (causing recvTimingSnoopResp to be called on the peer) and was unsuccessful.

Implemented in MasterPort, CommMonitor::MonitorMasterPort, and QueuedMasterPort.

Referenced by TimingResponseProtocol::sendRetrySnoopResp().

◆ recvTimingResp()

virtual bool TimingRequestProtocol::recvTimingResp ( PacketPtr  pkt)
protectedpure virtual

Receive a timing response from the peer.

Implemented in ComputeUnit::LDSPort, BaseKvmCPU::KVMCpuPort, ComputeUnit::ITLBPort, ComputeUnit::DTLBPort, ComputeUnit::SQCPort, ComputeUnit::DataPort, Bridge::BridgeMasterPort, X86ISA::GpuTLB::MemSidePort, SerialLink::SerialLinkMasterPort, TraceCPU::DcachePort, AbstractController::MemoryPort, TraceCPU::IcachePort, CoherentXBar::SnoopRespPort, TimingSimpleCPU::DcachePort, BaseCache::MemSidePort, TimingSimpleCPU::IcachePort, TLBCoalescer::MemSidePort, CoherentXBar::CoherentXBarMasterPort, SimpleCache::MemSidePort, SimpleMemobj::MemSidePort, NoncoherentXBar::NoncoherentXBarMasterPort, CommMonitor::MonitorMasterPort, DmaPort, LSQ< Impl >::DcachePort, BaseTrafficGen::TrafficGenPort, GpuDispatcher::TLBPort, AtomicSimpleCPU::AtomicCPUPort, AddrMapper::MapperMasterPort, X86ISA::IntMasterPort< Device >, X86ISA::IntMasterPort< X86ISA::Interrupts >, X86ISA::IntMasterPort< X86ISA::I82094AA >, SMMUATSMasterPort, MemCheckerMonitor::MonitorMasterPort, RubyPort::PioMasterPort, MemTest::CpuPort, DefaultFetch< Impl >::IcachePort, Minor::LSQ::DcachePort, sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeMasterPort, System::SystemPort, Gicv3Its::DataPort, GarnetSyntheticTraffic::CpuPort, MemDelay::MasterPort, RubyTester::CpuPort, Minor::Fetch1::IcachePort, X86ISA::Walker::WalkerPort, RubyPort::MemMasterPort, SMMUMasterTableWalkPort, RubyDirectedTester::CpuPort, and SMMUMasterPort.

Referenced by BaseCache::allocOnFill(), and TimingResponseProtocol::sendResp().

◆ recvTimingSnoopReq()

virtual void TimingRequestProtocol::recvTimingSnoopReq ( PacketPtr  pkt)
protectedpure virtual

◆ sendReq()

bool TimingRequestProtocol::sendReq ( TimingResponseProtocol peer,
PacketPtr  pkt 
)
protected

Attempt to send a timing request to the peer by calling its corresponding receive function.

If the send does not succeed, as indicated by the return value, then the sender must wait for a recvReqRetry at which point it can re-issue a sendTimingReq.

Parameters
peerPeer to send packet to.
pktPacket to send.
Returns
If the send was succesful or not.

Definition at line 50 of file timing.cc.

References Packet::isRequest(), and TimingResponseProtocol::recvTimingReq().

Referenced by MasterPort::sendTimingReq().

◆ sendRetryResp()

void TimingRequestProtocol::sendRetryResp ( TimingResponseProtocol peer)
protected

Send a retry to the peer that previously attempted a sendTimingResp to this protocol and failed.

Definition at line 73 of file timing.cc.

References TimingResponseProtocol::recvRespRetry().

Referenced by MasterPort::sendRetryResp().

◆ sendSnoopResp()

bool TimingRequestProtocol::sendSnoopResp ( TimingResponseProtocol peer,
PacketPtr  pkt 
)
protected

Attempt to send a timing snoop response packet to it's peer by calling its corresponding receive function.

If the send does not succeed, as indicated by the return value, then the sender must wait for a recvRetrySnoop at which point it can re-issue a sendTimingSnoopResp.

Parameters
pktPacket to send.

Definition at line 65 of file timing.cc.

References Packet::isResponse(), and TimingResponseProtocol::recvTimingSnoopResp().

Referenced by MasterPort::sendTimingSnoopResp().

◆ trySend()

bool TimingRequestProtocol::trySend ( TimingResponseProtocol peer,
PacketPtr  pkt 
) const
protected

Check if the peer can handle a timing request.

If the send cannot be handled at the moment, as indicated by the return value, then the sender will receive a recvReqRetry at which point it can re-issue a sendTimingReq.

Parameters
peerPeer to send packet to.
pktPacket to send.
Returns
If the send was succesful or not.

Definition at line 57 of file timing.cc.

References Packet::isRequest(), and TimingResponseProtocol::tryTiming().

Referenced by MasterPort::tryTiming().

Friends And Related Function Documentation

◆ TimingResponseProtocol

friend class TimingResponseProtocol
friend

Definition at line 54 of file timing.hh.


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

Generated on Fri Feb 28 2020 16:27:17 for gem5 by doxygen 1.8.13