Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
contur::SyscallTable Class Reference

Dispatch table mapping SyscallId to handler functions. More...

#include <syscall_table.h>

Public Types

using HandlerFn = std::function<Result<RegisterValue>(std::span<const RegisterValue>, ProcessImage &)>
 Function signature used for syscall handlers.

Public Member Functions

 SyscallTable ()
 Constructs empty syscall handler table.
 ~SyscallTable ()
 Destroys syscall handler table.
 SyscallTable (const SyscallTable &)=delete
 Copy construction is disabled.
SyscallTableoperator= (const SyscallTable &)=delete
 Copy assignment is disabled.
 SyscallTable (SyscallTable &&) noexcept
 Move-constructs syscall handler table state.
SyscallTableoperator= (SyscallTable &&) noexcept
 Move-assigns syscall handler table state.
Result< void > registerHandler (SyscallId id, HandlerFn handler)
 Registers/replaces a function handler for syscall id.
Result< void > registerHandler (SyscallId id, ISyscallHandler &handler)
 Registers/replaces an interface-based handler for syscall id.
Result< void > unregisterHandler (SyscallId id)
 Unregisters a handler for syscall id.
Result< RegisterValuedispatch (SyscallId id, std::span< const RegisterValue > args, ProcessImage &caller) const
 Dispatches syscall to registered handler.
bool hasHandler (SyscallId id) const noexcept
 Returns true when id has a registered handler.
std::size_t handlerCount () const noexcept
 Number of registered handlers.

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Dispatch table mapping SyscallId to handler functions.

Definition at line 21 of file syscall_table.h.

Member Typedef Documentation

◆ HandlerFn

using contur::SyscallTable::HandlerFn = std::function<Result<RegisterValue>(std::span<const RegisterValue>, ProcessImage &)>

Function signature used for syscall handlers.

Definition at line 25 of file syscall_table.h.

Constructor & Destructor Documentation

◆ SyscallTable() [1/3]

contur::SyscallTable::SyscallTable ( )

Constructs empty syscall handler table.

Referenced by operator=(), operator=(), SyscallTable(), and SyscallTable().

◆ ~SyscallTable()

contur::SyscallTable::~SyscallTable ( )

Destroys syscall handler table.

◆ SyscallTable() [2/3]

contur::SyscallTable::SyscallTable ( const SyscallTable & )
delete

Copy construction is disabled.

References SyscallTable().

◆ SyscallTable() [3/3]

contur::SyscallTable::SyscallTable ( SyscallTable && )
noexcept

Move-constructs syscall handler table state.

References SyscallTable().

Member Function Documentation

◆ dispatch()

Result< RegisterValue > contur::SyscallTable::dispatch ( SyscallId id,
std::span< const RegisterValue > args,
ProcessImage & caller ) const
nodiscard

Dispatches syscall to registered handler.

Returns
Handler result or NotFound when no handler is registered.

References dispatch().

Referenced by dispatch().

◆ handlerCount()

std::size_t contur::SyscallTable::handlerCount ( ) const
nodiscardnoexcept

Number of registered handlers.

References handlerCount().

Referenced by handlerCount().

◆ hasHandler()

bool contur::SyscallTable::hasHandler ( SyscallId id) const
nodiscardnoexcept

Returns true when id has a registered handler.

References hasHandler().

Referenced by hasHandler().

◆ operator=() [1/2]

SyscallTable & contur::SyscallTable::operator= ( const SyscallTable & )
delete

Copy assignment is disabled.

References SyscallTable().

◆ operator=() [2/2]

SyscallTable & contur::SyscallTable::operator= ( SyscallTable && )
noexcept

Move-assigns syscall handler table state.

References SyscallTable().

◆ registerHandler() [1/2]

Result< void > contur::SyscallTable::registerHandler ( SyscallId id,
HandlerFn handler )
nodiscard

Registers/replaces a function handler for syscall id.

Returns
Ok on success, InvalidArgument for empty function.

References registerHandler().

Referenced by registerHandler(), and registerHandler().

◆ registerHandler() [2/2]

Result< void > contur::SyscallTable::registerHandler ( SyscallId id,
ISyscallHandler & handler )
nodiscard

Registers/replaces an interface-based handler for syscall id.

The table stores a lightweight wrapper that forwards to handler.

References registerHandler().

◆ unregisterHandler()

Result< void > contur::SyscallTable::unregisterHandler ( SyscallId id)
nodiscard

Unregisters a handler for syscall id.

Returns
Ok on success or NotFound.

References unregisterHandler().

Referenced by unregisterHandler().

Member Data Documentation

◆ impl_

std::unique_ptr<Impl> contur::SyscallTable::impl_
private

Definition at line 70 of file syscall_table.h.


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