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

This class represents the return value from an emulated system call, including any errno setting. More...

#include <syscall_return.hh>

Public Member Functions

 SyscallReturn (int64_t v)
 For simplicity, allow the object to be initialized with a single signed integer using the same positive=success, negative=-errno convention described above. More...
 
 SyscallReturn ()
 A SyscallReturn constructed with no value means don't return anything. More...
 
 SyscallReturn (int64_t v1, int64_t v2)
 A SyscallReturn constructed with two values means put the second value in additional return registers as defined by the ABI, if they exist. More...
 
 ~SyscallReturn ()
 
bool successful () const
 Was the system call successful? More...
 
bool needsRetry () const
 Does the syscall need to be retried? More...
 
bool suppressed () const
 Should returning this value be suppressed? More...
 
int count () const
 How many values did the syscall attempt to return? More...
 
int64_t returnValue () const
 The return value. More...
 
int errnoValue () const
 The errno value. More...
 
int64_t encodedValue () const
 The encoded value (as described above) More...
 
int64_t value2 () const
 

Static Public Member Functions

static SyscallReturn retry ()
 Pseudo-constructor to create an instance with the retry flag set. More...
 

Private Attributes

int64_t _value
 
int64_t _value2
 
int _count
 
bool retryFlag = false
 

Detailed Description

This class represents the return value from an emulated system call, including any errno setting.

On some platforms, the return value and errno are encoded in a single signed integer. A value less than zero but greater than -4096 indicates an error, and the value is the negation of the errno value. Otherwise, the call was successful and the integer is the return value. (Large negative numbers are considered successful to allow syscalls to return pointers to high memory, e.g., stack addresses.) See, for example, Appendix A of the AMD64 ABI spec at http://www.x86-64.org/documentation/abi.pdf.

Other platforms use a more complex interface, returning a value and an error code in separate registers.

This class is designed to support both types of interfaces.

Definition at line 52 of file syscall_return.hh.

Constructor & Destructor Documentation

◆ SyscallReturn() [1/3]

SyscallReturn::SyscallReturn ( int64_t  v)
inline

For simplicity, allow the object to be initialized with a single signed integer using the same positive=success, negative=-errno convention described above.

Typically this constructor is used as a default type conversion, so a bare integer is used where a SyscallReturn value is expected, e.g., as the return value from a system call emulation function ('return 0;' or 'return -EFAULT;').

Definition at line 64 of file syscall_return.hh.

◆ SyscallReturn() [2/3]

SyscallReturn::SyscallReturn ( )
inline

A SyscallReturn constructed with no value means don't return anything.

Definition at line 67 of file syscall_return.hh.

◆ SyscallReturn() [3/3]

SyscallReturn::SyscallReturn ( int64_t  v1,
int64_t  v2 
)
inline

A SyscallReturn constructed with two values means put the second value in additional return registers as defined by the ABI, if they exist.

Definition at line 71 of file syscall_return.hh.

◆ ~SyscallReturn()

SyscallReturn::~SyscallReturn ( )
inline

Definition at line 84 of file syscall_return.hh.

Member Function Documentation

◆ count()

int SyscallReturn::count ( ) const
inline

◆ encodedValue()

int64_t SyscallReturn::encodedValue ( ) const
inline

◆ errnoValue()

int SyscallReturn::errnoValue ( ) const
inline

◆ needsRetry()

bool SyscallReturn::needsRetry ( ) const
inline

◆ retry()

static SyscallReturn SyscallReturn::retry ( )
inlinestatic

Pseudo-constructor to create an instance with the retry flag set.

Definition at line 77 of file syscall_return.hh.

References ArmISA::s.

Referenced by acceptFunc(), pollFunc(), readFunc(), selectFunc(), wait4Func(), and writeFunc().

◆ returnValue()

int64_t SyscallReturn::returnValue ( ) const
inline

◆ successful()

bool SyscallReturn::successful ( ) const
inline

◆ suppressed()

bool SyscallReturn::suppressed ( ) const
inline

◆ value2()

int64_t SyscallReturn::value2 ( ) const
inline

Member Data Documentation

◆ _count

int SyscallReturn::_count
private

Definition at line 124 of file syscall_return.hh.

Referenced by count(), and suppressed().

◆ _value

int64_t SyscallReturn::_value
private

Definition at line 123 of file syscall_return.hh.

Referenced by encodedValue(), errnoValue(), returnValue(), and successful().

◆ _value2

int64_t SyscallReturn::_value2
private

Definition at line 123 of file syscall_return.hh.

Referenced by value2().

◆ retryFlag

bool SyscallReturn::retryFlag = false
private

Definition at line 126 of file syscall_return.hh.

Referenced by needsRetry().


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

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