gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
stats.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 ARM Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2006 The Regents of The University of Michigan
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  *
40  * Authors: Nathan Binkert
41  * Andreas Sandberg
42  */
43 
44 #include "pybind11/pybind11.h"
45 #include "pybind11/stl.h"
46 
47 #include "base/statistics.hh"
48 #include "base/stats/text.hh"
49 #include "sim/stat_control.hh"
50 #include "sim/stat_register.hh"
51 
52 namespace py = pybind11;
53 
54 namespace Stats {
55 
56 void
58 {
59  py::module m = py::module::import("m5.stats");
60  m.attr("dump")();
61 }
62 
63 void
65 {
66  py::module m = py::module::import("m5.stats");
67  m.attr("reset")();
68 }
69 
70 }
71 
72 void
73 pybind_init_stats(py::module &m_native)
74 {
75  py::module m = m_native.def_submodule("stats");
76 
77  m
78  .def("initSimStats", &Stats::initSimStats)
79  .def("initText", &Stats::initText, py::return_value_policy::reference)
80  .def("registerPythonStatsHandlers",
82  .def("schedStatEvent", &Stats::schedStatEvent)
83  .def("periodicStatDump", &Stats::periodicStatDump)
84  .def("updateEvents", &Stats::updateEvents)
85  .def("processResetQueue", &Stats::processResetQueue)
86  .def("processDumpQueue", &Stats::processDumpQueue)
87  .def("enable", &Stats::enable)
88  .def("enabled", &Stats::enabled)
89  .def("statsList", &Stats::statsList)
90  ;
91 
92  py::class_<Stats::Output>(m, "Output")
93  .def("begin", &Stats::Output::begin)
94  .def("end", &Stats::Output::end)
95  .def("valid", &Stats::Output::valid)
96  ;
97 
98  py::class_<Stats::Info>(m, "Info")
99  .def_readwrite("name", &Stats::Info::name)
100  .def_readonly("desc", &Stats::Info::desc)
101  .def_readonly("id", &Stats::Info::id)
102  .def_property_readonly("flags", [](const Stats::Info &info) {
103  return (Stats::FlagsType)info.flags;
104  })
105  .def("check", &Stats::Info::check)
106  .def("baseCheck", &Stats::Info::baseCheck)
107  .def("enable", &Stats::Info::enable)
108  .def("prepare", &Stats::Info::prepare)
109  .def("reset", &Stats::Info::reset)
110  .def("zero", &Stats::Info::zero)
111  .def("visit", &Stats::Info::visit)
112  ;
113 }
std::string name
The name of the stat.
Definition: info.hh:73
virtual void end()=0
void processDumpQueue()
Process all the callbacks in the dump callbacks queue.
Definition: statistics.cc:488
int id
Definition: info.hh:89
Bitfield< 0 > m
Definition: miscregs.hh:1577
void pythonDump()
Definition: stats.cc:57
virtual bool zero() const =0
virtual void enable()
Enable the stat for use.
Definition: statistics.cc:240
list< Info * > & statsList()
Definition: statistics.cc:56
void initSimStats()
virtual void prepare()=0
Prepare the stat for dumping.
Declaration of Statistics objects.
void registerPythonStatsHandlers()
Register py_...
virtual void reset()=0
Reset the stat to the default state.
void enable()
Definition: statistics.cc:508
void pythonReset()
Definition: stats.cc:64
Flags flags
The formatting flags.
Definition: info.hh:79
void periodicStatDump(Tick period)
Schedule periodic statistics dumping.
bool baseCheck() const
Definition: statistics.cc:219
bool enabled()
Definition: statistics.cc:502
uint16_t FlagsType
Definition: info.hh:39
virtual bool check() const =0
Check that this stat has been set up properly and is ready for use.
void processResetQueue()
Process all the callbacks in the reset callbacks queue.
Definition: statistics.cc:482
void updateEvents()
Update the events after resuming from a checkpoint.
virtual void begin()=0
void schedStatEvent(bool dump, bool reset, Tick when, Tick repeat)
Schedule statistics dumping.
Output * initText(const string &filename, bool desc)
Definition: text.cc:739
virtual bool valid() const =0
void pybind_init_stats(py::module &m_native)
Definition: stats.cc:73
virtual void visit(Output &visitor)=0
Visitor entry for outputing statistics data.
std::string desc
The description of the stat.
Definition: info.hh:77

Generated on Fri Jun 9 2017 13:03:43 for gem5 by doxygen 1.8.6