summaryrefslogtreecommitdiff
path: root/src/dev/arm
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas@sandberg.pp.se>2015-11-27 14:41:59 +0000
committerAndreas Sandberg <andreas@sandberg.pp.se>2015-11-27 14:41:59 +0000
commit5383e1ada49b59daf4ff8703076923d4ccb6207d (patch)
tree3a3dd8f95be7cf5546a5c2d1e4e58107ae2c03a0 /src/dev/arm
parentfed0ea55c476d9843e3f07e4f879254d34d99279 (diff)
downloadgem5-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.cc4
-rw-r--r--src/dev/arm/hdlcd.hh3
-rw-r--r--src/dev/arm/pl111.cc7
-rw-r--r--src/dev/arm/pl111.hh3
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;