Go to the documentation of this file.
41 #ifndef __MEM_PACKET_QUEUE_HH__
42 #define __MEM_PACKET_QUEUE_HH__
146 const std::string& _sendEventName,
147 bool force_order =
false,
148 bool disable_sanity_check =
false);
162 virtual const std::string
name()
const = 0;
236 const std::string&
label)
251 const std::string _label =
"ReqPacketQueue");
272 const std::string&
label)
288 bool force_order =
false,
289 const std::string _label =
"SnoopRespPacketQueue");
310 const std::string&
label)
326 bool force_order =
false,
327 const std::string _label =
"RespPacketQueue");
340 #endif // __MEM_PACKET_QUEUE_HH__
Tick curTick()
The universal simulation clock.
Tick deferredPacketReadyTime() const
Get the next packet ready time.
const std::string name() const
Return port name (for DPRINTF).
const std::string name() const
Provide a name to simplify debugging.
bool deferredPacketReady() const
Check whether we have a packet ready to go on the transmit list.
DeferredPacket(Tick t, PacketPtr p)
static const std::string name(const RequestPort &memSidePort, const std::string &label)
RespPacketQueue(EventManager &_em, ResponsePort &_cpu_side_port, bool force_order=false, const std::string _label="RespPacketQueue")
Create a response packet queue, linked to an event manager, a CPU-side port, and a label that will be...
bool sendTiming(PacketPtr pkt)
Send a packet using the appropriate method for the specific subclass (request, response or snoop resp...
virtual void sendDeferredPacket()
Attempt to send a packet.
void retry()
Retry sending a packet from the queue.
RequestPort & memSidePort
virtual ~RespPacketQueue()
EventFunctionWrapper sendEvent
Event used to call processSendEvent.
A deferred packet, buffered to transmit later.
bool sendTiming(PacketPtr pkt)
Send a packet using the appropriate method for the specific subclass (request, response or snoop resp...
bool sendTiming(PacketPtr pkt)
Send a packet using the appropriate method for the specific subclass (request, response or snoop resp...
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
virtual const std::string name() const =0
Provide a name to simplify debugging.
size_t size() const
Get the size of the queue.
PacketPtr pkt
Pointer to the packet to transmit.
std::list< DeferredPacket > DeferredPacketList
DrainState
Object drain/handover states.
bool trySatisfyFunctional(PacketPtr pkt)
Check the list of buffered packets against the supplied functional request.
Tick tick
The tick when the packet is ready to transmit.
bool checkConflict(const PacketPtr pkt, const int blk_size) const
Check if a packet corresponding to the same address exists in the queue.
static const std::string name(const RequestPort &memSidePort, const std::string &label)
bool forceOrder
if true, inserted packets have to be unconditionally scheduled after the last packet in the queue tha...
DeferredPacketList transmitList
A list of outgoing packets.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
uint64_t Tick
Tick count type.
ReqPacketQueue(EventManager &_em, RequestPort &_mem_side_port, const std::string _label="ReqPacketQueue")
Create a request packet queue, linked to an event manager, a memory-side port, and a label that will ...
void schedSendEvent(Tick when)
Schedule a send event if we are not already waiting for a retry.
ResponsePort & cpuSidePort
virtual ~PacketQueue()
Virtual desctructor since the class may be used as a base class.
A packet queue is a class that holds deferred packets and later sends them using the associated CPU-s...
void processSendEvent()
Used to schedule sending of deferred packets.
bool waitingOnRetry
Remember whether we're awaiting a retry.
virtual ~ReqPacketQueue()
virtual bool sendTiming(PacketPtr pkt)=0
Send a packet using the appropriate method for the specific subclass (request, response or snoop resp...
static const std::string name(const ResponsePort &cpuSidePort, const std::string &label)
A ResponsePort is a specialization of a port.
const std::string name() const
Provide a name to simplify debugging.
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
const std::string name() const
Provide a name to simplify debugging.
void schedSendTiming(PacketPtr pkt, Tick when)
Add a packet to the transmit list, and schedule a send event.
Interface for objects that might require draining before checkpointing.
EventManager & em
The manager which is used for the event queue.
const std::string label
Label to use for print request packets label stack.
RequestPort & memSidePort
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
SnoopRespPacketQueue(EventManager &_em, RequestPort &_mem_side_port, bool force_order=false, const std::string _label="SnoopRespPacketQueue")
Create a snoop response packet queue, linked to an event manager, a memory-side port,...
PacketQueue(EventManager &_em, const std::string &_label, const std::string &_sendEventName, bool force_order=false, bool disable_sanity_check=false)
Create a packet queue, linked to an event manager, and a label that will be used for functional print...
virtual ~SnoopRespPacketQueue()
void disableSanityCheck()
This allows a user to explicitly disable the sanity check on the size of the transmitList,...
Generated on Sun Jul 30 2023 01:56:58 for gem5 by doxygen 1.8.17