summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/ruby/system/System.cc15
-rw-r--r--src/mem/ruby/system/System.hh13
2 files changed, 18 insertions, 10 deletions
diff --git a/src/mem/ruby/system/System.cc b/src/mem/ruby/system/System.cc
index c00082010..fd712a47a 100644
--- a/src/mem/ruby/system/System.cc
+++ b/src/mem/ruby/system/System.cc
@@ -235,7 +235,7 @@ RubySystem::writeCompressedTrace(uint8_t *raw_data, string filename,
}
void
-RubySystem::serializeOld(CheckpointOut &cp)
+RubySystem::serialize(CheckpointOut &cp) const
{
// Store the cache-block size, so we are able to restore on systems with a
// different cache-block size. CacheRecorder depends on the correct
@@ -259,10 +259,17 @@ RubySystem::serializeOld(CheckpointOut &cp)
SERIALIZE_SCALAR(cache_trace_file);
SERIALIZE_SCALAR(cache_trace_size);
+}
- // Now finished with the cache recorder.
- delete m_cache_recorder;
- m_cache_recorder = NULL;
+void
+RubySystem::drainResume()
+{
+ // Delete the cache recorder if it was created in memWriteback()
+ // to checkpoint the current cache state.
+ if (m_cache_recorder) {
+ delete m_cache_recorder;
+ m_cache_recorder = NULL;
+ }
}
void
diff --git a/src/mem/ruby/system/System.hh b/src/mem/ruby/system/System.hh
index 787e4f4ae..a7afac45c 100644
--- a/src/mem/ruby/system/System.hh
+++ b/src/mem/ruby/system/System.hh
@@ -95,8 +95,9 @@ class RubySystem : public ClockedObject
void resetStats();
void memWriteback();
- void serializeOld(CheckpointOut &cp) M5_ATTR_OVERRIDE;
+ void serialize(CheckpointOut &cp) const M5_ATTR_OVERRIDE;
void unserialize(CheckpointIn &cp) M5_ATTR_OVERRIDE;
+ void drainResume() M5_ATTR_OVERRIDE;
void process();
void startup();
bool functionalRead(Packet *ptr);
@@ -121,11 +122,11 @@ class RubySystem : public ClockedObject
uint64 cache_trace_size,
uint64 block_size_bytes);
- void readCompressedTrace(std::string filename,
- uint8_t *&raw_data,
- uint64& uncompressed_trace_size);
- void writeCompressedTrace(uint8_t *raw_data, std::string file,
- uint64 uncompressed_trace_size);
+ static void readCompressedTrace(std::string filename,
+ uint8_t *&raw_data,
+ uint64& uncompressed_trace_size);
+ static void writeCompressedTrace(uint8_t *raw_data, std::string file,
+ uint64 uncompressed_trace_size);
private:
// configuration parameters