base: Add support for changing output directories

This changeset adds support for changing the simulator output
directory. This can be useful when the simulation goes through several
stages (e.g., a warming phase, a simulation phase, and a verification
phase) since it allows the output from each stage to be located in a
different directory. Relocation is done by calling core.setOutputDir()
from Python or simout.setOutputDirectory() from C++.

This change affects several parts of the design of the gem5's output
subsystem. First, files returned by an OutputDirectory instance (e.g.,
simout) are of the type OutputStream instead of a std::ostream. This
allows us to do some more book keeping and control re-opening of files
when the output directory is changed. Second, new subdirectories are
OutputDirectory instances, which should be used to create files in
that sub-directory.

Signed-off-by: Andreas Sandberg <andreas@sandberg.pp.se>
[sascha.bischoff@arm.com: Rebased patches onto a newer gem5 version]
Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com>
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
Andreas Sandberg
2015-11-27 14:41:59 +00:00
parent fed0ea55c4
commit 5383e1ada4
21 changed files with 361 additions and 170 deletions

View File

@@ -38,12 +38,12 @@
inline void
output(const char *filename)
{
std::ostream *file_stream = simout.find(filename);
OutputStream *file_stream = simout.find(filename);
if (!file_stream)
file_stream = simout.create(filename);
Trace::setDebugLogger(new Trace::OstreamLogger(*file_stream));
Trace::setDebugLogger(new Trace::OstreamLogger(*file_stream->stream()));
}
inline void