summaryrefslogtreecommitdiff
path: root/src/arch/arm/linux
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/arch/arm/linux
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/arch/arm/linux')
-rw-r--r--src/arch/arm/linux/system.cc6
-rw-r--r--src/arch/arm/linux/system.hh2
2 files changed, 4 insertions, 4 deletions
diff --git a/src/arch/arm/linux/system.cc b/src/arch/arm/linux/system.cc
index 4b3135bfc..c22ce160f 100644
--- a/src/arch/arm/linux/system.cc
+++ b/src/arch/arm/linux/system.cc
@@ -304,15 +304,15 @@ DumpStatsPCEvent::process(ThreadContext *tc)
tc->getCpuPtr()->taskId(taskMap[pid]);
tc->getCpuPtr()->setPid(pid);
- std::ostream* taskFile = sys->taskFile;
+ OutputStream* taskFile = sys->taskFile;
// Task file is read by cache occupancy plotting script or
// Streamline conversion script.
- ccprintf(*taskFile,
+ ccprintf(*(taskFile->stream()),
"tick=%lld %d cpu_id=%d next_pid=%d next_tgid=%d next_task=%s\n",
curTick(), taskMap[pid], tc->cpuId(), (int) pid, (int) tgid,
next_task_str);
- taskFile->flush();
+ taskFile->stream()->flush();
// Dump and reset statistics
Stats::schedStatEvent(true, true, curTick(), 0);
diff --git a/src/arch/arm/linux/system.hh b/src/arch/arm/linux/system.hh
index 388c1e70a..ce1d84b6b 100644
--- a/src/arch/arm/linux/system.hh
+++ b/src/arch/arm/linux/system.hh
@@ -82,7 +82,7 @@ class LinuxArmSystem : public GenericArmSystem
/** This is a file that is placed in the run directory that prints out
* mappings between taskIds and OS process IDs */
- std::ostream* taskFile;
+ OutputStream* taskFile;
LinuxArmSystem(Params *p);
~LinuxArmSystem();