diff options
author | Andreas Sandberg <andreas@sandberg.pp.se> | 2015-11-27 14:41:59 +0000 |
---|---|---|
committer | Andreas Sandberg <andreas@sandberg.pp.se> | 2015-11-27 14:41:59 +0000 |
commit | 5383e1ada49b59daf4ff8703076923d4ccb6207d (patch) | |
tree | 3a3dd8f95be7cf5546a5c2d1e4e58107ae2c03a0 /src/dev/arm | |
parent | fed0ea55c476d9843e3f07e4f879254d34d99279 (diff) | |
download | gem5-5383e1ada49b59daf4ff8703076923d4ccb6207d.tar.xz |
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>
Diffstat (limited to 'src/dev/arm')
-rw-r--r-- | src/dev/arm/hdlcd.cc | 4 | ||||
-rw-r--r-- | src/dev/arm/hdlcd.hh | 3 | ||||
-rw-r--r-- | src/dev/arm/pl111.cc | 7 | ||||
-rw-r--r-- | src/dev/arm/pl111.hh | 3 |
4 files changed, 10 insertions, 7 deletions
diff --git a/src/dev/arm/hdlcd.cc b/src/dev/arm/hdlcd.cc index 2c402b00a..b04de21bf 100644 --- a/src/dev/arm/hdlcd.cc +++ b/src/dev/arm/hdlcd.cc @@ -544,8 +544,8 @@ HDLcd::pxlFrameDone() } assert(pic); - pic->seekp(0); - bmp.write(*pic); + pic->stream()->seekp(0); + bmp.write(*pic->stream()); } } diff --git a/src/dev/arm/hdlcd.hh b/src/dev/arm/hdlcd.hh index 721935457..acce6f191 100644 --- a/src/dev/arm/hdlcd.hh +++ b/src/dev/arm/hdlcd.hh @@ -81,6 +81,7 @@ #include "base/bitmap.hh" #include "base/framebuffer.hh" +#include "base/output.hh" #include "dev/arm/amba_device.hh" #include "dev/pixelpump.hh" #include "sim/serialize.hh" @@ -347,7 +348,7 @@ class HDLcd: public AmbaDmaDevice Bitmap bmp; /** Picture of what the current frame buffer looks like */ - std::ostream *pic; + OutputStream *pic; /** Cached pixel converter, set when the converter is enabled. */ PixelConverter conv; diff --git a/src/dev/arm/pl111.cc b/src/dev/arm/pl111.cc index 179f1bf2d..23ffe58c9 100644 --- a/src/dev/arm/pl111.cc +++ b/src/dev/arm/pl111.cc @@ -523,11 +523,12 @@ Pl111::dmaDone() DPRINTF(PL111, "-- write out frame buffer into bmp\n"); if (!pic) - pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true); + pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), + true); assert(pic); - pic->seekp(0); - bmp.write(*pic); + pic->stream()->seekp(0); + bmp.write(*pic->stream()); } // schedule the next read based on when the last frame started diff --git a/src/dev/arm/pl111.hh b/src/dev/arm/pl111.hh index a55e8b8c3..aea78709c 100644 --- a/src/dev/arm/pl111.hh +++ b/src/dev/arm/pl111.hh @@ -51,6 +51,7 @@ #include "base/bitmap.hh" #include "base/framebuffer.hh" +#include "base/output.hh" #include "dev/arm/amba_device.hh" #include "params/Pl111.hh" #include "sim/serialize.hh" @@ -268,7 +269,7 @@ class Pl111: public AmbaDmaDevice Bitmap bmp; /** Picture of what the current frame buffer looks like */ - std::ostream *pic; + OutputStream *pic; /** Frame buffer width - pixels per line */ uint16_t width; |