gem5  v20.1.0.0
Public Member Functions | Static Public Member Functions | Static Protected Member Functions | Private Types | Private Attributes | Static Private Attributes | List of all members
OutputDirectory Class Reference

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...
 
OutputStreamcreate (const std::string &name, bool binary=false, bool no_gz=false)
 Creates a file in this directory (optionally compressed). More...
 
OutputStreamopen (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...
 
OutputStreamfind (const std::string &name) const
 Finds stream associated with an open file or stdout/stderr. More...
 
OutputStreamfindOrCreate (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...
 
OutputDirectorycreateSubdirectory (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 OutputStreamcheckForStdio (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
 

Detailed Description

Interface for creating files in a gem5 output directory.

Definition at line 134 of file output.hh.

Member Typedef Documentation

◆ dir_map_t

typedef std::map<std::string, OutputDirectory *> OutputDirectory::dir_map_t
private

Output subdirectories.

Definition at line 141 of file output.hh.

◆ file_map_t

typedef std::map<std::string, OutputStream *> OutputDirectory::file_map_t
private

File names and associated stream handles.

Definition at line 138 of file output.hh.

Constructor & Destructor Documentation

◆ OutputDirectory() [1/2]

OutputDirectory::OutputDirectory ( )

Constructor.

Definition at line 117 of file output.cc.

Referenced by createSubdirectory().

◆ OutputDirectory() [2/2]

OutputDirectory::OutputDirectory ( const std::string &  name)

Constructor.

Definition at line 120 of file output.cc.

References name(), and setDirectory().

◆ ~OutputDirectory()

OutputDirectory::~OutputDirectory ( )

Destructor.

Definition at line 125 of file output.cc.

References ArmISA::f, and files.

Member Function Documentation

◆ checkForStdio()

OutputStream * OutputDirectory::checkForStdio ( const std::string &  name)
staticprotected

Determines whether given file name corresponds to standard output streams.

Parameters
namename of file to check
Returns
output stream for standard output or error stream if name corresponds to one or the other; NULL otherwise

Definition at line 134 of file output.cc.

References name(), stderr, and stdout.

Referenced by create(), and find().

◆ close()

void 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.

Parameters
fileOutputStream instance in this OutputDirectory.

Definition at line 146 of file output.cc.

References fatal, files, ArmISA::i, OutputStream::name(), stderr, stdout, and OutputStream::stream().

Referenced by VncInput::captureFrameBuffer(), Linux::DmesgDump::process(), Linux::KernelPanic::process(), PseudoInst::writefile(), SimPoint::~SimPoint(), and sc_gem5::TraceFile::~TraceFile().

◆ create()

OutputStream * 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.

Parameters
namename of file to create (without this directory's name leading it)
binarytrue to create a binary file; false otherwise
no_gztrue to disable opening the file as a gzip compressed output stream; false otherwise
Returns
OutputStream instance representing the created file

Definition at line 209 of file output.cc.

References checkForStdio(), isAbsolute(), ArmISA::mode, name(), and open().

Referenced by VncInput::captureFrameBuffer(), Pl111::dmaDone(), X86ISA::GpuTLB::exitCallback(), ComputeUnit::exitCallback(), findOrCreate(), output(), Linux::DmesgDump::process(), Linux::KernelPanic::process(), HDLcd::pxlFrameDone(), SimPoint::SimPoint(), ArmISA::FsLinux::startup(), and PseudoInst::writefile().

◆ createSubdirectory()

OutputDirectory * OutputDirectory::createSubdirectory ( const std::string &  name)

Creates a subdirectory within this directory.

Parameters
namename of subdirectory
Returns
the new subdirectory's name suffixed with a path separator

Definition at line 282 of file output.cc.

References dir, directory(), dirs, fatal, name(), OutputDirectory(), and resolve().

Referenced by VncInput::VncInput().

◆ directory()

const string & OutputDirectory::directory ( ) const

Gets name of this directory.

Returns
name of this directory

Definition at line 194 of file output.cc.

References dir, and panic.

Referenced by createSubdirectory(), and remove().

◆ find()

OutputStream * OutputDirectory::find ( const std::string &  name) const

Finds stream associated with an open file or stdout/stderr.

Parameters
nameof file
Returns
stream to specified file or NULL if file does not exist

Definition at line 246 of file output.cc.

References checkForStdio(), files, ArmISA::i, and name().

Referenced by findOrCreate(), isFile(), and output().

◆ findOrCreate()

OutputStream * OutputDirectory::findOrCreate ( const std::string &  name,
bool  binary = false 
)

Definition at line 261 of file output.cc.

References create(), find(), name(), and X86ISA::os.

Referenced by Stats::initText(), and Terminal::terminalDump().

◆ isAbsolute()

static bool OutputDirectory::isAbsolute ( const std::string &  name)
inlinestatic

Test if a path is absolute.

Definition at line 274 of file output.hh.

References name(), and PATH_SEPARATOR.

Referenced by create(), resolve(), and VirtIO9PDiod::startDiod().

◆ isFile()

bool OutputDirectory::isFile ( const std::string &  name) const

Determines whether a file name corresponds to a file in this directory.

Parameters
namename of file to evaluate
Returns
true iff file has been opened in this directory or exists on the file system within this directory

Definition at line 271 of file output.cc.

References find(), name(), and ArmISA::st.

Referenced by remove().

◆ open()

OutputStream * 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.

Parameters
filenamefile to open
modeattributes to open file with
recreateableSet to true if the file can be recreated in a new location.
no_gztrue to disable opening the file as a gzip compressed output stream; false otherwise
Returns
OutputStream instance representing the opened file

Definition at line 223 of file output.cc.

References files, ArmISA::mode, name(), and X86ISA::os.

Referenced by create(), and PseudoInst::writefile().

◆ remove()

void 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).

Parameters
namename of file or subdirectory to remove; name should not be prepended with the name of this directory object
recursiveset to true to attempt to recursively delete a subdirectory and its contents

Definition at line 295 of file output.cc.

References X86ISA::de, directory(), fatal, files, ArmISA::i, isFile(), name(), PATH_SEPARATOR, and resolve().

Referenced by VncInput::VncInput().

◆ resolve()

string OutputDirectory::resolve ( const std::string &  name) const

Returns relative file names prepended with name of this directory.

Returns absolute file names unaltered.

Parameters
namefile name to prepend with directory name
Returns
file name prepended with base directory name or unaltered absolute file name

Definition at line 203 of file output.cc.

References dir, isAbsolute(), and name().

Referenced by createSubdirectory(), Trace::InstPBTrace::createTraceFile(), Stats::initHDF5(), MemTraceProbe::MemTraceProbe(), FDArray::openOutputFile(), OutputFile< StreamType >::OutputFile(), OutputFile< StreamType >::relocate(), remove(), and VirtIO9PDiod::startDiod().

◆ setDirectory()

void OutputDirectory::setDirectory ( const std::string &  dir)

Sets name of this directory.

Parameters
dirname of this directory

Definition at line 163 of file output.cc.

References ArmISA::d, dir, dirs, fatal, files, ArmISA::i, and PATH_SEPARATOR.

Referenced by OutputDirectory(), and setOutputDir().

Member Data Documentation

◆ dir

std::string OutputDirectory::dir
private

Name of this directory.

Definition at line 150 of file output.hh.

Referenced by createSubdirectory(), directory(), resolve(), and setDirectory().

◆ dirs

dir_map_t OutputDirectory::dirs
private

Output sub-directories.

Definition at line 147 of file output.hh.

Referenced by createSubdirectory(), and setDirectory().

◆ files

file_map_t OutputDirectory::files
private

Open file streams within this directory.

Definition at line 144 of file output.hh.

Referenced by close(), find(), open(), remove(), setDirectory(), and ~OutputDirectory().

◆ PATH_SEPARATOR

const char OutputDirectory::PATH_SEPARATOR = '/'
staticprivate

System-specific path separator character.

Definition at line 153 of file output.hh.

Referenced by isAbsolute(), remove(), and setDirectory().

◆ stderr

OutputStream OutputDirectory::stderr
staticprivate

Definition at line 156 of file output.hh.

Referenced by checkForStdio(), and close().

◆ stdout

OutputStream OutputDirectory::stdout
staticprivate

Definition at line 155 of file output.hh.

Referenced by checkForStdio(), and close().


The documentation for this class was generated from the following files:

Generated on Wed Sep 30 2020 14:02:28 for gem5 by doxygen 1.8.17