gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 139 of file output.hh.

Member Typedef Documentation

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

Output subdirectories.

Definition at line 146 of file output.hh.

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

File names and associated stream handles.

Definition at line 143 of file output.hh.

Constructor & Destructor Documentation

OutputDirectory::OutputDirectory ( )

Constructor.

Definition at line 119 of file output.cc.

Referenced by createSubdirectory().

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

Constructor.

Definition at line 122 of file output.cc.

References setDirectory().

OutputDirectory::~OutputDirectory ( )

Destructor.

Definition at line 127 of file output.cc.

References ArmISA::f, and files.

Member Function Documentation

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 136 of file output.cc.

References stderr, and stdout.

Referenced by create(), and find().

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 148 of file output.cc.

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

Referenced by VncInput::captureFrameBuffer(), O3ThreadState< Impl >::dumpFuncProfile(), SimpleThread::dumpFuncProfile(), Linux::DmesgDumpEvent::process(), Linux::KernelPanicEvent::process(), PseudoInst::writefile(), and SimPoint::~SimPoint().

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 206 of file output.cc.

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

Referenced by VncInput::captureFrameBuffer(), Pl111::dmaDone(), O3ThreadState< Impl >::dumpFuncProfile(), SimpleThread::dumpFuncProfile(), X86ISA::GpuTLB::exitCallback(), findOrCreate(), output(), Linux::DmesgDumpEvent::process(), Linux::KernelPanicEvent::process(), ComputeUnit::CUExitCallback::process(), HDLcd::pxlFrameDone(), SimPoint::SimPoint(), LinuxArmSystem::startup(), and PseudoInst::writefile().

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 279 of file output.cc.

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

Referenced by VncInput::VncInput().

const string & OutputDirectory::directory ( ) const

Gets name of this directory.

Returns
name of this directory

Definition at line 191 of file output.cc.

References dir, and panic.

Referenced by createSubdirectory(), and remove().

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 243 of file output.cc.

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

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

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

Definition at line 258 of file output.cc.

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

Referenced by Stats::initText().

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

Test if a path is absolute.

Definition at line 279 of file output.hh.

References PATH_SEPARATOR.

Referenced by create(), and resolve().

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 268 of file output.cc.

References find(), and ArmISA::st.

Referenced by remove().

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 220 of file output.cc.

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

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

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 292 of file output.cc.

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

Referenced by VncInput::VncInput().

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 200 of file output.cc.

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

Referenced by createSubdirectory(), Trace::InstPBTrace::createTraceFile(), ElasticTrace::ElasticTrace(), MemTraceProbe::MemTraceProbe(), OutputFile< StreamType >::OutputFile(), OutputFile< StreamType >::relocate(), and remove().

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

Sets name of this directory.

Parameters
dirname of this directory

Definition at line 160 of file output.cc.

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

Referenced by OutputDirectory(), and setOutputDir().

Member Data Documentation

std::string OutputDirectory::dir
private

Name of this directory.

Definition at line 155 of file output.hh.

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

dir_map_t OutputDirectory::dirs
private

Output sub-directories.

Definition at line 152 of file output.hh.

Referenced by createSubdirectory(), and setDirectory().

file_map_t OutputDirectory::files
private

Open file streams within this directory.

Definition at line 149 of file output.hh.

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

const char OutputDirectory::PATH_SEPARATOR = '/'
staticprivate

System-specific path separator character.

Definition at line 158 of file output.hh.

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

OutputStream OutputDirectory::stderr
staticprivate

Definition at line 161 of file output.hh.

Referenced by checkForStdio().

OutputStream OutputDirectory::stdout
staticprivate

Definition at line 160 of file output.hh.

Referenced by checkForStdio().


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

Generated on Fri Jun 9 2017 13:04:16 for gem5 by doxygen 1.8.6