stats: create an enable phase, and a prepare phase.

Enable more or less takes the place of check, but also allows stats to
do some other configuration.  Prepare moves all of the code that readies
a stat for dumping into a separate function in preparation for supporting
serialization of certain pieces of statistics data.
While we're at it, clean up the visitor code and some of the python code.
This commit is contained in:
Nathan Binkert
2009-03-05 19:09:53 -08:00
parent 9f45fbaaa6
commit 6f787e3d36
7 changed files with 214 additions and 161 deletions

View File

@@ -27,7 +27,14 @@
# Authors: Nathan Binkert
import internal
from internal.core import initAll, regAllStats
def setOutputDir(dir):
internal.core.setOutputDir(dir)
def initAll():
internal.core.initAll()
def regAllStats():
internal.core.regAllStats()

View File

@@ -33,6 +33,8 @@ import sys
# import the SWIG-wrapped main C++ functions
import internal
import core
import stats
from main import options
import SimObject
import ticks
@@ -52,23 +54,23 @@ def instantiate(root):
ini_file.close()
# Initialize the global statistics
internal.stats.initSimStats()
stats.initSimStats()
# Create the C++ sim objects and connect ports
root.createCCObject()
root.connectPorts()
# Do a second pass to finish initializing the sim objects
internal.core.initAll()
core.initAll()
# Do a third pass to initialize statistics
internal.core.regAllStats()
core.regAllStats()
# Check to make sure that the stats package is properly initialized
internal.stats.check()
# We're done registering statistics. Enable the stats package now.
stats.enable()
# Reset to put the stats in a consistent state.
internal.stats.reset()
stats.reset()
def doDot(root):
dot = pydot.Dot()

View File

@@ -28,9 +28,6 @@
import internal
from internal.stats import dump
from internal.stats import initSimStats
from internal.stats import reset
from internal.stats import StatEvent as event
def initText(filename, desc=True, compat=True):
@@ -44,3 +41,19 @@ def initMySQL(host, database, user='', passwd='', project='test', name='test',
internal.stats.initMySQL(host, database, user, passwd, project, name,
sample)
def initSimStats():
internal.stats.initSimStats()
def enable():
internal.stats.enable()
def dump():
# Currently prepare happens in the dump, but we should maybe move
# that out.
#internal.stats.prepare()
internal.stats.dump()
def reset():
internal.stats.reset()

View File

@@ -48,7 +48,8 @@ void initMySQL(std::string host, std::string database, std::string user,
void StatEvent(bool dump, bool reset, Tick when = curTick, Tick repeat = 0);
void check();
void enable();
void prepare();
void dump();
void reset();