ruby: Use the const serialize interface in RubySystem
The new serialization code (kudos to Tim Jones) moves all of the state mangling in RubySystem to memWriteback. This makes it possible to use the new const serialization interface. This changeset moves the cache recorder cleanup from the checkpoint() method to drainResume() to make checkpointing truly constant and updates the checkpointing code to use the new interface.
This commit is contained in:
parent
fc3d34a488
commit
e9d6bf5e35
2 changed files with 18 additions and 10 deletions
|
@ -235,7 +235,7 @@ RubySystem::writeCompressedTrace(uint8_t *raw_data, string filename,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
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
|
// Store the cache-block size, so we are able to restore on systems with a
|
||||||
// different cache-block size. CacheRecorder depends on the correct
|
// 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_file);
|
||||||
SERIALIZE_SCALAR(cache_trace_size);
|
SERIALIZE_SCALAR(cache_trace_size);
|
||||||
|
}
|
||||||
|
|
||||||
// Now finished with the cache recorder.
|
void
|
||||||
delete m_cache_recorder;
|
RubySystem::drainResume()
|
||||||
m_cache_recorder = NULL;
|
{
|
||||||
|
// 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
|
void
|
||||||
|
|
|
@ -95,8 +95,9 @@ class RubySystem : public ClockedObject
|
||||||
void resetStats();
|
void resetStats();
|
||||||
|
|
||||||
void memWriteback();
|
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 unserialize(CheckpointIn &cp) M5_ATTR_OVERRIDE;
|
||||||
|
void drainResume() M5_ATTR_OVERRIDE;
|
||||||
void process();
|
void process();
|
||||||
void startup();
|
void startup();
|
||||||
bool functionalRead(Packet *ptr);
|
bool functionalRead(Packet *ptr);
|
||||||
|
@ -121,11 +122,11 @@ class RubySystem : public ClockedObject
|
||||||
uint64 cache_trace_size,
|
uint64 cache_trace_size,
|
||||||
uint64 block_size_bytes);
|
uint64 block_size_bytes);
|
||||||
|
|
||||||
void readCompressedTrace(std::string filename,
|
static void readCompressedTrace(std::string filename,
|
||||||
uint8_t *&raw_data,
|
uint8_t *&raw_data,
|
||||||
uint64& uncompressed_trace_size);
|
uint64& uncompressed_trace_size);
|
||||||
void writeCompressedTrace(uint8_t *raw_data, std::string file,
|
static void writeCompressedTrace(uint8_t *raw_data, std::string file,
|
||||||
uint64 uncompressed_trace_size);
|
uint64 uncompressed_trace_size);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// configuration parameters
|
// configuration parameters
|
||||||
|
|
Loading…
Reference in a new issue