Go to the documentation of this file.
29 #ifndef __LEARNING_GEM5_PART2_SIMPLE_MEMOBJ_HH__
30 #define __LEARNING_GEM5_PART2_SIMPLE_MEMOBJ_HH__
33 #include "params/SimpleMemobj.hh"
101 {
panic(
"recvAtomic unimpl."); }
251 #endif // __LEARNING_GEM5_PART2_SIMPLE_MEMOBJ_HH__
MemSidePort memPort
Instantiation of the memory-side port.
Port on the memory-side that receives responses.
A ResponsePort is a specialization of a port.
void recvRangeChange() override
Called to receive an address range change from the peer responder port.
bool handleRequest(PacketPtr pkt)
Handle the request from the CPU side.
AddrRangeList getAddrRanges() const
Return the address ranges this memobj is responsible for.
SimpleMemobj(SimpleMemobjParams *params)
constructor
const PortID InvalidPortID
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the request port.
uint64_t Tick
Tick count type.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
bool recvTimingResp(PacketPtr pkt) override
Receive a timing response from the response port.
CPUSidePort instPort
Instantiation of the CPU-side ports.
void trySendRetry()
Send a retry to the peer port only if it is needed.
SimpleMemobj * owner
The object that owns this object (SimpleMemobj)
void recvRespRetry() override
Called by the request port if sendTimingResp was called on this response port (causing recvTimingResp...
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
CPUSidePort(const std::string &name, SimpleMemobj *owner)
Constructor.
void recvReqRetry() override
Called by the response port if sendTimingReq was called on this request port (causing recvTimingReq t...
A very simple memory object.
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the request port.
PacketPtr blockedPacket
If we tried to send a packet and it was blocked, store it here.
Ports are used to interface objects to each other.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
MemSidePort(const std::string &name, SimpleMemobj *owner)
Constructor.
void sendPacket(PacketPtr pkt)
Send a packet across this port.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
const std::string name() const
Return port name (for DPRINTF).
SimpleMemobj * owner
The object that owns this object (SimpleMemobj)
const Params * params() const
void handleFunctional(PacketPtr pkt)
Handle a packet functionally.
void sendRangeChange()
Tell the CPU side to ask for our memory ranges.
bool needRetry
True if the port needs to send a retry req.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Port on the CPU-side that receives requests.
bool handleResponse(PacketPtr pkt)
Handle the respone from the memory side.
PacketPtr blockedPacket
If we tried to send a packet and it was blocked, store it here.
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the request port.
#define panic(...)
This implements a cprintf based panic() function.
void sendPacket(PacketPtr pkt)
Send a packet across this port.
bool blocked
True if this is currently blocked waiting for a response.
Abstract superclass for simulation objects.
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17