Go to the documentation of this file.
42 #ifndef __MEM_RUBY_SYSTEM_RUBYPORT_HH__
43 #define __MEM_RUBY_SYSTEM_RUBYPORT_HH__
50 #include "mem/ruby/protocol/RequestStatus.hh"
53 #include "params/RubyPort.hh"
84 bool _access_backing_store,
85 PortID id,
bool _no_retry_on_stall);
133 {
panic(
"recvFunctional should never be called on pio response "
150 void init()
override;
228 #endif // __MEM_RUBY_SYSTEM_RUBYPORT_HH__
Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
virtual bool isDeadlockEventScheduled() const =0
void ruby_hit_callback(PacketPtr pkt)
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
const PortID InvalidPortID
bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
RubyPort(const Params *p)
bool recvTimingResp(PacketPtr pkt, PortID request_port_id)
Called by the PIO port when receiving a timing response.
void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
uint64_t Tick
Tick count type.
SenderState(MemResponsePort *_port)
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
bool onRetryList(MemResponsePort *port)
MemRequestPort(const std::string &_name, RubyPort *_port)
virtual RequestStatus makeRequest(PacketPtr pkt)=0
SnoopRespPacketQueue snoopRespQueue
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
MessageBuffer * m_mandatory_q_ptr
AbstractController * m_controller
DrainState
Object drain/handover states.
std::vector< MemResponsePort * > response_ports
A virtual base opaque structure used to hold state associated with the packet (e.g....
The QueuedRequestPort combines two queues, a request queue and a snoop response queue,...
Ports are used to interface objects to each other.
MemResponsePort(const std::string &_name, RubyPort *_port, bool _access_backing_store, PortID id, bool _no_retry_on_stall)
A queued port is a port that has an infinite queue for outgoing packets and thus decouples the module...
MemRequestPort memRequestPort
MemResponsePort memResponsePort
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual int functionalWrite(Packet *func_pkt)
PioResponsePort(const std::string &_name, RubyPort *_port)
bool access_backing_store
PioRequestPort pioRequestPort
void addToRetryList(MemResponsePort *port)
void evictionCallback(Addr address)
bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
void recvRangeChange()
Called to receive an address range change from the peer response port.
std::vector< MemResponsePort * > retryList
std::vector< PioRequestPort * > request_ports
virtual void descheduleDeadlockEvent()=0
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void hitCallback(PacketPtr pkt)
void setController(AbstractController *_cntrl)
SnoopRespPacketQueue snoopRespQueue
PioRequestPort(const std::string &_name, RubyPort *_port)
PioResponsePort pioResponsePort
virtual int outstandingCount() const =0
unsigned int gotAddrRanges
bool isPhysMemAddress(PacketPtr pkt) const
RubySystem * m_ruby_system
void recvRangeChange()
Called to receive an address range change from the peer response port.
AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
std::vector< MemResponsePort * >::iterator CpuPortIter
Vector of M5 Ports attached to this Ruby port.
void ruby_eviction_callback(Addr address)
bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
#define panic(...)
This implements a cprintf based panic() function.
Generated on Wed Sep 30 2020 14:02:14 for gem5 by doxygen 1.8.17