X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmem%2Fqport.hh;h=5406ef114b742a7e6f7e1cadc72dce879e6525ad;hb=f49830ce0ba79c54c65c9c4b25bc3c6184aaf2a9;hp=1d0544dfa5e88cfe114e59f183eec1a8501878f7;hpb=3fea59e1629f5dac55a7d36752e822bee7fd7fa7;p=gem5.git diff --git a/src/mem/qport.hh b/src/mem/qport.hh index 1d0544dfa..5406ef114 100644 --- a/src/mem/qport.hh +++ b/src/mem/qport.hh @@ -78,23 +78,26 @@ class QueuedSlavePort : public SlavePort * QueuePort constructor. */ QueuedSlavePort(const std::string& name, MemObject* owner, - SlavePacketQueue &queue) : - SlavePort(name, owner), queue(queue) + SlavePacketQueue &queue, PortID id = InvalidPortID) : + SlavePort(name, owner, id), queue(queue) { } virtual ~QueuedSlavePort() { } + /** + * Schedule the sending of a timing response. + * + * @param pkt Packet to send + * @param when Absolute time (in ticks) to send packet + */ + void schedTimingResp(PacketPtr pkt, Tick when) + { queue.schedSendTiming(pkt, when); } + /** Check the list of buffered packets against the supplied * functional request. */ bool checkFunctional(PacketPtr pkt) { return queue.checkFunctional(pkt); } - /** - * Hook for draining the queued port. - * - * @param de an event which is used to signal back to the caller - * @returns a number indicating how many times process will be called - */ - unsigned int drain(Event *de) { return queue.drain(de); } + unsigned int drain(DrainManager *dm) { return queue.drain(dm); } }; class QueuedMasterPort : public MasterPort @@ -119,23 +122,35 @@ class QueuedMasterPort : public MasterPort * QueuePort constructor. */ QueuedMasterPort(const std::string& name, MemObject* owner, - MasterPacketQueue &queue) : - MasterPort(name, owner), queue(queue) + MasterPacketQueue &queue, PortID id = InvalidPortID) : + MasterPort(name, owner, id), queue(queue) { } virtual ~QueuedMasterPort() { } - /** Check the list of buffered packets against the supplied - * functional request. */ - bool checkFunctional(PacketPtr pkt) { return queue.checkFunctional(pkt); } + /** + * Schedule the sending of a timing request. + * + * @param pkt Packet to send + * @param when Absolute time (in ticks) to send packet + */ + void schedTimingReq(PacketPtr pkt, Tick when) + { queue.schedSendTiming(pkt, when); } /** - * Hook for draining the queued port. + * Schedule the sending of a timing snoop response. * - * @param de an event which is used to signal back to the caller - * @returns a number indicating how many times process will be called + * @param pkt Packet to send + * @param when Absolute time (in ticks) to send packet */ - unsigned int drain(Event *de) { return queue.drain(de); } + void schedTimingSnoopResp(PacketPtr pkt, Tick when) + { queue.schedSendTiming(pkt, when, true); } + + /** Check the list of buffered packets against the supplied + * functional request. */ + bool checkFunctional(PacketPtr pkt) { return queue.checkFunctional(pkt); } + + unsigned int drain(DrainManager *dm) { return queue.drain(dm); } }; #endif // __MEM_QPORT_HH__