changeset fb7fc9aca918 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=fb7fc9aca918
description:
        Port: Only indicate that a SimpleTimingPort is drained if its send 
event is
        not scheduled, as well as the transmit list being empty.

diffstat:

 src/mem/cache/cache_impl.hh |  2 +-
 src/mem/tport.cc            |  4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diffs (33 lines):

diff -r 3bd51d6ac9ef -r fb7fc9aca918 src/mem/cache/cache_impl.hh
--- a/src/mem/cache/cache_impl.hh       Thu Jul 22 18:52:02 2010 +0100
+++ b/src/mem/cache/cache_impl.hh       Thu Jul 22 18:54:37 2010 +0100
@@ -1569,7 +1569,7 @@
             schedule(sendEvent, std::max(nextReady, curTick + 1));
         } else {
             // no more to send right now: if we're draining, we may be done
-            if (drainEvent) {
+            if (drainEvent && !sendEvent->scheduled()) {
                 drainEvent->process();
                 drainEvent = NULL;
             }
diff -r 3bd51d6ac9ef -r fb7fc9aca918 src/mem/tport.cc
--- a/src/mem/tport.cc  Thu Jul 22 18:52:02 2010 +0100
+++ b/src/mem/tport.cc  Thu Jul 22 18:54:37 2010 +0100
@@ -155,7 +155,7 @@
             schedule(sendEvent, time <= curTick ? curTick+1 : time);
         }
 
-        if (transmitList.empty() && drainEvent) {
+        if (transmitList.empty() && drainEvent && !sendEvent->scheduled()) {
             drainEvent->process();
             drainEvent = NULL;
         }
@@ -195,7 +195,7 @@
 unsigned int
 SimpleTimingPort::drain(Event *de)
 {
-    if (transmitList.size() == 0)
+    if (transmitList.size() == 0 && !sendEvent->scheduled())
         return 0;
     drainEvent = de;
     return 1;
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to