gem5  v20.1.0.0
Public Member Functions | Protected Types | Protected Member Functions | Private Attributes | List of all members
SyscallDesc Class Referenceabstract

This class provides the wrapper interface for the system call implementations which are defined in the sim/syscall_emul files and bound to the ISAs in the architecture specific code (i.e. More...

#include <syscall_desc.hh>

Inheritance diagram for SyscallDesc:
SyscallDescABI< ABI >

Public Member Functions

void doSyscall (ThreadContext *tc)
 Interface for invoking the system call funcion pointer. More...
 
std::string name () const
 
int num () const
 
virtual void returnInto (ThreadContext *tc, const SyscallReturn &ret)=0
 For use within the system call executor if new threads are created and need something returned into them. More...
 

Protected Types

using Executor = std::function< SyscallReturn(SyscallDesc *, ThreadContext *)>
 
using Dumper = std::function< std::string(std::string, ThreadContext *)>
 

Protected Member Functions

 SyscallDesc (int num, const char *name, Executor exec, Dumper dump)
 

Private Attributes

std::string _name
 System call name (e.g., open, mmap, clone, socket, etc.) More...
 
int _num
 
Executor executor
 Mechanism for ISAs to connect to the emul function definitions. More...
 
Dumper dumper
 

Detailed Description

This class provides the wrapper interface for the system call implementations which are defined in the sim/syscall_emul files and bound to the ISAs in the architecture specific code (i.e.

arch/X86/linux/process.cc).

Definition at line 66 of file syscall_desc.hh.

Member Typedef Documentation

◆ Dumper

using SyscallDesc::Dumper = std::function<std::string(std::string, ThreadContext *)>
protected

Definition at line 88 of file syscall_desc.hh.

◆ Executor

using SyscallDesc::Executor = std::function<SyscallReturn(SyscallDesc *, ThreadContext *)>
protected

Definition at line 87 of file syscall_desc.hh.

Constructor & Destructor Documentation

◆ SyscallDesc()

SyscallDesc::SyscallDesc ( int  num,
const char *  name,
Executor  exec,
Dumper  dump 
)
inlineprotected

Definition at line 90 of file syscall_desc.hh.

Member Function Documentation

◆ doSyscall()

void SyscallDesc::doSyscall ( ThreadContext tc)

Interface for invoking the system call funcion pointer.

Note that this acts as a gateway for all system calls and serves a good point to add filters for behaviors or apply checks for all system calls.

Parameters
tcHandle for owning ThreadContext to pass information

Definition at line 38 of file syscall_desc.cc.

References DPRINTF_SYSCALL, dumper, SyscallReturn::encodedValue(), executor, name(), SyscallReturn::needsRetry(), and SyscallReturn::suppressed().

Referenced by PowerLinuxProcess::syscall(), SparcISA::SparcSolarisProcess::syscall(), MipsLinuxProcess::syscall(), RiscvLinuxProcess64::syscall(), SparcISA::Sparc32LinuxProcess::syscall(), RiscvLinuxProcess32::syscall(), SparcISA::Sparc64LinuxProcess::syscall(), ArmLinuxProcess32::syscall(), and ArmLinuxProcess64::syscall().

◆ name()

std::string SyscallDesc::name ( ) const
inline

◆ num()

int SyscallDesc::num ( ) const
inline

Definition at line 77 of file syscall_desc.hh.

References _num.

Referenced by unimplementedFunc().

◆ returnInto()

virtual void SyscallDesc::returnInto ( ThreadContext tc,
const SyscallReturn ret 
)
pure virtual

For use within the system call executor if new threads are created and need something returned into them.

Implemented in SyscallDescABI< ABI >.

Referenced by cloneFunc().

Member Data Documentation

◆ _name

std::string SyscallDesc::_name
private

System call name (e.g., open, mmap, clone, socket, etc.)

Definition at line 96 of file syscall_desc.hh.

Referenced by name().

◆ _num

int SyscallDesc::_num
private

Definition at line 97 of file syscall_desc.hh.

Referenced by num().

◆ dumper

Dumper SyscallDesc::dumper
private

Definition at line 101 of file syscall_desc.hh.

Referenced by doSyscall().

◆ executor

Executor SyscallDesc::executor
private

Mechanism for ISAs to connect to the emul function definitions.

Definition at line 100 of file syscall_desc.hh.

Referenced by doSyscall().


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

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