From 5383e1ada49b59daf4ff8703076923d4ccb6207d Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Fri, 27 Nov 2015 14:41:59 +0000 Subject: 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 [sascha.bischoff@arm.com: Rebased patches onto a newer gem5 version] Signed-off-by: Sascha Bischoff Signed-off-by: Andreas Sandberg --- src/arch/arm/linux/system.cc | 6 +++--- src/arch/arm/linux/system.hh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/arch/arm') 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(); -- cgit v1.2.3