# Node ID fe8aabc4adce74a5f2712627f5c7eaefcfb1bceb # Parent 7e1163aab210bbe9fd37fa2e69970c308d380aaa diff --git a/src/sim/drain.cc b/src/sim/drain.cc --- 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 @@ 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(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");