gem5  v22.1.0.0
Protected Member Functions | Friends | List of all members
gem5::TimingResponseProtocol Class Referenceabstract

#include <timing.hh>

Inheritance diagram for gem5::TimingResponseProtocol:
gem5::ResponsePort gem5::AddrMapper::MapperResponsePort gem5::Bridge::BridgeResponsePort gem5::CommMonitor::MonitorResponsePort gem5::ExternalSlave::ExternalPort gem5::LdsState::CuSidePort gem5::MemCheckerMonitor::MonitorResponsePort gem5::OutgoingRequestBridge::OutgoingRequestPort gem5::PortTerminator::RespPort gem5::QueuedResponsePort gem5::SerialLink::SerialLinkResponsePort gem5::SimpleCache::CPUSidePort gem5::SimpleMemobj::CPUSidePort gem5::SlavePort gem5::SysBridge::SysBridgeSourcePort gem5::TLBCoalescer::CpuSidePort gem5::ThreadBridge::IncomingPort gem5::TokenResponsePort gem5::VegaISA::GpuTLB::CpuSidePort gem5::VegaTLBCoalescer::CpuSidePort gem5::X86ISA::GpuTLB::CpuSidePort gem5::memory::CfiMemory::MemoryPort gem5::memory::DRAMSim2::MemoryPort gem5::memory::DRAMsim3::MemoryPort gem5::memory::SimpleMemory::MemoryPort sc_gem5::Gem5ToTlmBridge< BITWIDTH >::BridgeResponsePort

Protected Member Functions

bool sendResp (TimingRequestProtocol *peer, PacketPtr pkt)
 Attempt to send a timing response to the peer by calling its corresponding receive function. More...
 
void sendSnoopReq (TimingRequestProtocol *peer, PacketPtr pkt)
 Attempt to send a timing snoop request packet to the peer by calling its corresponding receive function. More...
 
void sendRetryReq (TimingRequestProtocol *peer)
 Send a retry to the peer that previously attempted a sendTimingReq to this protocol and failed. More...
 
void sendRetrySnoopResp (TimingRequestProtocol *peer)
 Send a retry to the peer that previously attempted a sendTimingSnoopResp to this peer and failed. More...
 
virtual bool recvTimingReq (PacketPtr pkt)=0
 Receive a timing request from the peer. More...
 
virtual bool tryTiming (PacketPtr pkt)=0
 Availability request from the peer. More...
 
virtual bool recvTimingSnoopResp (PacketPtr pkt)=0
 Receive a timing snoop response from the peer. More...
 
virtual void recvRespRetry ()=0
 Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called on the peer) and was unsuccessful. More...
 

Friends

class TimingRequestProtocol
 

Detailed Description

Definition at line 125 of file timing.hh.

Member Function Documentation

◆ recvRespRetry()

virtual void gem5::TimingResponseProtocol::recvRespRetry ( )
protectedpure virtual

◆ recvTimingReq()

virtual bool gem5::TimingResponseProtocol::recvTimingReq ( PacketPtr  pkt)
protectedpure virtual

◆ recvTimingSnoopResp()

virtual bool gem5::TimingResponseProtocol::recvTimingSnoopResp ( PacketPtr  pkt)
protectedpure virtual

◆ sendResp()

bool gem5::TimingResponseProtocol::sendResp ( TimingRequestProtocol peer,
PacketPtr  pkt 
)
protected

Attempt to send a timing response 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 recvRespRetry at which point it can re-issue a sendTimingResp.

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

Definition at line 80 of file timing.cc.

References gem5::Packet::isResponse(), and gem5::TimingRequestProtocol::recvTimingResp().

Referenced by gem5::ResponsePort::sendTimingResp().

◆ sendRetryReq()

void gem5::TimingResponseProtocol::sendRetryReq ( TimingRequestProtocol peer)
protected

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

Definition at line 95 of file timing.cc.

References gem5::TimingRequestProtocol::recvReqRetry().

Referenced by gem5::ResponsePort::sendRetryReq().

◆ sendRetrySnoopResp()

void gem5::TimingResponseProtocol::sendRetrySnoopResp ( TimingRequestProtocol peer)
protected

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

Definition at line 101 of file timing.cc.

References gem5::TimingRequestProtocol::recvRetrySnoopResp().

Referenced by gem5::ResponsePort::sendRetrySnoopResp().

◆ sendSnoopReq()

void gem5::TimingResponseProtocol::sendSnoopReq ( TimingRequestProtocol peer,
PacketPtr  pkt 
)
protected

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

Snoop requests always succeed and hence no return value is needed.

Parameters
peerPeer to send the packet to.
pktPacket to send.

Definition at line 87 of file timing.cc.

References gem5::Packet::isRequest(), and gem5::TimingRequestProtocol::recvTimingSnoopReq().

Referenced by gem5::ResponsePort::sendTimingSnoopReq().

◆ tryTiming()

virtual bool gem5::TimingResponseProtocol::tryTiming ( PacketPtr  pkt)
protectedpure virtual

Friends And Related Function Documentation

◆ TimingRequestProtocol

friend class TimingRequestProtocol
friend

Definition at line 127 of file timing.hh.


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

Generated on Wed Dec 21 2022 10:23:28 for gem5 by doxygen 1.9.1