mem: Clean up Request initialisation
[gem5.git] / src / mem / qport.hh
index 1d0544dfa5e88cfe114e59f183eec1a8501878f7..5406ef114b742a7e6f7e1cadc72dce879e6525ad 100644 (file)
@@ -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__