diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2012-05-10 18:04:26 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2012-05-10 18:04:26 -0500 |
commit | 413ba1fdaf666118c9a340d0c23c466f4b7d7fee (patch) | |
tree | 518724709eb3383ad66ea362a4ade55ccd294887 /src/base | |
parent | f6895e8bd46a1533c607fe528a2da68b64e722dc (diff) | |
download | gem5-413ba1fdaf666118c9a340d0c23c466f4b7d7fee.tar.xz |
stats: track if the stats have been enabled and prevent requesting master id
Track the point in the initialization where statistics have been registered.
After this point registering new masterIds can no longer work as some
SimObjects may have sized stats vectors based on the previous value. If someone
tries to register a masterId after this point the simulator executes fatal().
Diffstat (limited to 'src/base')
-rw-r--r-- | src/base/statistics.cc | 17 | ||||
-rw-r--r-- | src/base/statistics.hh | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/base/statistics.cc b/src/base/statistics.cc index e3f3ad78b..545d08cab 100644 --- a/src/base/statistics.cc +++ b/src/base/statistics.cc @@ -441,6 +441,23 @@ registerResetCallback(Callback *cb) resetQueue.add(cb); } +bool _enabled = false; + +bool +enabled() +{ + return _enabled; +} + +void +enable() +{ + if (_enabled) + fatal("Stats are already enabled"); + + _enabled = true; +} + } // namespace Stats void diff --git a/src/base/statistics.hh b/src/base/statistics.hh index 1f8a59326..cb63af708 100644 --- a/src/base/statistics.hh +++ b/src/base/statistics.hh @@ -3126,6 +3126,8 @@ sum(Temp val) /** Dump all statistics data to the registered outputs */ void dump(); void reset(); +void enable(); +bool enabled(); /** * Register a callback that should be called whenever statistics are |