55 : portName(_name),
id(_id), owner(_owner)
65 :
Port(name, *owner, _id), _baseSlavePort(NULL)
77 panic(
"Cannot getSlavePort on master port %s that is not connected\n",
91 :
Port(name, *owner, _id), _baseMasterPort(NULL)
103 panic(
"Cannot getMasterPort on slave port %s that is not connected\n",
137 if (cast_slave_port != NULL) {
143 fatal(
"Master port %s cannot bind to %s\n",
name(),
152 panic(
"Attempting to unbind master port %s that is not connected\n",
A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
This master id is used for functional requests that don't come from a particular device.
Ports are used to interface memory objects to each other.
virtual void recvTimingSnoopReq(PacketPtr pkt)
Receive a timing snoop request from the slave port.
const std::string & name()
Port(const std::string &_name, MemObject &_owner, PortID _id)
Abstract base class for ports.
virtual void recvRespRetry()=0
Called by the master port if sendTimingResp was called on this slave port (causing recvTimingResp to ...
Object used to maintain state of a PrintReq.
const std::string name() const
Return port name (for DPRINTF).
bool sendTimingSnoopResp(PacketPtr pkt)
Attempt to send a timing snoop response packet to the slave port by calling its corresponding receive...
void bind(MasterPort &master_port)
Called by the master port to bind.
Tick sendAtomicSnoop(PacketPtr pkt)
Send an atomic snoop request packet, where the data is moved and the state is updated in zero time...
virtual void recvFunctional(PacketPtr pkt)=0
Receive a functional request packet from the master port.
void sendFunctionalSnoop(PacketPtr pkt)
Send a functional snoop request packet, where the data is instantly updated everywhere in the memory ...
BaseSlavePort * _baseSlavePort
bool sendTimingReq(PacketPtr pkt)
Attempt to send a timing request to the slave port by calling its corresponding receive function...
A SlavePort is a specialisation of a port.
virtual void sendRetryResp()
Send a retry to the slave port that previously attempted a sendTimingResp to this master port and fai...
virtual Tick recvAtomic(PacketPtr pkt)=0
Receive an atomic request packet from the master port.
void sendRetrySnoopResp()
Send a retry to the master port that previously attempted a sendTimingSnoopResp to this slave port an...
A BaseSlavePort is a protocol-agnostic slave port, responsible only for the structural connection to ...
virtual bool recvTimingResp(PacketPtr pkt)=0
Receive a timing response from the slave port.
virtual ~Port()
Virtual destructor due to inheritance.
BaseMasterPort * _baseMasterPort
bool sendTimingResp(PacketPtr pkt)
Attempt to send a timing response to the master port by calling its corresponding receive function...
void unbind()
Unbind this master port and the associated slave port.
virtual void recvReqRetry()=0
Called by the slave port if sendTimingReq was called on this master port (causing recvTimingReq to be...
virtual void recvFunctionalSnoop(PacketPtr pkt)
Receive a functional snoop request packet from the slave port.
uint64_t Tick
Tick count type.
virtual void recvRetrySnoopResp()
Called by the slave port if sendTimingSnoopResp was called on this master port (causing recvTimingSno...
virtual ~BaseMasterPort()
void unbind()
Called by the master port to unbind.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void printAddr(Addr a)
Inject a PrintReq for the given address to print the state of that address throughout the memory syst...
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
BaseSlavePort(const std::string &name, MemObject *owner, PortID id=InvalidPortID)
BaseMasterPort & getMasterPort() const
virtual bool recvTimingReq(PacketPtr pkt)=0
Receive a timing request from the master port.
AddrRangeList getAddrRanges() const
Get the address ranges of the connected slave port.
virtual AddrRangeList getAddrRanges() const =0
Get a list of the non-overlapping address ranges the owner is responsible for.
void sendRetryReq()
Send a retry to the master port that previously attempted a sendTimingReq to this slave port and fail...
SenderState * senderState
This packet's sender state.
The MemObject class extends the ClockedObject with accessor functions to get its master and slave por...
A BaseMasterPort is a protocol-agnostic master port, responsible only for the structural connection t...
SlavePort(const std::string &name, MemObject *owner, PortID id=InvalidPortID)
Slave port.
void sendTimingSnoopReq(PacketPtr pkt)
Attempt to send a timing snoop request packet to the master port by calling its corresponding receive...
void bind(BaseSlavePort &slave_port)
Bind this master port to a slave port.
BaseSlavePort & getSlavePort() const
virtual Tick recvAtomicSnoop(PacketPtr pkt)
Receive an atomic snoop request packet from the slave port.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
Tick sendAtomic(PacketPtr pkt)
Send an atomic request packet, where the data is moved and the state is updated in zero time...
MasterPort(const std::string &name, MemObject *owner, PortID id=InvalidPortID)
Master port.
BaseMasterPort(const std::string &name, MemObject *owner, PortID id=InvalidPortID)
virtual bool recvTimingSnoopResp(PacketPtr pkt)
Receive a timing snoop response from the master port.
void sendFunctional(PacketPtr pkt)
Send a functional request packet, where the data is instantly updated everywhere in the memory system...