summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev/disk_image.cc3
-rw-r--r--sim/serialize.cc2
-rw-r--r--sim/serialize.hh2
3 files changed, 5 insertions, 2 deletions
diff --git a/dev/disk_image.cc b/dev/disk_image.cc
index d990d7078..f9e1c2fe3 100644
--- a/dev/disk_image.cc
+++ b/dev/disk_image.cc
@@ -425,7 +425,7 @@ CowDiskImage::write(const uint8_t *data, off_t offset)
void
CowDiskImage::serialize(ostream &os)
{
- string cowFilename = Checkpoint::dir() + name() + ".cow";
+ string cowFilename = name() + ".cow";
SERIALIZE_SCALAR(cowFilename);
save(cowFilename);
}
@@ -435,6 +435,7 @@ CowDiskImage::unserialize(Checkpoint *cp, const string &section)
{
string cowFilename;
UNSERIALIZE_SCALAR(cowFilename);
+ cowFilename = cp->cptDir + "/" + cowFilename;
open(cowFilename);
}
diff --git a/sim/serialize.cc b/sim/serialize.cc
index 945f97c06..91548f653 100644
--- a/sim/serialize.cc
+++ b/sim/serialize.cc
@@ -431,7 +431,7 @@ Serializable::create(Checkpoint *cp, const std::string &section)
Checkpoint::Checkpoint(const std::string &cpt_dir, const std::string &path,
const ConfigNode *_configNode)
- : db(new IniFile), basePath(path), configNode(_configNode)
+ : db(new IniFile), basePath(path), configNode(_configNode), cptDir(cpt_dir)
{
string filename = cpt_dir + "/" + Checkpoint::baseFilename;
if (!db->load(filename)) {
diff --git a/sim/serialize.hh b/sim/serialize.hh
index ad490d616..5df168665 100644
--- a/sim/serialize.hh
+++ b/sim/serialize.hh
@@ -210,6 +210,8 @@ class Checkpoint
Checkpoint(const std::string &cpt_dir, const std::string &path,
const ConfigNode *_configNode);
+ const std::string cptDir;
+
bool find(const std::string &section, const std::string &entry,
std::string &value);