Take the name of the checkpoint directory in when calling checkpoint() or restoreCheckpoint().
src/sim/main.cc: src/sim/serialize.cc: src/sim/serialize.hh: Take in the directory name when checkpointing. --HG-- extra : convert_revision : 040e828622480f1051e2156f4439e24864c38d45
This commit is contained in:
parent
018ba50f2c
commit
1faada9bd9
4 changed files with 18 additions and 16 deletions
|
@ -34,7 +34,7 @@ import cc_main
|
|||
# import a few SWIG-wrapped items (those that are likely to be used
|
||||
# directly by user scripts) completely into this module for
|
||||
# convenience
|
||||
from cc_main import simulate, SimLoopExitEvent, setCheckpointDir
|
||||
from cc_main import simulate, SimLoopExitEvent
|
||||
|
||||
# import the m5 compile options
|
||||
import defines
|
||||
|
@ -239,17 +239,17 @@ def drain(root):
|
|||
def resume(root):
|
||||
root.resume()
|
||||
|
||||
def checkpoint(root):
|
||||
def checkpoint(root, dir):
|
||||
if not isinstance(root, objects.Root):
|
||||
raise TypeError, "Object is not a root object. Checkpoint must be called on a root object."
|
||||
doDrain(root)
|
||||
print "Writing checkpoint"
|
||||
cc_main.serializeAll()
|
||||
cc_main.serializeAll(dir)
|
||||
resume(root)
|
||||
|
||||
def restoreCheckpoint(root):
|
||||
def restoreCheckpoint(root, dir):
|
||||
print "Restoring from checkpoint"
|
||||
cc_main.unserializeAll()
|
||||
cc_main.unserializeAll(dir)
|
||||
resume(root)
|
||||
|
||||
def changeToAtomic(system):
|
||||
|
|
|
@ -542,15 +542,15 @@ cleanupCountedDrain(Event *counted_drain)
|
|||
}
|
||||
|
||||
void
|
||||
serializeAll()
|
||||
serializeAll(const std::string &cpt_dir)
|
||||
{
|
||||
Serializable::serializeAll();
|
||||
Serializable::serializeAll(cpt_dir);
|
||||
}
|
||||
|
||||
void
|
||||
unserializeAll()
|
||||
unserializeAll(const std::string &cpt_dir)
|
||||
{
|
||||
Serializable::unserializeAll();
|
||||
Serializable::unserializeAll(cpt_dir);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -231,8 +231,9 @@ Globals::unserialize(Checkpoint *cp)
|
|||
}
|
||||
|
||||
void
|
||||
Serializable::serializeAll()
|
||||
Serializable::serializeAll(const std::string &cpt_dir)
|
||||
{
|
||||
setCheckpointDir(cpt_dir);
|
||||
string dir = Checkpoint::dir();
|
||||
if (mkdir(dir.c_str(), 0775) == -1 && errno != EEXIST)
|
||||
fatal("couldn't mkdir %s\n", dir);
|
||||
|
@ -247,8 +248,9 @@ Serializable::serializeAll()
|
|||
}
|
||||
|
||||
void
|
||||
Serializable::unserializeAll()
|
||||
Serializable::unserializeAll(const std::string &cpt_dir)
|
||||
{
|
||||
setCheckpointDir(cpt_dir);
|
||||
string dir = Checkpoint::dir();
|
||||
string cpt_file = dir + Checkpoint::baseFilename;
|
||||
string section = "";
|
||||
|
@ -289,9 +291,9 @@ Checkpoint::dir()
|
|||
}
|
||||
|
||||
void
|
||||
debug_serialize()
|
||||
debug_serialize(const std::string &cpt_dir)
|
||||
{
|
||||
Serializable::serializeAll();
|
||||
Serializable::serializeAll(cpt_dir);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -126,8 +126,8 @@ class Serializable
|
|||
static int ckptCount;
|
||||
static int ckptMaxCount;
|
||||
static int ckptPrevCount;
|
||||
static void serializeAll();
|
||||
static void unserializeAll();
|
||||
static void serializeAll(const std::string &cpt_dir);
|
||||
static void unserializeAll(const std::string &cpt_dir);
|
||||
static void unserializeGlobals(Checkpoint *cp);
|
||||
};
|
||||
|
||||
|
@ -206,7 +206,7 @@ SerializableClass the##OBJ_CLASS##Class(CLASS_NAME, \
|
|||
OBJ_CLASS::createForUnserialize);
|
||||
|
||||
void
|
||||
setCheckpointName(const std::string &name);
|
||||
setCheckpointDir(const std::string &name);
|
||||
|
||||
class Checkpoint
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue