diff options
-rw-r--r-- | src/mem/ruby/system/System.cc | 15 | ||||
-rw-r--r-- | src/mem/ruby/system/System.hh | 13 |
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 |