summaryrefslogtreecommitdiff
path: root/src/sim/drain.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/drain.cc')
-rw-r--r--src/sim/drain.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/sim/drain.cc b/src/sim/drain.cc
index c60734876..085f781dc 100644
--- a/src/sim/drain.cc
+++ b/src/sim/drain.cc
@@ -43,6 +43,7 @@
#include "base/trace.hh"
#include "debug/Drain.hh"
#include "sim/sim_exit.hh"
+#include "sim/sim_object.hh"
DrainManager DrainManager::_instance;
@@ -67,8 +68,15 @@ DrainManager::tryDrain()
DPRINTF(Drain, "Trying to drain %u objects.\n", drainableCount());
_state = DrainState::Draining;
- for (auto *obj : _allDrainable)
- _count += obj->dmDrain() == DrainState::Drained ? 0 : 1;
+ for (auto *obj : _allDrainable) {
+ DrainState status = obj->dmDrain();
+ if (DTRACE(Drain) && status != DrainState::Drained) {
+ SimObject *temp = dynamic_cast<SimObject*>(obj);
+ if (temp)
+ DPRINTF(Drain, "Failed to drain %s\n", temp->name());
+ }
+ _count += status == DrainState::Drained ? 0 : 1;
+ }
if (_count == 0) {
DPRINTF(Drain, "Drain done.\n");