Deleted Added
sdiff udiff text old ( 8295:221013f9fd2f ) new ( 8296:be7f03723412 )
full compact
1# Copyright (c) 2007 The Regents of The University of Michigan
2# Copyright (c) 2010 The Hewlett-Packard Development Company
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are
7# met: redistributions of source code must retain the above copyright
8# notice, this list of conditions and the following disclaimer;

--- 13 unchanged lines hidden (view full) ---

22# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28# Authors: Nathan Binkert
29
30import m5
31
32from m5 import internal
33from m5.internal.stats import schedStatEvent as schedEvent
34from m5.objects import Root
35from m5.util import attrdict, fatal
36
37outputList = []
38def initText(filename, desc=True):
39 output = internal.stats.initText(filename, desc)
40 outputList.append(output)
41
42def initMySQL(host, database, user='', passwd='', project='test', name='test',
43 sample='0'):
44 if not user:
45 import getpass
46 user = getpass.getuser()
47
48 output = internal.stats.initMySQL(host, database, user, passwd,
49 project, name, sample)
50 outputList.append(output)
51
52def initSimStats():
53 internal.stats.initSimStats()
54
55names = []
56stats_dict = {}
57stats_list = []
58raw_stats_list = []

--- 11 unchanged lines hidden (view full) ---

70 val = cast(stat)
71 if val is not None:
72 stats_list.append(val)
73 raw_stats_list.append(val)
74 break
75 else:
76 fatal("unknown stat type %s", stat)
77
78 for stat in stats_list:
79 if not stat.check() or not stat.baseCheck():
80 fatal("stat check failed for '%s' %d\n", stat.name, stat.id)
81
82 if not (stat.flags & flags.display):
83 stat.name = "__Stat%06d" % stat.id
84
85 def less(stat1, stat2):
86 v1 = stat1.name.split('.')
87 v2 = stat2.name.split('.')
88 return v1 < v2
89
90 stats_list.sort(less)
91 for stat in stats_list:
92 stats_dict[stat.name] = stat
93 stat.enable()
94
95def prepare():
96 '''Prepare all stats for data access. This must be done before
97 dumping and serialization.'''
98
99 for stat in stats_list:
100 stat.prepare()
101
102lastDump = 0
103def dump():
104 '''Dump all statistics data to the registered outputs'''
105
106 curTick = m5.curTick()
107
108 global lastDump
109 assert lastDump <= curTick
110 if lastDump == curTick:
111 return
112 lastDump = curTick
113
114 prepare()
115
116 for output in outputList:
117 if output.valid():
118 output.begin()
119 for stat in stats_list:
120 output.visit(stat)
121 output.end()
122
123def reset():
124 '''Reset all statistics to the base state'''
125
126 # call reset stats on all SimObjects
127 root = Root.getInstance()
128 if root:
129 for obj in root.descendants(): obj.resetStats()
130
131 # call any other registered stats reset callbacks
132 for stat in stats_list:
133 stat.reset()
134
135 internal.stats.processResetQueue()
136
137flags = attrdict({
138 'none' : 0x0000,
139 'init' : 0x0001,
140 'display' : 0x0002,
141 'total' : 0x0010,
142 'pdf' : 0x0020,
143 'cdf' : 0x0040,
144 'dist' : 0x0080,
145 'nozero' : 0x0100,
146 'nonan' : 0x0200,
147})