gem5  v21.1.0.2
Public Member Functions | Protected Types | Protected 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)
 

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 91 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 41 of file syscall_desc.cc.

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

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

◆ 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().

◆ 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::cloneFunc().

Member Data Documentation

◆ _name

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

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

Definition at line 100 of file syscall_desc.hh.

Referenced by name().

◆ _num

int gem5::SyscallDesc::_num
private

Definition at line 101 of file syscall_desc.hh.

Referenced by num().

◆ dumper

Dumper gem5::SyscallDesc::dumper
private

Definition at line 105 of file syscall_desc.hh.

Referenced by doSyscall().

◆ executor

Executor gem5::SyscallDesc::executor
private

Mechanism for ISAs to connect to the emul function definitions.

Definition at line 104 of file syscall_desc.hh.

Referenced by doSyscall().


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

Generated on Tue Sep 21 2021 12:28:14 for gem5 by doxygen 1.8.17