diff options
author | Nathan Binkert <binkertn@umich.edu> | 2003-11-14 01:19:16 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2003-11-14 01:19:16 -0500 |
commit | 123d0294b5e95953866cdc79ea8018cce30132f9 (patch) | |
tree | 516051471a3bf3714ba73afba6c6dd07cd050ec3 /sim | |
parent | 0bd909277d1619d5e40444e5b7a9d59bbae9bc19 (diff) | |
download | gem5-123d0294b5e95953866cdc79ea8018cce30132f9.tar.xz |
Make it so that we create a directory for each checkpoint so that
there aren't so many files littering your directory
dev/disk_image.cc:
Checkpoints now in a directory
sim/serialize.hh:
Make it so that we create a directory for each checkpoint so that
there aren't so many files littering your directory.
Remove unused variable
--HG--
extra : convert_revision : 261824eee62f7b68f6ae6e3dbd49ad5128ced148
Diffstat (limited to 'sim')
-rw-r--r-- | sim/serialize.cc | 36 | ||||
-rw-r--r-- | sim/serialize.hh | 4 |
2 files changed, 20 insertions, 20 deletions
diff --git a/sim/serialize.cc b/sim/serialize.cc index 0eb26c31d..1fce6e7b1 100644 --- a/sim/serialize.cc +++ b/sim/serialize.cc @@ -27,23 +27,24 @@ */ #include <sys/time.h> +#include <sys/types.h> +#include <sys/stat.h> #include <fstream> #include <list> #include <string> #include <vector> +#include "base/inifile.hh" #include "base/misc.hh" #include "base/str.hh" - +#include "base/trace.hh" +#include "sim/config_node.hh" #include "sim/eventq.hh" #include "sim/param.hh" #include "sim/serialize.hh" -#include "base/inifile.hh" #include "sim/sim_events.hh" #include "sim/sim_object.hh" -#include "base/trace.hh" -#include "sim/config_node.hh" using namespace std; @@ -252,8 +253,11 @@ Serializer::serialize() Serializeable::serializer = this; - file = CheckpointFile(); - string cpt_file = file + ".cpt"; + string dir = CheckpointDir(); + if (mkdir(dir.c_str(), 0775) == -1 && errno != EEXIST) + warn("could mkdir %s\n", dir); + + string cpt_file = dir + "m5.cpt"; output = new ofstream(cpt_file.c_str()); time_t t = time(NULL); *output << "// checkpoint generated: " << ctime(&t); @@ -279,13 +283,11 @@ Serializer::serialize() delete output; output = NULL; - file = ""; } class SerializeEvent : public Event { protected: - string file; Tick repeat; public: @@ -314,15 +316,15 @@ SerializeEvent::process() schedule(curTick + repeat); } -string __CheckpointFileBase; +string __CheckpointDirBase; string -CheckpointFile() +CheckpointDir() { - if (__CheckpointFileBase.empty()) - return __CheckpointFileBase; + if (__CheckpointDirBase.empty()) + return __CheckpointDirBase; - return csprintf("%s.%d", __CheckpointFileBase, curTick); + return csprintf("%s/m5.%012d/", __CheckpointDirBase, curTick); } void @@ -344,9 +346,9 @@ class SerializeParamContext : public ParamContext SerializeParamContext serialParams("serialize"); -Param<string> serialize_file(&serialParams, - "file", - "file to write to", "m5"); +Param<string> serialize_dir(&serialParams, + "dir", + "dir to stick checkpoint in", "."); Param<Counter> serialize_cycle(&serialParams, "cycle", @@ -371,7 +373,7 @@ SerializeParamContext::~SerializeParamContext() void SerializeParamContext::checkParams() { - __CheckpointFileBase = serialize_file; + __CheckpointDirBase = serialize_dir; if (serialize_cycle > 0) SetupCheckpoint(serialize_cycle, serialize_period); } diff --git a/sim/serialize.hh b/sim/serialize.hh index 09e91d816..bc40d0ad2 100644 --- a/sim/serialize.hh +++ b/sim/serialize.hh @@ -135,7 +135,6 @@ class Serializer protected: typedef std::list<Serializeable *> serlist_t; serlist_t objects; - std::string file; std::ostream *output; std::ostream &out() const; @@ -149,7 +148,6 @@ class Serializer public: void serialize(); - const std::string &filename() const { return file; } }; // @@ -253,7 +251,7 @@ class Checkpoint // Export checkpoint filename param so other objects can derive // filenames from it (e.g., memory). // -std::string CheckpointFile(); +std::string CheckpointDir(); void SetupCheckpoint(Tick when, Tick period = 0); #endif // __SERIALIZE_HH__ |