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:
parent
ebc9e1d426
commit
38a369c473
1 changed files with 10 additions and 2 deletions
|
@ -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");
|
||||
|
|
Loading…
Reference in a new issue