44 #ifndef __MEM_PACKET_QUEUE_HH__
45 #define __MEM_PACKET_QUEUE_HH__
137 bool disable_sanity_check =
false);
151 virtual const std::string
name()
const = 0;
230 const std::string _label =
"ReqPacketQueue");
260 const std::string _label =
"SnoopRespPacketQueue");
290 const std::string _label =
"RespPacketQueue");
301 #endif // __MEM_PACKET_QUEUE_HH__
A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
void disableSanityCheck()
This allows a user to explicitly disable the sanity check on the size of the transmitList, which is enabled by default.
DrainState drain() override
Notify an object that it needs to drain its state.
RespPacketQueue(EventManager &_em, SlavePort &_slavePort, const std::string _label="RespPacketQueue")
Create a response packet queue, linked to an event manager, a slave port, and a label that will be us...
void retry()
Retry sending a packet from the queue.
const std::string name() const
Provide a name to simplify debugging.
bool hasAddr(Addr addr) const
Check if a packets address exists in the queue.
PacketPtr pkt
Pointer to the packet to transmit.
void schedSendTiming(PacketPtr pkt, Tick when, bool force_order=false)
Add a packet to the transmit list, and schedule a send event.
EventWrapper< PacketQueue,&PacketQueue::processSendEvent > sendEvent
Event used to call processSendEvent.
DrainState
Object drain/handover states.
const std::string name() const
Return port name (for DPRINTF).
bool waitingOnRetry
Remember whether we're awaiting a retry.
A deferred packet, buffered to transmit later.
A SlavePort is a specialisation of a port.
void schedSendEvent(Tick when)
Schedule a send event if we are not already waiting for a retry.
Tick tick
The tick when the packet is ready to transmit.
ReqPacketQueue(EventManager &_em, MasterPort &_masterPort, const std::string _label="ReqPacketQueue")
Create a request packet queue, linked to an event manager, a master port, and a label that will be us...
virtual ~RespPacketQueue()
bool deferredPacketReady() const
Check whether we have a packet ready to go on the transmit list.
Interface for objects that might require draining before checkpointing.
Tick curTick()
The current simulated tick.
virtual ~ReqPacketQueue()
uint64_t Tick
Tick count type.
virtual bool sendTiming(PacketPtr pkt)=0
Send a packet using the appropriate method for the specific subclass (reuest, response or snoop respo...
EventManager & em
The manager which is used for the event queue.
Tick deferredPacketReadyTime() const
Get the next packet ready time.
bool sendTiming(PacketPtr pkt)
Send a packet using the appropriate method for the specific subclass (reuest, response or snoop respo...
bool checkFunctional(PacketPtr pkt)
Check the list of buffered packets against the supplied functional request.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
bool sendTiming(PacketPtr pkt)
Send a packet using the appropriate method for the specific subclass (reuest, response or snoop respo...
A packet queue is a class that holds deferred packets and later sends them using the associated slave...
void processSendEvent()
Used to schedule sending of deferred packets.
virtual ~PacketQueue()
Virtual desctructor since the class may be used as a base class.
virtual const std::string name() const =0
Provide a name to simplify debugging.
const std::string name() const
Provide a name to simplify debugging.
virtual ~SnoopRespPacketQueue()
const std::string name() const
Provide a name to simplify debugging.
DeferredPacket(Tick t, PacketPtr p)
DeferredPacketList transmitList
A list of outgoing packets.
bool sendTiming(PacketPtr pkt)
Send a packet using the appropriate method for the specific subclass (reuest, response or snoop respo...
SnoopRespPacketQueue(EventManager &_em, MasterPort &_masterPort, const std::string _label="SnoopRespPacketQueue")
Create a snoop response packet queue, linked to an event manager, a master port, and a label that wil...
size_t size() const
Get the size of the queue.
PacketQueue(EventManager &_em, const std::string &_label, bool disable_sanity_check=false)
Create a packet queue, linked to an event manager, and a label that will be used for functional print...
std::list< DeferredPacket > DeferredPacketList
virtual void sendDeferredPacket()
Attempt to send a packet.
const std::string label
Label to use for print request packets label stack.