summaryrefslogtreecommitdiff
path: root/src/mem/ruby/recorder
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/ruby/recorder')
-rw-r--r--src/mem/ruby/recorder/SConscript2
-rw-r--r--src/mem/ruby/recorder/Tracer.cc28
-rw-r--r--src/mem/ruby/recorder/Tracer.hh12
-rw-r--r--src/mem/ruby/recorder/Tracer.py7
4 files changed, 30 insertions, 19 deletions
diff --git a/src/mem/ruby/recorder/SConscript b/src/mem/ruby/recorder/SConscript
index ef78faed4..ef4f4ef05 100644
--- a/src/mem/ruby/recorder/SConscript
+++ b/src/mem/ruby/recorder/SConscript
@@ -33,6 +33,8 @@ Import('*')
if not env['RUBY']:
Return()
+SimObject('Tracer.py')
+
Source('CacheRecorder.cc')
Source('Tracer.cc')
Source('TraceRecord.cc', Werror=False)
diff --git a/src/mem/ruby/recorder/Tracer.cc b/src/mem/ruby/recorder/Tracer.cc
index a0a3b22b7..55b5efe39 100644
--- a/src/mem/ruby/recorder/Tracer.cc
+++ b/src/mem/ruby/recorder/Tracer.cc
@@ -39,10 +39,13 @@
#include "mem/ruby/system/System.hh"
//added by SS
-Tracer::Tracer(const string & name)
+Tracer::Tracer(const Params *p)
+ : SimObject(p)
{
- m_name = name;
m_enabled = false;
+ m_warmup_length = p->warmup_length;
+ assert(m_warmup_length > 0);
+ RubySystem::m_tracer_ptr = this;
}
//commented by SS
@@ -55,20 +58,8 @@ Tracer::~Tracer()
{
}
-void Tracer::init(const vector<string> & argv)
+void Tracer::init()
{
- m_warmup_length = 0;
-
- for (size_t i=0; i<argv.size(); i+=2) {
- if ( argv[i] == "warmup_length") {
- m_warmup_length = atoi(argv[i+1].c_str());
- }
- else {
- cerr << "WARNING: Tracer: Unkown configuration parameter: " << argv[i] << endl;
- assert(false);
- }
- }
- assert(m_warmup_length > 0);
}
void Tracer::startTrace(string filename)
@@ -155,3 +146,10 @@ int Tracer::playbackTrace(string filename)
void Tracer::print(ostream& out) const
{
}
+
+
+Tracer *
+RubyTracerParams::create()
+{
+ return new Tracer(this);
+}
diff --git a/src/mem/ruby/recorder/Tracer.hh b/src/mem/ruby/recorder/Tracer.hh
index 27a1c95e1..b806b7081 100644
--- a/src/mem/ruby/recorder/Tracer.hh
+++ b/src/mem/ruby/recorder/Tracer.hh
@@ -43,17 +43,22 @@
#include "mem/ruby/common/Global.hh"
#include "mem/ruby/system/NodeID.hh"
#include "mem/protocol/CacheRequestType.hh"
+#include "sim/sim_object.hh"
+
+#include "params/RubyTracer.hh"
+
#include "gzstream.hh"
template <class TYPE> class PrioHeap;
class Address;
class TraceRecord;
-class Tracer {
+class Tracer : public SimObject {
public:
// Constructors
// Tracer();
- Tracer(const string & name);
+ typedef RubyTracerParams Params;
+ Tracer(const Params *p);
// Destructor
~Tracer();
@@ -68,7 +73,7 @@ public:
// Public Class Methods
int playbackTrace(string filename);
- void init(const vector<string> & argv);
+ void init();
private:
// Private Methods
@@ -82,7 +87,6 @@ private:
//added by SS
int m_warmup_length;
- string m_name;
};
// Output operator declaration
diff --git a/src/mem/ruby/recorder/Tracer.py b/src/mem/ruby/recorder/Tracer.py
new file mode 100644
index 000000000..b47cc16ee
--- /dev/null
+++ b/src/mem/ruby/recorder/Tracer.py
@@ -0,0 +1,7 @@
+from m5.params import *
+from m5.SimObject import SimObject
+
+class RubyTracer(SimObject):
+ type = 'RubyTracer'
+ cxx_class = 'Tracer'
+ warmup_length = Param.Int(100000, "")