sim: Add additional debug information when draining

This patch adds some additional information when draining the system which
allows the user to debug which SimObject(s) in the system is failing to drain.
Only enabled for the builds with tracing enabled and is subject to the Drain
debug flag being set at runtime.
This commit is contained in:
Sascha Bischoff 2015-12-11 17:29:53 +00:00
parent ebc9e1d426
commit 38a369c473

View file

@ -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");