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:
Kevin Lim 2006-07-07 16:46:08 -04:00
parent 018ba50f2c
commit 1faada9bd9
4 changed files with 18 additions and 16 deletions

View file

@ -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):

View file

@ -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);
}
/**

View file

@ -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);
}

View file

@ -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
{