gem5  v22.1.0.0
Public Member Functions | Protected Types | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
gem5::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 gem5::SyscallDesc:
gem5::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)
 
void retrySyscall (ThreadContext *tc)
 

Private Member Functions

void setupRetry (ThreadContext *tc)
 
void handleReturn (ThreadContext *tc, const SyscallReturn &ret)
 

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 69 of file syscall_desc.hh.

Member Typedef Documentation

◆ Dumper

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

Definition at line 92 of file syscall_desc.hh.

◆ Executor

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

Definition at line 90 of file syscall_desc.hh.

Constructor & Destructor Documentation

◆ SyscallDesc()

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

Definition at line 94 of file syscall_desc.hh.

Member Function Documentation

◆ doSyscall()

void gem5::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 42 of file syscall_desc.cc.

References gem5::auxv::Base, DPRINTF_SYSCALL, dumper, executor, handleReturn(), name(), gem5::SyscallReturn::needsRetry(), setupRetry(), and gem5::ThreadContext::suspend().

Referenced by gem5::ArmISA::EmuLinux::syscall(), and gem5::MipsISA::EmuLinux::syscall().

◆ handleReturn()

void gem5::SyscallDesc::handleReturn ( ThreadContext tc,
const SyscallReturn ret 
)
private

◆ name()

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

◆ num()

int gem5::SyscallDesc::num ( ) const
inline

Definition at line 81 of file syscall_desc.hh.

References _num.

Referenced by gem5::unimplementedFunc().

◆ retrySyscall()

void gem5::SyscallDesc::retrySyscall ( ThreadContext tc)
protected

◆ returnInto()

virtual void gem5::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 gem5::SyscallDescABI< ABI >.

Referenced by gem5::doClone(), and handleReturn().

◆ setupRetry()

void gem5::SyscallDesc::setupRetry ( ThreadContext tc)
private

Member Data Documentation

◆ _name

std::string gem5::SyscallDesc::_name
private

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

Definition at line 102 of file syscall_desc.hh.

Referenced by name().

◆ _num

int gem5::SyscallDesc::_num
private

Definition at line 103 of file syscall_desc.hh.

Referenced by num().

◆ dumper

Dumper gem5::SyscallDesc::dumper
private

Definition at line 110 of file syscall_desc.hh.

Referenced by doSyscall(), and retrySyscall().

◆ executor

Executor gem5::SyscallDesc::executor
private

Mechanism for ISAs to connect to the emul function definitions.

Definition at line 109 of file syscall_desc.hh.

Referenced by doSyscall(), and retrySyscall().


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

Generated on Wed Dec 21 2022 10:23:31 for gem5 by doxygen 1.9.1