gem5  v20.0.0.2
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ArmSemihosting::File Class Reference

#include <semihosting.hh>

Inheritance diagram for ArmSemihosting::File:
ArmSemihosting::FileBase Serializable

Public Member Functions

 File (ArmSemihosting &_parent, const char *name, const char *mode)
 
 ~File ()
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
int64_t open () override
 Open the the file. More...
 
int64_t close () override
 Close the file. More...
 
bool isTTY () const override
 Check if a file corresponds to a TTY device. More...
 
int64_t read (uint8_t *buffer, uint64_t size) override
 Read data from file. More...
 
int64_t write (const uint8_t *buffer, uint64_t size) override
 Write data to file. More...
 
int64_t seek (uint64_t pos) override
 Seek to an absolute position in the file. More...
 
int64_t flen () override
 Get the length of a file in bytes. More...
 
- Public Member Functions inherited from ArmSemihosting::FileBase
 FileBase (ArmSemihosting &_parent, const char *name, const char *_mode)
 
virtual ~FileBase ()
 
 FileBase ()=delete
 
 FileBase (FileBase &)=delete
 
const std::string & fileName ()
 
- Public Member Functions inherited from Serializable
 Serializable ()
 
virtual ~Serializable ()
 
void serializeSection (CheckpointOut &cp, const char *name) const
 Serialize an object into a new section. More...
 
void serializeSection (CheckpointOut &cp, const std::string &name) const
 
void unserializeSection (CheckpointIn &cp, const char *name)
 Unserialize an a child object. More...
 
void unserializeSection (CheckpointIn &cp, const std::string &name)
 

Protected Member Functions

int64_t openImpl (bool unserialize)
 
bool needClose () const
 

Protected Attributes

FILE * file
 
- Protected Attributes inherited from ArmSemihosting::FileBase
ArmSemihostingparent
 
std::string _name
 
std::string mode
 

Additional Inherited Members

- Static Public Member Functions inherited from ArmSemihosting::FileBase
static std::unique_ptr< FileBasecreate (ArmSemihosting &parent, const std::string &fname, const char *mode)
 
static std::unique_ptr< FileBasecreate (ArmSemihosting &parent, CheckpointIn &cp, const std::string &sec)
 
- Static Public Member Functions inherited from Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 
static void unserializeGlobals (CheckpointIn &cp)
 

Detailed Description

Definition at line 366 of file semihosting.hh.

Constructor & Destructor Documentation

◆ File()

ArmSemihosting::File::File ( ArmSemihosting _parent,
const char *  name,
const char *  mode 
)

Definition at line 873 of file semihosting.cc.

◆ ~File()

ArmSemihosting::File::~File ( )

Definition at line 880 of file semihosting.cc.

References close(), and file.

Member Function Documentation

◆ close()

int64_t ArmSemihosting::File::close ( )
overridevirtual

Close the file.

Returns
<0 on error (-errno), 0 on success.

Reimplemented from ArmSemihosting::FileBase.

Definition at line 916 of file semihosting.cc.

References file, needClose(), and panic_if.

Referenced by ~File().

◆ flen()

int64_t ArmSemihosting::File::flen ( )
overridevirtual

Get the length of a file in bytes.

Returns
<0 on error (-errno), length on success

Reimplemented from ArmSemihosting::FileBase.

Definition at line 980 of file semihosting.cc.

References file, and ArmISA::len.

◆ isTTY()

bool ArmSemihosting::File::isTTY ( ) const
overridevirtual

Check if a file corresponds to a TTY device.

Returns
True if the file is a TTY, false otherwise.

Reimplemented from ArmSemihosting::FileBase.

Definition at line 929 of file semihosting.cc.

References file, ArmSemihosting::FileBase::parent, ArmSemihosting::stderr, ArmSemihosting::stdin, and ArmSemihosting::stdout.

Referenced by serialize(), and unserialize().

◆ needClose()

bool ArmSemihosting::File::needClose ( ) const
inlineprotected

Definition at line 385 of file semihosting.hh.

Referenced by close().

◆ open()

int64_t ArmSemihosting::File::open ( )
inlineoverridevirtual

Open the the file.

Semihosting file IO interfaces

These interfaces implement common IO functionality in the Semihosting interface.

All functions return a negative value that corresponds to a UNIX errno value when they fail and >=0 on success.

Returns
<0 on error (-errno), 0 on success.

Reimplemented from ArmSemihosting::FileBase.

Definition at line 375 of file semihosting.hh.

◆ openImpl()

int64_t ArmSemihosting::File::openImpl ( bool  unserialize)
protected

◆ read()

int64_t ArmSemihosting::File::read ( uint8_t *  buffer,
uint64_t  size 
)
overridevirtual

Read data from file.

Returns
<0 on error (-errno), bytes read on success (0 for EOF).

Reimplemented from ArmSemihosting::FileBase.

Definition at line 937 of file semihosting.cc.

References file, and panic_if.

◆ seek()

int64_t ArmSemihosting::File::seek ( uint64_t  pos)
overridevirtual

Seek to an absolute position in the file.

Parameters
posByte offset from start of file.
Returns
<0 on error (-errno), 0 on success.

Reimplemented from ArmSemihosting::FileBase.

Definition at line 968 of file semihosting.cc.

References file, and panic_if.

◆ serialize()

void ArmSemihosting::File::serialize ( CheckpointOut cp) const
overridevirtual

Serialize an object.

Output an object's state into the current checkpoint section.

Parameters
cpCheckpoint state

Reimplemented from ArmSemihosting::FileBase.

Definition at line 1002 of file semihosting.cc.

References file, isTTY(), panic_if, ArmSemihosting::FileBase::serialize(), and SERIALIZE_SCALAR.

◆ unserialize()

void ArmSemihosting::File::unserialize ( CheckpointIn cp)
overridevirtual

Unserialize an object.

Read an object's state from the current checkpoint section.

Parameters
cpCheckpoint state

Reimplemented from ArmSemihosting::FileBase.

Definition at line 1014 of file semihosting.cc.

References ArmSemihosting::FileBase::_name, fatal, file, isTTY(), openImpl(), ArmSemihosting::FileBase::unserialize(), and UNSERIALIZE_SCALAR.

◆ write()

int64_t ArmSemihosting::File::write ( const uint8_t *  buffer,
uint64_t  size 
)
overridevirtual

Write data to file.

Returns
<0 on error (-errno), bytes written on success.

Reimplemented from ArmSemihosting::FileBase.

Definition at line 952 of file semihosting.cc.

References file, and panic_if.

Member Data Documentation

◆ file

FILE* ArmSemihosting::File::file
protected

Definition at line 387 of file semihosting.hh.

Referenced by close(), flen(), isTTY(), openImpl(), read(), seek(), serialize(), unserialize(), write(), and ~File().


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

Generated on Mon Jun 8 2020 15:45:18 for gem5 by doxygen 1.8.13