summaryrefslogtreecommitdiff
path: root/src/mem/ruby/recorder
diff options
context:
space:
mode:
authorSteve Reinhardt <steve.reinhardt@amd.com>2010-01-29 20:29:17 -0800
committerSteve Reinhardt <steve.reinhardt@amd.com>2010-01-29 20:29:17 -0800
commit98c94cfe3ce83634f3bad79ca18263f42e36ca6a (patch)
treeb299448162932c5574b87238a3b02a01efd14db6 /src/mem/ruby/recorder
parentb43994ba45b7805da0d1d9600e5cbb8332057403 (diff)
downloadgem5-98c94cfe3ce83634f3bad79ca18263f42e36ca6a.tar.xz
ruby: Convert most Ruby objects to M5 SimObjects.
The necessary companion conversion of Ruby objects generated by SLICC are converted to M5 SimObjects in the following patch, so this patch alone does not compile. Conversion of Garnet network models is also handled in a separate patch; that code is temporarily disabled from compiling to allow testing of interim code.
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, "")