Take the name of the checkpoint directory in when calling checkpoint() or restoreChec...
authorKevin Lim <ktlim@umich.edu>
Fri, 7 Jul 2006 20:46:08 +0000 (16:46 -0400)
committerKevin Lim <ktlim@umich.edu>
Fri, 7 Jul 2006 20:46:08 +0000 (16:46 -0400)
src/sim/main.cc:
src/sim/serialize.cc:
src/sim/serialize.hh:
    Take in the directory name when checkpointing.

--HG--
extra : convert_revision : 040e828622480f1051e2156f4439e24864c38d45

src/python/m5/__init__.py
src/sim/main.cc
src/sim/serialize.cc
src/sim/serialize.hh

index dc3af7000389800418cca828c4c669e8aa860674..f4f5be2d1a34013dd92128547c1de2577eaa069f 100644 (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):
index e96a449307fef7d92929e4896ae0476db58500ab..5f34f6520fc22ef8ef8e53e1f5d4e905efb9f728 100644 (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);
 }
 
 /**
index 7450d7b7e0e79e4370a35354dedd1231c74ee6af..6a1d084b7b4e7d25540f6ad35581a0ffe3e74076 100644 (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);
 }
 
 
index a80dc99e4c1fec99ffded6b1799a747ebb4a7ec0..880fb0785859d85427ee31239fce4b77315752f7 100644 (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
 {