gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 ()
 
bool successful () const
 Was the system call successful? More...
 
bool needsRetry () const
 Does the syscall need to be retried? 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...
 

Static Public Member Functions

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

Private Attributes

int64_t value
 
bool retryFlag
 

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 54 of file syscall_return.hh.

Constructor & Destructor Documentation

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 66 of file syscall_return.hh.

SyscallReturn::~SyscallReturn ( )
inline

Definition at line 78 of file syscall_return.hh.

Member Function Documentation

int64_t SyscallReturn::encodedValue ( ) const
inline
int SyscallReturn::errnoValue ( ) const
inline
bool SyscallReturn::needsRetry ( ) const
inline

Does the syscall need to be retried?

Definition at line 87 of file syscall_return.hh.

References retryFlag.

Referenced by SyscallDesc::doSyscall().

static SyscallReturn SyscallReturn::retry ( )
inlinestatic

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

Definition at line 71 of file syscall_return.hh.

References retryFlag, and ArmISA::s.

int64_t SyscallReturn::returnValue ( ) const
inline
bool SyscallReturn::successful ( ) const
inline

Member Data Documentation

bool SyscallReturn::retryFlag
private

Definition at line 113 of file syscall_return.hh.

Referenced by needsRetry(), and retry().

int64_t SyscallReturn::value
private

Definition at line 111 of file syscall_return.hh.

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


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

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