|
gem5
v21.2.1.1
|
Interface for creating files in a gem5 output directory. More...
#include <output.hh>
Public Member Functions | |
| OutputDirectory () | |
| Constructor. More... | |
| OutputDirectory (const std::string &name) | |
| Constructor. More... | |
| ~OutputDirectory () | |
| Destructor. More... | |
| std::string | resolve (const std::string &name) const |
| Returns relative file names prepended with name of this directory. More... | |
| void | setDirectory (const std::string &dir) |
| Sets name of this directory. More... | |
| const std::string & | directory () const |
| Gets name of this directory. More... | |
| OutputStream * | create (const std::string &name, bool binary=false, bool no_gz=false) |
| Creates a file in this directory (optionally compressed). More... | |
| OutputStream * | open (const std::string &name, std::ios_base::openmode mode, bool recreateable=true, bool no_gz=false) |
| Open a file in this directory (optionally compressed). More... | |
| void | close (OutputStream *file) |
| Closes an output file and free the corresponding OutputFile. More... | |
| OutputStream * | find (const std::string &name) const |
| Finds stream associated with an open file or stdout/stderr. More... | |
| OutputStream * | findOrCreate (const std::string &name, bool binary=false) |
| bool | isFile (const std::string &name) const |
| Determines whether a file name corresponds to a file in this directory. More... | |
| OutputDirectory * | createSubdirectory (const std::string &name) |
| Creates a subdirectory within this directory. More... | |
| void | remove (const std::string &name, bool recursive=false) |
| Removes a specified file or subdirectory. More... | |
Static Public Member Functions | |
| static bool | isAbsolute (const std::string &name) |
| Test if a path is absolute. More... | |
Static Protected Member Functions | |
| static OutputStream * | checkForStdio (const std::string &name) |
| Determines whether given file name corresponds to standard output streams. More... | |
Private Types | |
| typedef std::map< std::string, OutputStream * > | file_map_t |
| File names and associated stream handles. More... | |
| typedef std::map< std::string, OutputDirectory * > | dir_map_t |
| Output subdirectories. More... | |
Private Attributes | |
| file_map_t | files |
| Open file streams within this directory. More... | |
| dir_map_t | dirs |
| Output sub-directories. More... | |
| std::string | dir |
| Name of this directory. More... | |
Static Private Attributes | |
| static const char | PATH_SEPARATOR = '/' |
| System-specific path separator character. More... | |
| static OutputStream | stdout |
| static OutputStream | stderr |
|
private |
|
private |
| gem5::OutputDirectory::OutputDirectory | ( | ) |
| gem5::OutputDirectory::OutputDirectory | ( | const std::string & | name | ) |
| gem5::OutputDirectory::~OutputDirectory | ( | ) |
|
staticprotected |
Determines whether given file name corresponds to standard output streams.
| name | name of file to check |
Definition at line 135 of file output.cc.
| void gem5::OutputDirectory::close | ( | OutputStream * | file | ) |
Closes an output file and free the corresponding OutputFile.
The output file must have been opened by the same OutputDirectory instance as the one closing it, or sim will fail.
| file | OutputStream instance in this OutputDirectory. |
Definition at line 147 of file output.cc.
References fatal, files, gem5::ArmISA::i, gem5::OutputStream::name(), stderr, stdout, and gem5::OutputStream::stream().
Referenced by gem5::VncInput::captureFrameBuffer(), gem5::linux::DmesgDump::process(), gem5::linux::KernelPanic::process(), gem5::pseudo_inst::writefile(), gem5::ProtocolTester::~ProtocolTester(), gem5::SimPoint::~SimPoint(), and sc_gem5::TraceFile::~TraceFile().
| OutputStream * gem5::OutputDirectory::create | ( | const std::string & | name, |
| bool | binary = false, |
||
| bool | no_gz = false |
||
| ) |
Creates a file in this directory (optionally compressed).
Will open a file as a compressed stream if filename ends in .gz, unless explicitly disabled.
Relative output paths will result in the creation of a recreateable (see OutputFile) output file in the current output directory. Files created with an absolute path will not be recreateable.
| name | name of file to create (without this directory's name leading it) |
| binary | true to create a binary file; false otherwise |
| no_gz | true to disable opening the file as a gzip compressed output stream; false otherwise |
Definition at line 210 of file output.cc.
References checkForStdio(), isAbsolute(), gem5::ArmISA::mode, name(), and open().
Referenced by gem5::VncInput::captureFrameBuffer(), gem5::Pl111::dmaDone(), gem5::X86ISA::GpuTLB::exitCallback(), gem5::ComputeUnit::exitCallback(), findOrCreate(), gem5::output(), gem5::linux::DmesgDump::process(), gem5::linux::KernelPanic::process(), gem5::ProtocolTester::ProtocolTester(), gem5::HDLcd::pxlFrameDone(), gem5::SimPoint::SimPoint(), gem5::ArmISA::FsLinux::startup(), and gem5::pseudo_inst::writefile().
| OutputDirectory * gem5::OutputDirectory::createSubdirectory | ( | const std::string & | name | ) |
Creates a subdirectory within this directory.
| name | name of subdirectory |
Definition at line 283 of file output.cc.
References dir, directory(), dirs, fatal, name(), OutputDirectory(), and resolve().
Referenced by gem5::VncInput::VncInput().
| const std::string & gem5::OutputDirectory::directory | ( | ) | const |
| OutputStream * gem5::OutputDirectory::find | ( | const std::string & | name | ) | const |
Finds stream associated with an open file or stdout/stderr.
| name | of file |
Definition at line 247 of file output.cc.
References checkForStdio(), files, gem5::ArmISA::i, and name().
Referenced by findOrCreate(), isFile(), and gem5::output().
| OutputStream * gem5::OutputDirectory::findOrCreate | ( | const std::string & | name, |
| bool | binary = false |
||
| ) |
Definition at line 262 of file output.cc.
References create(), find(), name(), and gem5::X86ISA::os.
Referenced by gem5::statistics::initText(), and gem5::Terminal::terminalDump().
|
inlinestatic |
Test if a path is absolute.
Definition at line 277 of file output.hh.
References name(), and PATH_SEPARATOR.
Referenced by create(), resolve(), and gem5::VirtIO9PDiod::startDiod().
| bool gem5::OutputDirectory::isFile | ( | const std::string & | name | ) | const |
Determines whether a file name corresponds to a file in this directory.
| name | name of file to evaluate |
Definition at line 272 of file output.cc.
References find(), name(), and gem5::ArmISA::st.
Referenced by remove().
| OutputStream * gem5::OutputDirectory::open | ( | const std::string & | name, |
| std::ios_base::openmode | mode, | ||
| bool | recreateable = true, |
||
| bool | no_gz = false |
||
| ) |
Open a file in this directory (optionally compressed).
Will open a file as a compressed stream if filename ends in .gz, unless explicitly disabled.
| filename | file to open |
| mode | attributes to open file with |
| recreateable | Set to true if the file can be recreated in a new location. |
| no_gz | true to disable opening the file as a gzip compressed output stream; false otherwise |
Definition at line 224 of file output.cc.
References files, gem5::ArmISA::mode, name(), and gem5::X86ISA::os.
Referenced by create(), and gem5::pseudo_inst::writefile().
| void gem5::OutputDirectory::remove | ( | const std::string & | name, |
| bool | recursive = false |
||
| ) |
Removes a specified file or subdirectory.
Will cause sim to fail for most errors. However, it will only warn the user if a directory could not be removed. This is in place to accommodate slow file systems where file deletions within a subdirectory may not be recognized quickly enough thereby causing the subsequent call to remove the directory to fail (seemingly unempty directory).
| name | name of file or subdirectory to remove; name should not be prepended with the name of this directory object |
| recursive | set to true to attempt to recursively delete a subdirectory and its contents |
Definition at line 296 of file output.cc.
References gem5::X86ISA::de, directory(), fatal, files, gem5::ArmISA::i, isFile(), name(), PATH_SEPARATOR, and resolve().
Referenced by gem5::VncInput::VncInput().
| std::string gem5::OutputDirectory::resolve | ( | const std::string & | name | ) | const |
Returns relative file names prepended with name of this directory.
Returns absolute file names unaltered.
| name | file name to prepend with directory name |
Definition at line 204 of file output.cc.
References dir, isAbsolute(), and name().
Referenced by gem5::ArmSemihosting::callTmpNam(), createSubdirectory(), gem5::Trace::InstPBTrace::createTraceFile(), gem5::statistics::initHDF5(), gem5::MemTraceProbe::MemTraceProbe(), gem5::FDArray::openOutputFile(), gem5::OutputFile< StreamType >::OutputFile(), gem5::OutputFile< StreamType >::relocate(), remove(), and gem5::VirtIO9PDiod::startDiod().
| void gem5::OutputDirectory::setDirectory | ( | const std::string & | dir | ) |
Sets name of this directory.
| dir | name of this directory |
Definition at line 164 of file output.cc.
References gem5::ArmISA::d, dir, dirs, fatal, files, gem5::ArmISA::i, and PATH_SEPARATOR.
Referenced by OutputDirectory(), and gem5::setOutputDir().
|
private |
Name of this directory.
Definition at line 153 of file output.hh.
Referenced by createSubdirectory(), directory(), resolve(), and setDirectory().
|
private |
Output sub-directories.
Definition at line 150 of file output.hh.
Referenced by createSubdirectory(), and setDirectory().
|
private |
Open file streams within this directory.
Definition at line 147 of file output.hh.
Referenced by close(), find(), open(), remove(), setDirectory(), and ~OutputDirectory().
|
staticprivate |
System-specific path separator character.
Definition at line 156 of file output.hh.
Referenced by isAbsolute(), remove(), and setDirectory().
|
staticprivate |
Definition at line 159 of file output.hh.
Referenced by checkForStdio(), and close().
|
staticprivate |
Definition at line 158 of file output.hh.
Referenced by checkForStdio(), and close().