Make the Event::description() a const function
[gem5.git] / src / mem / bus.cc
index cc3504e8339c715fe1fc2e2a6eb12d22471766b8..66b20703f406b4405b9f252c6924379b06f15a28 100644 (file)
@@ -105,7 +105,7 @@ void Bus::BusFreeEvent::process()
     bus->recvRetry(-1);
 }
 
-const char * Bus::BusFreeEvent::description()
+const char * Bus::BusFreeEvent::description() const
 {
     return "bus became available";
 }
@@ -170,8 +170,6 @@ bool
 Bus::recvTiming(PacketPtr pkt)
 {
     short src = pkt->getSrc();
-    DPRINTF(Bus, "recvTiming: packet src %d dest %d addr 0x%x cmd %s\n",
-            src, pkt->getDest(), pkt->getAddr(), pkt->cmdString());
 
     BusPort *src_port;
     if (src == defaultId)
@@ -191,10 +189,14 @@ Bus::recvTiming(PacketPtr pkt)
          (retryList.size() && (!inRetry || src_port != retryList.front()))))
     {
         addToRetryList(src_port);
-        DPRINTF(Bus, "recvTiming: Bus is busy, returning false\n");
+        DPRINTF(Bus, "recvTiming: src %d dst %d %s 0x%x BUSY\n",
+                src, pkt->getDest(), pkt->cmdString(), pkt->getAddr());
         return false;
     }
 
+    DPRINTF(Bus, "recvTiming: src %d dst %d %s 0x%x\n",
+            src, pkt->getDest(), pkt->cmdString(), pkt->getAddr());
+
     if (!pkt->isExpressSnoop()) {
         occupyBus(pkt);
     }
@@ -243,7 +245,8 @@ Bus::recvTiming(PacketPtr pkt)
             // Packet not successfully sent. Leave or put it on the retry list.
             // illegal to block responses... can lead to deadlock
             assert(!pkt->isResponse());
-            DPRINTF(Bus, "Adding2 a retry to RETRY list %d\n", src);
+            DPRINTF(Bus, "recvTiming: src %d dst %d %s 0x%x TGT RETRY\n",
+                    src, pkt->getDest(), pkt->cmdString(), pkt->getAddr());
             addToRetryList(src_port);
             return false;
         }
@@ -416,8 +419,13 @@ Bus::recvAtomic(PacketPtr pkt)
 void
 Bus::recvFunctional(PacketPtr pkt)
 {
-    DPRINTF(Bus, "recvFunctional: packet src %d dest %d addr 0x%x cmd %s\n",
-            pkt->getSrc(), pkt->getDest(), pkt->getAddr(), pkt->cmdString());
+    if (!pkt->isPrint()) {
+        // don't do DPRINTFs on PrintReq as it clutters up the output
+        DPRINTF(Bus,
+                "recvFunctional: packet src %d dest %d addr 0x%x cmd %s\n",
+                pkt->getSrc(), pkt->getDest(), pkt->getAddr(),
+                pkt->cmdString());
+    }
     assert(pkt->getDest() == Packet::Broadcast);
 
     int port_id = findPort(pkt->getAddr());
@@ -613,12 +621,11 @@ Bus::drain(Event * de)
     //We should check that we're not "doing" anything, and that noone is
     //waiting. We might be idle but have someone waiting if the device we
     //contacted for a retry didn't actually retry.
-    if (curTick >= tickNextIdle && retryList.size() == 0) {
-        return 0;
-    } else {
+    if (retryList.size() || (curTick < tickNextIdle && busIdle.scheduled())) {
         drainEvent = de;
         return 1;
     }
+    return 0;
 }
 
 void